画像処理ソリューション
これを見れば画像処理の入門から基礎~応用まで全てがわかるのを目指して!
   
翻訳(Translate)

プロフィール

Akira

ニックネーム:Akira
東京都の町田事業所に勤務
画像処理ソフトの開発を行っています。リンクフリーです!
詳細プロフィールは こちら
お問い合わせは、こちら↓

【補助HP】
画像処理ソリューションWeb版 【Newブログ】
イメージングソリューション

スポンサーリンク


カテゴリ

最近のコメント

カレンダー

09 | 2017/10 | 11
S M T W T F S
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 - - - -

趣味のブログ

iPhone萬歳!
iPhoneの情報いろいろ。
ブログ学習帳
ブログ、SEO、アフィリエイト情報など(まだまだこれから)
俺流クラフト日記
ハンドメイド作品の記録(現在、放置中)

スポンサーリンク 最近の記事
(09/18)  計測測定展に光切断のデモを出展しました
(08/17)  ディジタル画像技術事典200に記事が載りました
(06/09)  光切断を画像センシング展で公開
(05/14)  中国(上海)へ行って来ました
(04/12)  韓国へ行って来ました
(03/10)  私の求める新人像
(01/18)  エレクトロテストジャパンにカラー光切断法のデモを出展しました。
(12/23)  ユニークアクセス200万達成!
(12/10)  【カラー光切断法】YouTube動画まとめ
(11/04)  国際画像機器展2014にカラー光切断法を出展します。
(10/05)  第25回コンピュータビジョン勉強会@関東に参加してきました。
(09/08)  フーリエ変換の記事を追加しました。
(08/09)  【画像処理】ランキング低下中
(07/06)  記事の更新が停滞中...
(06/08)  画像センシング展2014でカラー光切断法のデモを行います。
(05/17)  カラー光切断法の動画を公開しました。
(04/30)  ソニーα NEX-5Rで星空撮影
(04/10)  カラー光切断法の取込結果を追加しました
(03/08)  Korea Vision Show 2014へ行ってきました
(02/05)  フーリエ変換シリーズを始めます。
(01/06)  2014年、あけましておめでとうございます。
(12/04)  カラー光切断法を公開(国際画像機器展2013にて)
(11/13)  国際画像機器展2013に出展します
(10/14)  「画像処理のためのC#」はじめます。
(09/16)  【C#,VB.NET】高速描画コントロールをバージョンアップしました。
(09/04)  拡大鏡に輝度値表示、ルーラー機能を追加した個人ツールを公開
(08/05)  7月の拍手Top5
(07/06)  2013年6月人気記事Top5
(05/12)  SONY α NEX-5Rレビュー
(04/24)  SONY α NEX-5RY購入

輪郭追跡処理アルゴリズム

メインページ画像処理

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

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

まず、左上からラスタスキャンを行い、白の部分を見つけます。

輪郭追跡処理アルゴリズム

最初の白の部分(上図の赤丸の部分)をスタート地点として、反時計回りに輪郭の部分を検出します。
最初の白の部分は左上からラスタスキャンしたため、スタート地点の右上、上、左上、左には白の部分が無い事が確定しているので、最初に左下の部分から反時計回りに白の部分を検索し、白の部分が見つかったら次の輪郭へ検索を続けます。
最後にスタート地点に戻ったら処理は終了です。

この時、輪郭の向きを下図のように定義しておくと、

輪郭追跡処理アルゴリズム

最初の図の輪郭は

 0→0→1→0→2→3→4→3→2→5→5→6→4→0→6→5

の順で変化しています。(この番号はチェインコードといいます。)
ここにちょっとした規則があります。
例えば、の次にの次に、・・・などは絶対に来ません。(なぜかは、ちょっと考えると分かります。)
一般的に表現すると、
  一つ前の輪郭の向きから時計回りに3つ分の向きには輪郭が存在しない。
という事になります。
この性質を利用して、輪郭を検索するときは、
  一つ前の輪郭の向きの値をVold
  輪郭の検索を開始する向きの値を Vnew
とすると、
  Vnew = (Vold + 6) % 8;  (%は8で割った時の余りの計算)
となるVnew の向きから輪郭を検索すれば効率的に輪郭を検索することが可能となります。

また、輪郭の周囲長を求める時、縦、横方向の輪郭は長さ、斜め方向の輪郭は√2 として
長さを足していくと、周囲長が求まります。

そして、ここからがあまり書かれていない注意点!
スタート地点の白の画素のパターンが以下のパターンとなる場合、スタート地点を2回通る事になるので、ご注意下さい。

輪郭追跡処理アルゴリズム
 
※グレーの部分は白でも黒でもよい部分
 
 

Loading...
スポンサーリンク

この記事に対するコメント

方向が0,2,4,6の時に、それぞれ71,13,35,57方向が黒である場合に飛ばないという処理にすることで解決させました。
お手数をかけて申し訳ありません。
【2012/11/01 02:39】 URL | 硝酸銀 #ybA3Z/Dk [ 編集]

Re: 輪郭経路選択について
硝酸銀さん、コメント頂きありがとうございます。

期待されている輪郭追跡ですが、ラベリング処理で一般的に言われる4連結風でありながら斜め成分の連結を見ているので、ちょっと難しいかも?しれません。

4連結の場合の
(3,1)→(3,2)→(4,2)→(4,3)→(4,4)→(3,4)→(2,4)→(2,3)→(2,4)→(1,4)→(2,4)→(2,5)→(3,5)→(4,5)→(4,4)→(5,4)→(5,3)→(4,3)→(4,2)→(3,2)→(3,1)

と言うのは出来そうな気がしますが、(3,2)から(2,3)でなく(4,2)でもなく、(4,2)へ経路をたどるのは、いまいち規則性が見いだせなく...

もしかすると、基本的に4連結で輪郭を追跡して、条件付けをして、斜め成分も許容すればできるかも?しれませんが、様々なパターンがありそうなので、ちょっと自信がありません...
【2012/10/29 21:19】 URL | Akira #- [ 編集]

輪郭経路選択について
こんばんは。ここの記事をよく利用させていただいています。画像解析を始めたての私でも分かりやすいので助かります。

この輪郭追跡システムについて、質問があるのですが
対象となる図形が以下のような時、この方法では目当ての輪郭経路を抽出できないと思われます。どのようにしてそれを実装させればよいでしょうか?
 12345
1黒黒白黒黒
2黒黒白白黒
3黒白黒白白
4白白白白白
5黒白白白黒
(レイアウトが崩れているようでしたら等幅フォントのテキスト等でご覧いただきたい。)

ここに書かれている方法で輪郭をとると
(3,1)→(3,2)→(2,3)→(1,4)→(2,5)→(3,5)→(4,5)→(5,4)→(5,3)→(4,2)→(3,1)
となりますが、

(3,1)→(3,2)→「(4,3)→(3,4)→」(2,3)→(1,4)→(2,5)→(3,5)→(4,5)→(5,4)→(5,3)→(4,2)→(3,1)
の経路で輪郭をとってほしいと考えています。

場当たり的な対処で問題なければそれを適用すれば良いのですが、、、
【2012/10/29 19:27】 URL | 硝酸銀 #knCAIW0o [ 編集]


この記事に対するコメントの投稿














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


この記事に対するトラックバック
トラックバックURL
→http://imagingsolution.blog107.fc2.com/tb.php/198-34296ee7
この記事にトラックバックする(FC2ブログユーザー)

現在の閲覧者数: / 合計