読者です 読者をやめる 読者になる 読者になる

『4』を検出できる範囲を試した

opencv captcha

いま予定している学習の1/2が終わったところで、検出率がかなり上がってきたので、どんな画像が苦手なのか試してみた。
アルゴリズムをみれーと言われそうだけど。(ソースは少しずつ見て、ちょっといじったりしています……)
f:id:ultraist:20071118040544j:image:leftf:id:ultraist:20071118040543j:image:leftf:id:ultraist:20071118040542j:image:leftf:id:ultraist:20071118040541j:image

ノーマル(色ランダム)
真ん中左
ノーマルにさまざまなフィルタをかけた
真ん中右
ノーマルにウェーブ(小)とノイズをかけた
ノーマルにウェーブ(大)とノイズをかけた

気づいたこと

  1. 『ぼかし』で誤検出
  2. 色反転や輪郭線が検出できない
  3. 強いウェーブが微妙に検出できない(学習が完全終わったらできるかも?)

どうする?

  1. シャープネス?(でも別の誤検出が発生する)
  2. 色反転して2回走査、塗りつぶし?
  3. 歪み補正?

日記

この出来なら文字のCAPTCHA読めそう?
明日か明後日に学習が完了したらまた試す。


あと、検出された範囲の赤い四角が見難かったので、丸に変えた。
performance.cppの280行あたり

cvRectangle( img, cvPoint( r.rect.x, r.rect.y ),
    cvPoint( r.rect.x + r.rect.width, r.rect.y + r.rect.height ),
    CV_RGB( 255, 0, 0 ), 3 );

cvCircle(
    img,
    cvPoint(r.rect.x + r.rect.width * 0.5, r.rect.y + r.rect.height * 0.5),
    cvRound((r.rect.width + r.rect.height) * 0.25),
    CV_RGB(0xff, 0x33, 0x33), 2, 8, 0
);

こうした。