About

Posts by :

[J-6] ハフ変換による直線・円の検出

直線・円の検出には、昔からハフ(Hough)変換があります。 (1)直線の検出 ある直線上の点(x,y)の極座標形式はr=xcosθ+ysinθ で表されます。そこで図形上のすべての点(x,y)に対して、θを0からπまで変化させて、(r,θ)の組の頻度が多い(r,θ)で表される直線を検出します。 逆変換はy= -(cosθ/sinθ)・x + r/sinθ、x=-(sinθ/cosθ)・y + r/cosθとなります。 (2)円の検出 ある円上の点(x,y)はその中心(cx,cy)、半径rを用いて(x-cx)^2+(y-cy)^2=r^2 (^2は2乗の意味)で表されます。そこで図形上のすべての点(x,y)に対して、cxとcyを、検出するる図形の領域で変化させて、(cx,cy,r)の組の頻度が多い(cx,cy,r)の円を検出します。 Hough変換による画像からの直線や円の検出:CodeZineの記事を「processing言語」で移植させていただき、実行しました。 Processingソースプログラムのダウンロードはここをクリックしてください
Hough変換

Hough変換による直線・円の検出

[J-5] マージャン牌の認識(3)

前回の投稿で、手動で行っていた部分を、自動で行うようにしました。さらにカメラからも画像を入力できるようにしました。またマージャン牌の認識を、サイコロの数字の認識に応用しました。 Javaソースプログラムのダウンロードはここをクリックしてください 六筒の認識
七筒の認識
七筒の認識
四索の認識
四索の認識
九索の認識
九索の認識
八索の認識
八索の認識
サイコロの数字の認識(カメラより)
サイコロの数字の認識(カメラより)

[J-4] マージャン牌の認識(2)

前回の投稿で使った認識方法は単純であまりうまく行かなかったので、筒子(ピンズ)と索子(ソウズ)について、円と長方形に分解して、詳しく分析する方法を研究しました。画像を2値化して取り出したとき、円や長方形がひっついてしまう現象が起こります。これを手動で横2つ割、縦2つ割、横3つ割、斜め3つ割、4つ割、5つ割、8つ割などに分割します。その後、膨張・伸縮を繰り返し、図形の隙間をなくしてから、輪郭を取り出し、基本図形の認識を行います。 Javaソースプログラムのダウンロードはここをクリックしてください
そのまま認識できた例

そのまま認識できた例

縦2つ割の例

縦2つ割の例

横2つ割、4つ割の例

横2つ割、4つ割の例