0

私の質問は複雑です:

しきい値処理された画像があります。ピクセルを通過するよりも:

for (i=0; i<image.rows; ++i)
    {
        pixel = image.ptr<uchar>(i);
        for (j=0; j<image.cols; ++j)
        {
            int p = pixel[j];

そして、次のシーケンスなど、列に並びます

0 0 0 0 0 0 0 0 0 0 255 255 255 255 255 255 0 0 0 0 0 0 0 0 255 255 255 255 0 0 0 255 255 255 255;

現在の値if (p == pixel[j++])と同じ各値の数量をカウントする必要があり、次の外観を取得します。

               13 6 10 4 3 4

どこ:

13 = ピクセル値変更前の数量 0

6 = ピクセル値変更前の 255 値の数量

10 = ピクセル値変更前の次の 0 の量

4 = ピクセル値変更前の 255 値の数量

3 = ピクセル値変更前の次の 0 の量

4 = ピクセル値変更前の 255 値の数量

等....

私は次のアルゴリズムを使用することを考えています: チェックは、現在の値と同じラインの次のピクセル値です。「はい」の場合 - この値を次の値と合計し、「いいえ」の場合 = ゼロにリセットして、次の値が変更される前に再度合計します。

次のようなことをしようとしました:int x = x + pixel[j++];が、結果に問題があります - 助けが必要です!

テンプレートシーケンスをインラインで見つける必要があるよりも:

13 6 10 4 3 4

次の現在の値をマイナスしたい: 13-6, 6-10, 10-4, 4-3, 3-4 正または負の値で結果を取得します。たとえば、「TRUE」の場合は「1」を割​​り当て、「FALSE」の場合は「2」を割り当て、次のように数値を取得します

1 2 1 1 2(私のサンプルの結果行)

これは、私が思うに、どの画像次元でも一定のシーケンスです。

ここで、シーケンス テンプレートの 1 つがこの行にあるかどうかを確認する必要があります。

たとえば、いくつかのユニークなテンプレートがあります。

1 2 2,  2 2 1, 1 1 1, 2 1 1

そして、結果行でどのテンプレートを満たすかを見つける必要があります...それは2 1 1テンプレートです。一致する場合-作成されたテンプレートの変数をリストに書き込みます(写真の上から下までので一致するいくつかのテンプレートのテーブルを取得する必要があります)。一致しない場合=次の行に移動します。

あなたのアドバイスを求めますか?質問を最後まで読んでくれてありがとう。

4

1 に答える 1