画像処理・実習 第八回: 2値化画像 (画像の2値化,膨張と収縮,2値化図形の表現,線図形化処理) 東海大学 情報理工学部情報メディア学科 濱本和彦 今回の内容 4. 2値化画像 4.1 2値化処理 自動しきい値処理 画素の連結(近傍と隣接,連結) 膨張と収縮 4.3 2値化図形の表現 可変しきい値処理 4.2 膨張と収縮 モード法 ランレングス表現 チェーンコード表現 4.4 線図形化処理 実習 細線化 2値化処理 自動しきい値決定法:モード法 頻度 抽出したい対象と背景との画素値の差が大きい場合に 有効 ヒストグラムが明確な谷を持つときに適用される 2000 人 背景 1000 0 0 100 200 階調数 谷を検索 2値化処理 モード法:実習 image_processing8.cとimgbinaryc.hを使 います(今週の資料を使ってください)。 void Mode(void)の動作を確認して下さい。 cameraman.raw,lena.rawについて,2値 化画像を求め,検討しなさい。 2値化処理 自動しきい値決定法:可変しきい値処理 抽出したい対象や背景の画素値が一定でなく, 特定のしきい値では2値化が難しい場合に適用 着目画素の近傍画素値の平均を求め,これをし きい値として,着目画素値が平均値より大きけれ ば1-画素,小さければ0-画素とする 微妙な濃淡変化に敏感に反応する事を避けるた め,近傍の分散も計算し,この分散が小さい時 は隣接画素と同じ領域であるとして,隣接画素の 2値化結果をそのまま利用する 2値化処理 可変しきい値処理:実習 void Dynamical_threshold(void)を確認して下さ い。 cameraman.raw,lena.rawについて,2値化画 像を求め,検討しなさい。 分散のしきい値を変化させて出力画像の変化を 検討しなさい。 2値化処理 可変しきい値処理:結果 検討 cameraman.rawについて,カメラマンだけ を抽出するための2値化としては,どの方 法が適当ですか?また,それはどうしてで すか? lena.rawについて,女性の輪郭を抽出す るための2値化法としては,どの方法が適 当ですか?また,それはどうしてですか? 膨張と縮小 画素の連結 8近傍 4近傍 着目画素 膨張と縮小 画素の連結 4近傍の位置にある =4隣接(8隣接) 8近傍の位置にある =8隣接 着目画素 膨張と縮小 画素の連結 4-連結 8-連結 膨張と収縮 膨張 1-画素と0-画素の境界において,1-画素を1層分厚くすること これにより0-画素による小さな溝や穴が取り除かれる 8近傍に1つでも1-画素があれば,その画素を1-画素とする 収縮 1-画素と0-画素の境界において,1-画素を1層分細くすること これにより,1-画素による孤立点や突起が取り除かれる 8近傍に1つでも0-画素があれば,その画素を0-画素とする 膨張→収縮 0-画素による小さな溝や穴が取り除かれ,元の太さの画像となる 収縮→膨張 1-画素による孤立点や突起が取り除かれ,元の太さの画像となる 膨張→収縮→収縮→膨張 溝や穴,孤立点や突起が取り除かれた元の大きさの画像が得られる 膨張と収縮:実習 imgbinaryc.hを使います。 膨張 void Expansion(void)を確認して下さい。 収縮 void Contraction(void)を確認して下さい。 cameraman.rawについて, まず可変しきい値処理を行い, 膨張→収縮処理をして下さい。 さらに続けて,収縮→膨張処理をして下さい。 lena.rawについても行ってみましょう。 膨張と収縮:結果 可変しきい値処理 膨張→収縮 黒画素による溝や 孤立点が消える 膨張→収縮 →収縮→膨張 白画素による 孤立点などが消える 2値化図形の表現 情報の伝送や保存のために,情報量を減 らしたい→情報圧縮 1[bit/pixel]→もっと情報量を減らすには? [1,0]の並びの表現を工夫する→符号化法 ランレングス表現(符号化) 同じ画素値が続くことが多い性質を利用 チェーンコード表現 線図形のための符号化法 2値化図形の表現 ランレングス符号化 ラン =連なり=ある事象の連続=白or黒画素の連続 レングス =長さ ランレングス =白or黒画素が連続してつながっている長さ 白or黒画素は連続して現れることが多い この性質を利用して情報量を削減する 2値化図形の表現 ランレングス符号化 → (0,8) → (0,2), (1,5), (0,1) 0画素が 8つ連続する → (0,5), (1,2), (0,1) → (0,5), (1,1), (0,2) → (0,2), (1,5), (0,1) → (0,1), (1,1), (0,4), (1,1), (0,1) → (0,1), (1,6), (0,1) → (0,8) 図4.8 情報量:1[bit/pixel] 2値化図形の表現 ランレングス符号化(演習4.1) (0,8) → (0,1), (1,5), (0,1) → 4ビット×3=12ビット (0,5), (1,2), (0,1) → 12ビット (0,5), (1,1), (0,2) → 12ビット (0,2), (1,5), (0,1) → 12ビット 2進表現(0, (0,1), (1,1), (0,4), (1,1), (0,1) → 20ビット (0,1), (1,6), (0,1) (0,8) 111) → 4ビット ラン数 22 総ビット数 88ビット 情報量 1.375[bits/pixel] → 12ビット → 4ビット ラン数が多いと圧縮できない ラン数が少ない=同じ色が続く 2値化図形の表現 ランレングス符号化:演習4.2 (0,10) (1,5) (0,6) (1,2) (0,6) (1,1) (0,4) (1,5) (0,2) (1,1) (0,4) (1,1) (0,2) (1,6) (0,9) ラン最大長64→6ビット +区切りビット 1ビット =7[ビット/ラン] 総情報量 7×15=105[bits] エントロピー 1.64[bits/pixel] 改良 2値化図形の表現 ランレングス符号化:演習4.2 (0,10) (1,5) (0,6) (1,2) (0,6) (1,1) (0,4) (1,5) (0,2) (1,1) (0,4) (1,1) (0,2) (1,6) (0,9) ランの長さ,色は自明 最初の色 0, 10, 5, 6, 2, 6, 1, 4, 5, 2, 1, 4, 1, 2, 6, 9 2進化 0 1010 101 110 10 110 1 100 101 10 1 100 1 10 110 1001 総情報量 39ビット エントロピー 0.609[bits/pixel] 情報量は少なくなるが, 区切りが分からない! ハフマン符号化 2値化図形の表現 チェーンコード表現 線図形の境界を効率的に符号化 出発点から順に,次の点が8近傍のどの方向に あるかを抽出し,その方向を保存 3 2 1 4 (i,j) 0 5 6 7 8方向符号 チェーンコード 0, 7, 0, 0, 0, 6, 6, 5, 5, 4, 3 どんな大きさの画像でも, 情報量は 3[bits/pixel] 参考:n×n画像の時 [次の点の(x,y)座標でつ ながりを表現する場合] →n2種類のパターン → 2a=n2 → a=2log2n[bits/pixel] 2値化図形の表現 チェーンコード表現:演習4.3 (x, y) 3, 1, 7, 0, 1, 7, 6, 5, 5, 4, 3, 4, 5 線図形化処理 細線化 2値化図形から,線幅1の中心線を抽出 文字認識やパターン認識の前処理として 利用 原画像 2値化画像 細線化 線図形化処理 細線化 歪み ひげ 切断 2値化画像 細線化 歪み 線図形化処理 細線化 細線化図形に求められる特徴 中心線の線幅は1 中心線が元の図形の中心であること 切断や孔がない(連結性の保存) 不必要な「ひげ」が生じないこと 中心線が縮まないこと 交差部において歪まないこと 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム 概要 左上からラスタ走査 注目点(x,y)が1-画素の時,その8近傍を調査 8近傍の1-画素の個数によって場合分けをする ある条件判断を行い,その注目点を0-画素にするか決定(0-反転) 0-反転処理後の画像データを別配列に保存 走査終了時,0-反転の回数が0ではない場合,0-反転画像を入力画 像として繰り返し 0-反転する→幅を細くする 0-反転後,4連結を維持している事=4連結細線化 0-反転の回数が0 →もうそれ以上細くする場所はない→細線化終了 線幅1の1-画素からなる線図形ができる 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 0 : 8近傍の1-画素の個数が0の場合 0 0 0 0 1 0 0 0 0 注目画素のみが1-画素で 周囲は0-画素 注目点は孤立点であり線 ではない 雑音と見なして0-反転する 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 1 : 8近傍の1-画素の個数が1の場合 注目画素は端点となる 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 線の一部? 0-反転すると線が縮む ひげ(雑音)? 0-反転して消す必要あり 処理回数が少ない=雑音とみなす 処理回数が多い=線とみなす 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 2 : 8近傍の1-画素の個数が2の場合 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 8近傍の1-画素のマスが3マス 離れている場合 1-画素は連結している 注目点を0-反転すると線が 途切れてしまう 0-反転しない 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 2 : 8近傍の1-画素の個数が2の場合 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 8近傍の1-画素のマスが2マス 離れている場合 1-画素は連結している 注目点を0-反転すると線が 途切れてしまう 0-反転しない 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 2 : 8近傍の1-画素の個数が2の場合 1 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 8近傍の1-画素のマスが1マス 離れている場合 1-画素は連結している 注目点を0-反転すると線が 途切れてしまう or 4-連結で なくなる 0-反転しない 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 2 : 8近傍の1-画素の個数が2の場合 1 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 8近傍の1-画素のマスが隣接 している場合 注目画素は端点となる case 1 の場合と同様の処理を 行う 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 3 : 8近傍の1-画素の個数が3の場合 1 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0-反転すると途切れてしまう 0-反転すると4-連結でなくなる case 2 の場合と同様,注目点が端点になり得る場合のみ0-反転できる (線幅2の端点または突起となるため,常に0-反転可能) ただし,case 3 以降は,既走査部がすでに0-反転されていると状況が変わる。。 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 3 : 8近傍の1-画素の個数が3の場合 0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 3つの1-画素が並んでいる場合のみ0-反転を行う 全部で8パターン 既に走査した部分の検討 は既に走査した部分 0 10 10 0 1 1 既に0-反転していた → 0-反転不可 (4連結でなくなる) 0 0 0 既に0-反転していた → それでも0-反転可 残り7パターンについても考えてみよう 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 4 : 8近傍の1-画素の個数が4の場合 2種類のパターンに分類できる <注目画素が直線の一部> <注目画素が端点> 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 0 0-反転すると,4-連結でなくなる, または途切れるため,反転不可 基本的に0-反転可だか,既走査部が 0-反転済みかどうかで状況が変わる 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 4 : 8近傍の1-画素の個数が4の場合 <注目画素が端点となる全パターン> 1 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 0 1 既に走査された部分について検討 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 4 : 8近傍の1-画素の個数が4の場合 1 1 1 0 1 1 0 0 0 が既に0-反転していたら 注目画素を0-反転すると4-連結でなくなる 0-反転は不可 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 4 : 8近傍の1-画素の個数が4の場合 1 1 1 0 1 1 0 0 0 が既に0-反転していたら 注目画素を0-反転すると途切れる 0-反転は不可 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 4 : 8近傍の1-画素の個数が4の場合 1 1 1 0 1 1 0 0 0 が既に0-反転していたら 注目画素を0-反転しても連結は保持される 他の7パターンについても 考えてみましょう! 0-反転は可能 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 5 : 8近傍の1-画素の個数が5の場合 2種類のパターンに分類できる <3つの0-画素が不連続> <3つの0-画素が連続> 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0-反転すると,4-連結でなくなる, または途切れるため,反転不可 基本的に0-反転可だか,既走査部が 0-反転済みかどうかで状況が変わる 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 5 : 8近傍の1-画素の個数が5の場合 <3つの0-画素が連続となる全パターン> 1 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 1 0 既に走査された部分について検討 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 5 : 8近傍の1-画素の個数が5の場合 1 0 0 1 1 0 1 1 1 が既に0-反転していたら 注目画素を0-反転しても連結は保持される 0-反転は可能 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 5 : 8近傍の1-画素の個数が5の場合 1 0 0 1 1 0 1 1 1 が既に0-反転していたら 注目画素を0-反転したら途切れてしまう 他の7パターンについても 考えてみましょう! 0-反転は不可 線図形化処理 3×3のマスクを用いた4-連結細線化アルゴリズム case 6以降は,0-反転すると孔になる可能 性が高いため処理対象から外しています。 近傍8画素のうち6画素以上が1-画素ということである から,着目画素(中心画素)は1-画素で囲まれている と言っても良く,このため,着目画素を0-画素とすると 孔になる可能性が高くなってしまう 細線化:実習 imgbinary2.hを利用してください。 image_processing8.cに#include文を追加してく ださい(最後に追加して下さい)。 細線化関数,void Thinning(void)を完成させてく ださい。 case 4とcase 5について,残りの3パターンを完成さ せてください。 細線化:実習 characters.rawを細線化しなさい。 Thinning()は,1-画素で描かれている図形,画像を細 線化します。characters.rawは,文字が0-画素になるの で,Inverse()を行い文字が1-画素となるようにして下さ い。 2値化した後でThinning()を実行することを忘れないよ うに。 2値化→Inverse()→Thinning()→Inverse()の順です。 case 1 と case 2 における処理回数の閾値を変更して 画像の変化をみましょう。 lena.rawについても行ってみましょう。 女性の輪郭線をうまく抽出するにはどうすればよいで しょう? 複数の処理を組みあわせることが大事です。 微分処理をしてエッジを出して2値化するとうまくいく? 細線化:実習結果 case 1,2の閾値が3の場合 ひげが目立つ case 1,2の閾値が7の場合 ひげは多少除去されたが, 「B」において線が縮小して しまっている。 課題 右の画像は乳腺悪性腫瘍 (癌)の超音波画像です。 (ファイル名: breastcancer2.raw) コンピュータで自動診断す る場合は,腫瘍部分のみ抽 出する必要があります。 これまでに学んだ空間フィ ルタ,2値化処理の手法を 応用して,腫瘍部分だけを 出来るだけ正確に抽出出来 る画像処理を考えて下さい。 レポートにまとめてi-collabo より提出 この,周囲より黒い領域が腫瘍になります 期限:6/25, 23:59 基本的な輪郭線抽出法 ノイズ除去 微分処理 2値化 腫瘍輪郭が周囲から切り離されていること(腫瘍内外 の領域にノイズが残っていても構いません)。これが最 重要採点基準です。 輪郭線が出来るだけ細いこと。 細線化処理を加えても良い 細かな輪郭形状を出来るだけ残していること。 オリジナルのフィルタを考案してもよい。 平滑化や微分の係数を変えるなど 参考 (先端研究例です) 正確な自動診断が出来 た時の輪郭抽出結果 画像例 誤った診断結果を出力した 時の輪郭抽出結果 回答例 (breastcancer.rawでの例) 途切れているため 良くない結果 この程度抽出 できれば合格!
© Copyright 2025 ExpyDoc