ページ 1 / 1
C# テンプレートマッチングについて
Posted: 2011年1月25日(火) 06:41
by DUO
こんにちは。
C#でテンプレートマッチングを作成しているんですがうまくいきません。
9x9の格子状の表の中に1~9の数字がランダムに入っています。
□□□ 421
□□□ 中身→ 376
□□□ 958
表は315x315のサイズで2値化処理済みのbmpです。
テンプレートは64x64のサイズで1,2,3~9とそれぞれ2値化しbmpであります。
マッチングを行う下記の部分でうまくいってないせいかマッチングできません。。
表の高さ、幅をHEIGHT,WIDTH、
テンプレートの高さ、幅をTHEGHT,TWIDTH、にしてあります。
それぞれに高さと幅の数値は入力済みです。
このコードの前にテンプレートのピクセルをa[i,j]に、
表のピクセルをb[i,j]に入力してあります。
説明が下手ですがご指導よろしくお願いします。
また、わからない情報が多いと思いますので質問してください。
Q1.真ん中処理部分
Q2.該当箇所の赤枠表示
コード:
for(j=0;j<HEIGHT-THEIGHT;j++)
for(i=0;i<WIDTH-TWIDTH;i++){
//マッチング検出
match_number=0;
for(n=0;n<THEIGHT;n++)
for(m=0;m<TWIDTH;m++){
//処理部分
if(a[i,j]==b[i,j])//←ここがうまくいってないとおもわれる・・・
//処理部分
}
//一致したピクセルが770個以上
if(match_number>770)
//ここで一致した部分に赤枠で囲う処理をしたい。
}
よろしくお願いします。
Re: C# テンプレートマッチングについて
Posted: 2011年1月25日(火) 08:00
by h2so5
if(a[i,j]==b[i,j])
この部分だけでは分かりません。
ソースをもっと具体的に書いてください。
DUO さんが書きました:
9x9の格子状の表の中に1~9の数字がランダムに入っています。
□□□ 421
□□□ 中身→ 376
□□□ 958
表は315x315のサイズで2値化処理済みのbmpです。
表が二つあるということでしょうか?
b[i,j]に入っているのはどちらの表ですか?
Re: C# テンプレートマッチングについて
Posted: 2011年1月25日(火) 11:23
by DUO
h2so5 さんが書きました:if(a[i,j]==b[i,j])
この部分だけでは分かりません。
ソースをもっと具体的に書いてください。
DUO さんが書きました:
9x9の格子状の表の中に1~9の数字がランダムに入っています。
□□□ 421
□□□ 中身→ 376
□□□ 958
表は315x315のサイズで2値化処理済みのbmpです。
表が二つあるということでしょうか?
b[i,j]に入っているのはどちらの表ですか?
表は1つで中身が
421
376
958
となっています。
a[i,j]にはテンプレートのピクセル値が、b[i,j]には表のピクセル値が入っています。
上記コードの前に
コード:
for (int j = 0; j < HEGHT; j++)
for (int i = 0; i < WIDTH; i++)
{
RGB = (iRed + iGreen + iBlue) / 3;
if (RGB < 128)
{
a[i, j] = 0;
}
else
{
a[i, j] = 1;}
}
というコードがテンプレートおよび表(表の場合a[i,j]がb[i,j]になる)にも存在し、
しきい値の128以下なら黒、128以上なら白という判断をここでさせています。
そして最初の文中にある
コード:
for(j=0;j<HEIGHT-THEIGHT;j++)
for(i=0;i<WIDTH-TWIDTH;i++){
//マッチング検出
match_number=0;
for(n=0;n<THEIGHT;n++)
for(m=0;m<TWIDTH;m++){
//処理部分
if(a[i,j]==b[i,j])//←ここがうまくいってないとおもわれる・・・
//処理部分
}
//一致したピクセルが770個以上
if(match_number>770)
//ここで一致した部分に赤枠で囲う処理をしたい。
}
で比較しようとしているところです。
Re: C# テンプレートマッチングについて
Posted: 2011年1月25日(火) 18:13
by h2so5
表の中身は
421
376
958
という並びの「画像」という意味でしょうか?
だとすると「9x9の格子状の表」が何なのか分からないのですが。
そしてなぜ if(a[i,j]==b[i,j]) の部分で上手くいっていないと考えているのか
教えてください。
もう一度書きますが、これだけのコードでは判断できません。
できるだけもっと詳しいコードを載せてください。