問題タブ [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.

0 投票する
2 に答える
991 参照

ruby - Ruby ランレングス エンコーディングの失敗

私は codewars でトレーニングを始めた初心者ですが、この RLE 問題のどこに間違いがあるのか​​ わかりません。手順は次のとおりです。

あなたの仕事は、そのようなランレングスのエンコーディングを書くことです。与えられた文字列に対して、ペア (または配列) [ (i1, s1), (i2, s2), …, (in, sn) ] のリスト (または配列) を返します。文字 sx を ix 回使用し、それらすべての文字列を連結します。ランレングス エンコーディングは最小限にする必要があります。すべての i について、値 si と si+1 は異なる必要があります。

そして、ここに私のコードがあります:

次のエラーが表示されます。

ランレングス エンコーディング (RLE) は、非常に単純な形式のデータ圧縮であり、ラン データ (つまり、同じデータ値が多くの連続するデータ要素で発生するシーケンス) が単一のデータ値として格納され、カウントされるのではなく、オリジナルランとして。ウィキペディア

0 投票する
3 に答える
606 参照

algorithm - ランレングス符号化されたデジタル形状の輪郭

デジタル形状は、バイナリ イメージ (ブロブ) 内の一連の接続されたピクセルです。

これは、ランレングス コーディングによってコンパクトに表すことができます。つまり、ピクセルを水平線分にグループ化し、始点の座標と長さを格納します。通常、RLC 表現はランをラスター順に格納します。つまり、行ごとに右に並べます。

滑らかな形状の場合、ストレージ要件は O(N²) から O(N) に低下します。

形状の輪郭は、(塗りつぶしアルゴリズムによって) 内部が塗りつぶされたときに形状を復元する、ピクセルの閉じたチェーンです。これは O(N) 表現でもあります。形状がビットマップとして利用できる場合、アウトラインは輪郭アルゴリズムによって取得できます。

中間ビットマップに描画せずに、RLC 表現を指定して形状の輪郭を直接計算するアルゴリズムを探しています。アルゴリズムは、実行回数に比例して時間内に実行されることが期待されます。

ここに画像の説明を入力

あなたは解決策に出くわしましたか?

0 投票する
2 に答える
1201 参照

python - ランレングスエンコード機能(ライブラリやオブジェクトメソッドなし)

ランレングス エンコーディングを使用してリストを圧縮するプログラムを作成する必要があります。私はそれを行う方法がわかりません。プログラムを少しずつ変更した後、今何をしているのかさえわかりません。

ライブラリをインポートしたり、Python 文字列やリスト オブジェクト メソッド ( などappend()) を使用したりすることはできません。

これは私が今いるところです:

このリストを例として使用します。

これは次のように返されます:

これは明らかに外れています。

0 投票する
1 に答える
247 参照

java - ランレングス エンコーディング プログラムでは、数字が文字の前に来ます

単語を短縮するために使用されるランレングス エンコーディングのプログラムを作成しています。つまり、aaabbc は 3a2bc になります。

私のプログラムはこれまでのところ動作しますが、3a2bc を出力する代わりに a3b2c を出力します。では、現在のプログラムを切り替えるにはどうすればよいでしょうか?

コード:

0 投票する
1 に答える
1318 参照

c++ - OCR & OpenCV: 高解像度画像の 2 つのフレームの違い

この投稿OCR: Difference between two framesによると、OpenCV を使用して 2 つの画像のピクセルの違いを見つける方法がわかりました。

このソリューションを改善し、リッチ コンテンツを含む (ビデオからの) 高解像度画像で使用したいと考えています。上記の例は、プロセスが遅いため、大きな画像には適用できません (あまりにも多くの違いが見つかりました。「findCountours メソッド」は、処理に膨大な時間がかかる 250k の要素でタブを埋めます)。

私のアプリケーションは、RLE デコーダーを使用してビデオの圧縮フレームをデコードします。フレームがデコードされたら、現在のフレームと前のフレームを比較して、たとえば「マット」タブに2つのフレームの違いを保存したいと思います。

このすべての目的は、さまざまなピクセルで分析を実行し、ラテン文字があるかどうかを確認できるようにすることです。これにより、分析するピクセルの量を減らし、貴重な時間を節約できます。

このような操作を実行するためのこれ以外のアイデアがある場合は、お気軽に提案してください。

ご協力ありがとうございました。

編集 1: コンピューター画面の 2 つの高解像度画像の例。これらは今のところ、私が分析しようとしているものの完璧な例です。ご覧のとおり、2 つの大きな画像の違いとしてウィンドウが 1 つだけあります。任意のキャラクターの新しい「チャレンジ」ウィンドウだけを分析したいと思います。

最初の画像

2 番目の画像

編集 2: 分析されたデータに応じてアルゴリズムを調整しようとしています。通常、次の 2 つの写真では、緑色の線だけが違いとして表示され、テキストはまったく表示されません (これが最も興味深い点です)。このために物事がどのように機能するかをよりよく理解しようとしています。

1枚目の画像

TestImg1

2枚目の画像

TestImg2

3枚目の画像結果画像

ご覧のとおり、緑色の線だけがあり、テキストはありません (countours[i].size() を減らすときは、せいぜい 1 文字だけにすることができます)。

0 投票する
3 に答える
843 参照

arrays - MATLAB で特定の値によって配列内の要素の一部をインクリメントする方法

配列があるとします

重複の可能性があるいくつかのインデックスがあります。

インデックス シーケンスA(i)の の数を増やすにはどうすればよいでしょうか。iA(1) = 2, A(2) = 1, A(3) = 1, A(4) = 3

コードA(indSeq) = A(indSeq)+1が機能しません。

次の for ループを使用して目標を達成できることはわかっていますが、for ループを回避できる方法はあるのでしょうか? indSeqがソートされていると仮定できます。

for ループ ソリューション: