問題タブ [run-length-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
algorithm - O(1) スペースを使用したランレングス エンコーディング
その場でランレングス エンコーディングを実行できますか (入力配列が非常に大きいと仮定します) AAAABBBBCCCCDDDD A4B4C4D4 などの場合に実行できます
しかし、ABCDEFG のような場合はどうすればよいのでしょうか? 出力は A1B1C1D1E1F1G1 になります
computer-science - ランレングスエンコーディングのC#LinkedListとリスト?
これらのうち、バイトの RLE に適しているのはどれですか? リストにデータをかなり迅速に挿入できる必要がありますが、圧縮されていないバイト 3987 の場所をすばやく見つける必要もあります (これはおそらくより重要です。最善の方法は、すべての3987 未満の最も近いものを取得するまでカウントしますか?)。
python - Haskell に頼らずに、RLE パターンからコードの重複を取り除きますか?
私の仕事では、RLE (ランレングス エンコーディング) パターンがよく出てくるようです。
その本質は、「ブレーク」が表示されるか、入力の最後に到達するたびに、最後の「ブレーク」以降に発生した要素の削減を出力していることです。
(実際の RLE では、「ブレーク」はこの文字が最後の文字と一致しないことですが、現実の世界では通常もう少し複雑ですが、それでも現在の要素と最後の要素の関数です。)
last_val != None: rle.append((last_val, count))
ループと終了の両方で発生する重複した条件とアクションを削除したい。
問題は次のとおりです。
- それらを関数呼び出しに置き換えると、コードが少なくなるのではなく、多くなります。
- 命令型のスタイルに保つ (たとえば、Haskell では、問題は蒸発するだけです)。
必須の Python コードは次のとおりです。
PS関数型言語で自明に解決可能:
java - Javaランレングスエンコーディング
課題を開始する方法がわかりません。
ランレングス エンコーディング プログラムを作成する必要があり、
たとえば、ユーザーは次の文字列を入力します。
aaaaPPPrrrrr
に置き換えられます
4a3P5r
誰かが私がそれを始めるのを手伝ってくれますか?
java - ランレングス エンコーディング リンク リスト インプレース (Java)
私のLinkedListは単独でリンクされています(各ノードにはカウント+次の参照があります)。
LinkedList を受け取り、新しいノードを作成せずにランレングスでエンコードされたバージョンのリストを返す runlengthencode メソッドを作成する必要があります。たまたま Java にあります。
私が抱えている問題は、新しいリストに表示される実行の開始を表すノードを追跡することです。以下の外側のwhile ループのどこに rle ノードを追加すればよい ですか?
現在、CurrRun と CurrRun と呼ばれるリファレンスと CurrRun から移動するランナーがありますが、CurrRun と CurrRun.next の値は同じです。
注意: このコードは、見苦しい Java 構文を可能な限り取り除いています。
どんなポインタでも大歓迎です。
MOAN: アメリカン ビッグ スクールでは、これを教えてくれるはずですが、私たちは自分のやり方に任されています。
matlab - Matlab でのランレングス エンコーディング
私は MatLab に非常に慣れていません。Run Length Encoding コードを持っていますが、うまくいかないようです。助けてもらえますか?
私はこの入力を持っています:
そして、それをRLE出力にしたい:
これは私のコードです:
しかし、これは機能していません。出力をそのように印刷するにはどうすればよいか、まだ混乱しています。
あなたが私を助けてくれることを願っています。ありがとうございました。
python - Python 圧縮実行長エンコーディング
ランレングスエンコーディングについて学習しようとしていますが、オンラインでこの課題を見つけましたが、それはできません。長さ 64 のバイナリ文字列 strg を入力として受け取り、別のバイナリ文字列を出力として返す、compression(strg) という圧縮関数を作成する必要があります。出力バイナリ文字列は、入力文字列のランレングス エンコーディングである必要があります。
圧縮('1010101001010101101010100101010110101010010101011010101001010101')
「1010101001010101*4」
ここに私が持っているものがありますが、これはパターンを見つけません:
これを解決する助けが必要です。
java - Java バイトと C++ バイト
Javabyte
の範囲は -128 から 127 ですが、C++BYTE
はunsigned char
(0 から 255)です。
C++ 関数を Java に変換したいのですが、C++ にはLPBYTE
(配列へのポインター) があります。C++ 関数ではなく配列BYTE
を使用しようとしましたが、Java 関数はまだ正しく動作しません。byte
LPBYTE
私の C++ 関数は BMP ファイルで動作し、そのアルゴリズムはカスタマイズされたランレングス エンコーディングです。それをJavaに変換する際に、を使用し、BufferedImage
そのコンテンツを として取得していbyte[]
ます。タイプの不一致が原因で、Java 関数が正しく機能していないと推測しています。
Java ではどの型を使用する必要がありますか?
encoding - Move to Front Transform と BWT の後に Run-Length Transform を適用するのは効率的ですか?
私はエンコーディングが初めてなので、基本を理解しようとしています。可逆テキスト圧縮技術について説明している文書を見つけました。この文書には、圧縮がどのように機能するかを示す図がありました。次のように機能します。
Move to Front Transform の後に Run-Length Transform を使用する理由がわかりません。効率的ではないようです。私が理解しているように、MTF自体は多くの実行を生成しないため、RLTのあとがきを使用するのは役に立ちません.
いくつかの説明をいただければ幸いです。
c++ - DCT ベースのビデオ エンコーディング プロセス
私はあなたが明確にすることができることを望んでいるいくつかの問題を抱えています. 私は、Mpeg2 に似たビデオ エンコーディング プロセスを独学で学びました。プロセスは次のとおりです。
RGBA イメージを 4 つの個別のチャネル データ メモリ ブロックに分割します。したがって、すべての R 値の配列、G 値の個別の配列などです。
配列を取得して 8x8 ピクセル データのブロックを取得し、離散コサイン変換 (DCT) を使用して変換します。
事前に計算された量子化行列を使用して、この 8x8 ブロックを量子化します。
量子化ステップの出力をジグザグ符号化します。だから私は連続した数の証跡を取得する必要があります。
ジグザグ アルゴリズムからの出力をランレングス エンコード (RLE) します。
RLE ステージの後のデータをハフマン符号化します。事前に計算されたハフマン テーブルからの値の置換を使用します。
ステップ 2 に戻り、すべてのチャネル データがエンコードされるまで繰り返します。
ステップ 2 に戻り、チャンネルごとに繰り返します。
最初の質問は、プロセスが機能するために RGBA 値を YUV+A (YCbCr+A) 値に変換する必要があるか、それとも RGBA を使用し続けることができるかということです。RGBA->YUVA 変換は負荷が高く、できれば避けたいのでお願いします。
次の問題。RLE ストアを 0 だけで実行する必要があるのか、それとも配列内のすべての値に拡張できるのか疑問に思っています。以下の例を参照してください。
最後の質問は、ハフマン段階に関して単一のシンボルは何でしょうか? 置き換えられるシンボルは 2 や 4 のような値になるか、シンボルはたとえばランレベル ペア [2,4] になります。
ここで読んで助けてくれてありがとう。私は多くの論文を読み、多くの YouTube ビデオを見てきましたが、個々のアルゴリズムを理解するのに役立ちましたが、それらがすべてリンクしてコード内のエンコード プロセスを形成する方法については理解できませんでした。