Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
画像処理工学
2値画像とその解析方法
画像の2値化
• 2値画像
– 1画素あたり1bit(0か1)の情報を持つ画像
– 表示のために0(黒)か255(白)とする
• 2値画像の利用
– 文字認識や形状認識で利用される
– 画像を線図形化して解析処理を行う
• 2値画像処理の利点
– 画像のデータ量が少なくてすむ(画素数×1bit)
– データ量が少ないので,処理の高速化が図れる
2
画像の2値化
• 多値画像から2値画像へ(画像の2値化)
– 花の部分だけを抽出する
多値画像 2値画像
こちらの画像の白い部分についてのみ解析処理を行う(形,大きさ,etc...)
3
画像の2値化
• 画像の2値化処理
– しきい値(閾値;threshold)を基準に,各画素の濃度値を0か1に変換する
• 固定しきい値処理
– ある濃度値をしきい値 t として
とする
– 実際には,ヒストグラムを見ながら試行錯誤的に t の値を決定する
( )( )
1 [ ][ ][ ][ ]
0 [ ][ ]f i j t
g i jf i j t
≥= < t f [i][j]
g [i][j]
zm0
1
4
画像の2値化
5
• 固定しきい値処理による画像の2値化
固定しきい値処理
1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:
入力画像:img[N][M]結果画像:res_img[N][M]
入力画像img[][]の入力
for(y = 0; y < N; y++){for(x = 0; x < M; x++){
img[y][x]がしきい値t以上であればres_img[y][x]に255を代入そうでなければres_img[y][x]に0を代入
}}
結果画像res_img[][]の出力
画像の2値化
• 判別分析法
– しきい値を t– グループ(クラス)1 : 0 ~ t -1 の濃度値を持つ画素
– グループ(クラス)2 : t ~ 255 の濃度値を持つ画素
– それぞれのグループの濃度値の分散を求める
fn
( )1 2
102
11
t
ff
n f f
nσ
−
=
−=∑
( )255 2
22
22
ff t
n f f
nσ =
−=∑
グループ1の濃度値の分散
グループ2の濃度値の分散
: グループ i の画素数
: 濃度値 f の画素数
: グループ i の濃度値の平均値
: グループ i の濃度値の分散
2iσ
if
in
6
画像の2値化
• 判別分析法(続き)
– クラス内分散
• グループ内の値(データ)がどのくらいばらついているか
– クラス間分散
• グループ間がどのくらい離れているか
( ) ( )
( ) ( ){ } ( )
2 2 21 1 2 2 1 2
2 221 1 2 2 1 2
W
B F F
n n n n
n f f n f f n n
σ σ σ
σ
= + +
= − + − +
2
2B
W
σσ が最大となるときの t をしきい値とする
クラス内分散
クラス間分散
Ff : 全画素の濃度値の平均値
クラス内分散が小さく(平均値に近い値に集中している),クラス間分散が大きく(クラス間が離れている)なるようにしきい値を決める 7
画像における連結性
• 4近傍および4連結
– ある画素を中心とし,その上下左右の画素を4近傍という
– 4近傍中に中央の画素と同じ色(値)の画素が存在する場合,それらの画素を4連結しているという
: 4近傍画素 4連結の例
8
画像における連結性
• 8近傍および8連結
– ある画素を中心とし,その周りの画素を8近傍という
– 8近傍中に中央の画素と同じ色(値)の画素が存在する場合,それらの画素を8連結しているという
: 8近傍画素
8連結の例 9
画像における連結性
• 連結成分
– たがいに連結している同じ値を持つ画素の集まり
• 図形成分
– 2値画像における連結成分
– 連結性の違い(4連結か8連結か)により,成分の数が異なってくる
4連結で見た場合の図形成分数 : 38連結で見た場合の図形成分数 : 1
10
画像における連結性
• 孔
– ある連結成分が他の色の連結成分を内部に含む
孔
背景(白の画素)を8連結で考えると,孔が外部とつながっていることになり矛盾が生じる
図形を8連結で考えたら背景は4連結で考える
11
2値画像における幾何学的性質
• オイラー数
– 連結成分の個数から孔の個数を引いた数
1
V : 1の画素の総数
E :
D :
11
1
1
1
1
1
T :
1
1
1
1
1 1
1
1 1
1
1 1
F : 1
1 1
1
の配置の総数
の配置の総数の配置の総数
の配置の総数
4連結の場合のオイラー数 ( )4G V E F= − +
8連結の場合のオイラー数 ( )8G V E D T F= − − + −12
2値画像における幾何学的性質
• 距離
– 画素間の遠近の程度を表す尺度
• ユークリッド距離
• 4近傍距離(市街地距離)
– 縦または横のみ移動できる条件での距離
• 8近傍距離(チェス盤距離)
– 8方向に移動できる条件での距離
( ) ( )2 2i k j l− + −
i k j l− + −
( )max , i k j l− −
A[i][j],B[k][l] 間の直線距離
13
2値画像における幾何学的性質
• 各距離の違い
– 中心画素からの距離を3つの距離で求める
4 3 2 3 4 3 2 1 2 32 1 0 1 23 2 1 2 34 3 2 3 4
8 5 2 5 8
5 2 1 2 52 1 0 1 2
5 2 1 2 5
8 5 2 5 8
2 2 2 2 2 2 1 1 1 22 1 0 1 22 1 1 1 22 2 2 2 2
ユークリッド距離 4近傍距離 8近傍距離
14
B
ラベリング
• ラベリング
– 2値画像上に点在している図形成分(連結成分)のそれぞれに名前をつける処理
– 図形成分の区別をしておけば,図形成分の個数やそれぞれの特徴(面積など)を計算できる
B B B B BB B B BB
CC
B BBB
DDB
BBB
D D DBD D
BCC
B
B
B
B
D
BBB
BB BB
BB
BB
A
BB
B
AA
B
A
BBB
AAA
B
AA
B B
15
ラベリング
• ラベリングのアルゴリズムの例
– 8連結で考え,2回の走査を行う
– 左上の画素から走査しながら,1の画素を見つける
– その画素 f [i][j] に隣接する画素のうちf [iー1][jー1] , f [iー1][j] ,f [iー1][j+1], f [i][jー1]
の値とラベルを調べる
f [i][jー1]
f [iー1][jー1] f [iー1][j] f [iー1][j+1]
f [i][j]
16
ラベリング
• ラベリングのアルゴリズムの例(続き)
– 4つの画素すべてが0のとき,f [i][j]に新しいラベルをつけて,次の画素を走査する
すべて 0
ラベル 2 をつける17
ラベリング
• ラベリングのアルゴリズムの例(続き)
– 4つの画素のうち,値が0のもの以外に1種類のラベルがついている場合は,f [i][j]に同じラベルをつけて,次の画素を走査する
2
2
値が0でなく,ラベル2がついている
ラベル 2 をつける18
2
ラベリング
• ラベリングのアルゴリズムの例(続き)
– 4つの画素のうち,値が0のもの以外に2種類以上のラベルがついている場合は,その中で最も小さいラベル番号をf [i][j]につけるとともに,それらが同じ連結成分であることを記憶しておき,次の画素を
走査する
3
2 2
2 2
2 2
2
33
3
3
3
2
3
値が0でなく,ラベル2と3がついている
3 2 2
3 2
ラベル連結関係
テーブルに記憶
ラベル 2 をつける
19
ラベリング
• ラベリングのアルゴリズムの例(続き)
– 最後まで走査が終わったら,左上から2回目の走査を行い,ひとつの連結成分に対して同じラベルがつくように,ラベルをつけなおす
3
2 2
2 2
2 2
2
2
2
2
2
3
3
3
3
3
3
3
3
3テーブルを見ると
ラベル 3 は ラベル 2 と同じ連結成分である
3
ラベル 2 につけなおす
2 2
3 2
ラベル連結関係
20
• 膨張
– 図形を外側に1画素分広げる処理
– 拡張,伝播とも呼ばれる
• 収縮
– 図形を1画素分細くする処理
– 侵食とも呼ばれる
– 2値画像において,ノイズを除去する目的などに用いられる
– 処理を何回行うかで結果が変わってくる
(埋めてはいけない孔を埋めてしまうことがある)
膨張・収縮処理
21
• 膨張処理
– ある画素とその8近傍(または4近傍)のいずれかに少なくともひとつの図形画素(1)がある場合,出力画素を1とする
膨張・収縮処理
1 : [ ][ ][ ][ ]
0 :
f i jg i j
=
あるいはその8近傍(または4近傍)
のいずれかが1のとき
膨張処理1回
その他のとき
22
• 収縮処理
– ある画素とその8近傍(または4近傍)のいずれかに少なくともひとつの背景画素(0)がある場合,出力画素を0とする
膨張・収縮処理
0 : [ ][ ][ ][ ]
1 :
f i jg i j
=
あるいはその8近傍(または4近傍)
のいずれかが0のとき
収縮処理1回
その他のとき
23
• 膨張処理と収縮処理の組み合わせ
– 膨張→収縮処理
• 連結成分の小さな孔や幅の狭いくぼみの部分(亀裂や分裂など)を埋める効果をもつ
– 収縮→膨張処理
• 2値画像の小成分や幅の狭い部分(ひげなどのノイズ)を取り除く効果をもつ
膨張・収縮処理
24
• 境界(輪郭線)追跡
– 広がりのある塊状図形の境界画素を抽出する
– 図形の形状を解析するのに利用
– 単に境界画素の集合を抽出するだけでなく,順序付けられた画素の系列として抽出することができる
境界追跡
A BA B BA B BA B BA A
AAAAA
AA A A A A A A
A A A A A A A 8連結で考えた場合の境界追跡結果
25
• 境界追跡のアルゴリズム(8連結)の例
– 左上の画素から走査し,左側に0の画素が隣接する1の画素を見つけ,それを最初の境界画素とする
– すでに境界画素として認識されていたものであれば無視する
境界追跡
26
• 境界追跡のアルゴリズム(8連結)の例(続き)
– 最初の境界画素を中心とする8近傍を,反時計回りに調べ,1の画素をみつける
– その画素を次の境界画素とする(下図の例では⑥の画素)
境界追跡
A
③ ② ①
④
⑤
A
⑥
27
• 境界追跡のアルゴリズム(8連結)の例(続き)
– 次の境界画素を見つけるときには,前の境界画素の(反時計回りに)隣りの画素から探索すればよい
境界追跡
AA
① A
②
③
A
④
② ① A
③
④
A
⑤
AA
AA
④ を次の境界画素とする
⑤ を次の境界画素とする
28
• 境界追跡のアルゴリズム(8連結)の例(続き)
– 次の境界画素が,最初に認識された境界画素と一致したときには追跡処理をやめて,次の走査を行う
– 走査を行う上で,すでに境界画素とされているものは無視していく
境界追跡
AAAAA A
AAAAA
AA A A A A A A
A A A A A A A
③ ② ①
A
A
A A
最初に境界画素として認識された
次の走査を行う
29
• 境界追跡のアルゴリズム(8連結)の例(続き)
– 外側の境界は,図形に対して反時計回りに追跡される
– 孔の部分の境界は,図形に対して時計回りに追跡される
境界追跡
AA BAAA A
AAAAA
AA A A A A A A
A A A A A A A
孔の部分の境界(B)は時計回りに追跡される
30
直線の検出
• 直線の検出
– ノイズや対象物の重なりなどの影響で散在した点(画素)から,本来抽出したい直線を導き出す
点線の直線式を導き出したい
31
• ハフ(Hough)変換を用いた直線の検出
– ある1点(x1,y1)が与えられたとき,これを通る直線は,傾き a と切片 b のパラメータを用いて
y = ax + bと表される
– 原点から直線に下ろした垂線の長さρと,垂線がx 軸となす角度θのパラメータを用いると,直線式は
とも表すことができる
直線の検出
cos sinx yρ θ θ= +
32
• ハフ(Hough)変換を用いた直線の検出
– 点(x1,y1)を通るすべての直線をパラメータ(θ,ρ)で表したとき,θの変化に対するρの変化をグラフ化すると下図のようになる
直線の検出
2ρ
1ρ
3ρ
(x1,y1)
x
y
1θ2θ
3θ
33
• ハフ(Hough)変換を用いた直線の検出
– 与えられたすべての点についても,同様に曲線を求めると,下図のようになる
直線の検出
34
• ハフ(Hough)変換を用いた直線の検出
– 曲線が最も多く交わる点(θ1,ρ1)を見つければ1本の直線を検出することができる
直線の検出
1θ
1ρ
1 1 1cos sinx yρ θ θ= +
1 1
1 1
cossin sin
y xθ ρθ θ
= − +
35
• ハフ変換の利点
– 同時に複数の直線を検出することができる
– ノイズを含む2値画像からも直線を検出できる
• ハフ変換の欠点
– 計算時間がかかる
– 短い線分を多数含む図形には不向き
直線の検出
36