GSL Shell/OpenCV 学習:輪郭(エッジ)検出

2017-07-24 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-07-22)の記事「GSL Shell/OpenCV 学習:cvFitEllipse2 は正常
では、“cvFitEllipse2”の正常動作を確認できた。

すると、
“cvFindContours”が問題と云うことだが、
どう足掻いても分からない。

そこで、代替手段が無いか探してみた。

エッジ検出(Sobel,Laplacian,Canny)」はどうか?

(1) 画像を準備して、
(2) Sobelオペレータを用いて,1次微分画像を求め、
(3) 画像のラプラシアン(2次微分)を求め、
(4) Cannyアルゴリズムを用いて,エッジを検出。

と云うこと。


このページにある、C言語コードを頂いた。


出来上がったコード:
---- GSL Shell コード
cv2 = require'cv2'
ffi.cdef[[
/****************************/
/* 不足分の関数宣言を記述 */
/****************************/
]]
-- (1) 二値化された画像入力 & 各種画像領域確保:
src_img = cv2.cvLoadImageM( 'sample.tif', 0 )
xx, yy = src_img.xx, src_img.yy
tmp_img = cv2.cvCreateMat( yy, xx, 5 ) ------ CV_32FC1
sobel_img = cv2.cvCreateMat( yy, xx, 0 ) ------ CV_8UC1
laplaian_img = cv2.cvCreateMat( yy, xx, 0 )
canny_img = cv2.cvCreateMat( yy, xx, 0 )

-- (2) Sobelオペレータを用いて,1次微分画像を求め、
cv2.cvSobel ( src_img, tmp_img, 1, 1, 3 )
cv2.cvConvertScaleAbs( tmp_img, sobel_img, 1, 0 )

-- (3) 画像のラプラシアン(2次微分)を求め、
cv2.cvLaplace( src_img, tmp_img, 3 )
cv2.cvConvertScaleAbs( tmp_img, laplaian_img, 1, 0 )

-- (4) Cannyアルゴリズムを用いて,エッジを検出。
cv2.cvCanny( src_img, canny_img, 50.0, 200.0, 3 );

----- 確認用に、画像出力:
cv2.cvSaveImage( 'Canny_img.tif', canny_img, 0 )
これで、
輪郭画像が得られた。


だが、これではcvFindContoursの代替にはならない。

つまり、輪郭画素の位置データが得られない?

もっと、学習が必要だ。


本日はここまで。


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


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


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

コメントの投稿

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

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



おきてがみ

最新記事
カレンダー
09 | 2017/10 | 11
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
ブックマーク