OpenCV 学習:輪郭追跡処理

2017-07-26 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-07-24)の記事「GSL Shell/OpenCV 学習:輪郭(エッジ)検出」では、
  ・・・・・
  ・・・・・
  だが、これではcvFindContoursの代替にはならない。
  つまり、輪郭画素の位置データが得られない?
  ・・・・・
  ・・・・・
で終わっていた。


そこで、
輪郭座標取得処理に関して、Web検索した。

「画像処理ソリューション」サイトの“画像処理”に
輪郭追跡処理アルゴリズム」を見つけた。

  二値化された画像において、
  各連結部分の境界部分を求める事を輪郭追跡といいます。
  この輪郭追跡を行う事で周囲長や連結領域の幅や高さなどを
  求めることが出来ます。

  以下、この輪郭追跡の処理アルゴリズムを紹介します。
  ・・・・・
  ・・・・・

これを頂き、
Lua ( GSL Shell ) で、<紙>流コーディングを行った。

----- test_Search_Edge.gsl -----

-- BT : 二値化された画像(バイトデータ)

-- XT、YT : 輪郭点座標テーブル
XT, YT = matrix.new( 10000, 1 ), matrix.new( 10000, 1 )

function setP(x,y)
if x~=xs or y~=ys then
m=m+1; XT[m],YT[m]=x,y; xs,ys=x,y
end
end

-- 8方向座標差分 & 検出処理
VXY={ {-1,1}, {0,1}, {1,1}, {1,0}, {1,-1}, {0,-1}, {-1,-1}, {-1,0} }
function chkBT(V) v=V
while BT[(y+VXY[v+1][2])*xx+(x+VXY[v+1][1])]==0 do v=(v+1)%8 end
return v, x+VXY[v+1][1], y+VXY[v+1][2]
end

----- 取り敢えず1つの塊についての処理:
m = 0 -- 輪郭点の数

while true do
xs,ys=0,0 -- 1つ前の座標

----- 開始点(x0,y0)探索
y0=-1
for y=0,yy-1 do
for x=0,xx-1 do
if BT[y*xx+x]>0 then y0=y; x0=x; break end
end
if y0>-1 then break end
end
if y0<0 then break end -- {y0,x0}
print( x0, y0 ) -- 確認用
y,x=y0,x0; setP(x,y); Vold=-6; y1=y0
while true do
V,x,y = chkBT((Vold+6)%8)
if y>y1 then y1=y end
if x==x0 and y==y0 then break end
setP(x,y); Vold=V
end
end
------ これで、輪郭検出終了
print( m ) -- 確認用
--[[
  以降は、
  以前(2017-07-22)の記事「GSL Shell/OpenCV 学習:cvFitEllipse2 は正常
  のコードで、楕円フィッティング
]]
これでは?

輪郭点の数は、
“cvFindContours”で見つけるものより多い(?)が、
これで、代替は可能?


本日はここまで。


Lua ( GSL Shell ) / OpenCV 学習は続く。


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170622
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク