画像処理工学
画像からの特徴抽出:フィルタリング処理
空間フィルタを用いた画質改善
• 空間フィルタリング
– ある性質を持った信号だけを抽出する操作 – 空間領域(画像データ空間)で行われる
– 局所処理(近傍処理)により実現される
• 局所処理(近傍処理)
– 注目している画素の値を,その近傍の画素との 重み付け加算を行って求める処理
– 重み付けに用いる値を加重マトリックス,フィルタ
係数,オペレータなどという
空間フィルタを用いた画質改善
• 大きさ3×3の局所処理
[ 1][ 1] [ 1][ ] [ 1][ 1]
[ ][ 1] [ ][ ] [ ][ 1]
[ 1][ 1] [ 1][ ] [ 1][ 1]
f i j f i j f i j
f i j f i j f i j
f i j f i j f i j
− − − − +
− +
+ − + + +
[0][0] [0][1] [0][2]
[1][0] [1][1] [1][2]
[2][0] [2][1] [2][2]
a a a
a a a
a a a
積和
処理対象の画像の濃度値 オペレータ
2 2
0 0
[ ][ ] [ 1][ 1] [ ][ ]
k l
g i j f i k j l a k l
= =
= ∑∑ + − + − ⋅
[ ][ ]
f i j を注目画素とし,処理した結果を g i j [ ][ ] とする
空間フィルタを用いた画質改善
• 大きさ3×3の局所処理のアルゴリズム
3×3の局所処理 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
入力画像:img[N][M]
結果画像:res_img[N][M]
入力画像img[][]の入力
for(y = 1; y < N – 1; y++){
for(x = 1; x < M – 1; x++){
img[y-1][x-1]~img[y+1][x+1]の3×3画素領域 に対する畳み込み計算結果を
res_img[y][x]に格納する }
}
結果画像res_img[][]の出力
空間フィルタを用いた画質改善
• 空間フィルタリングにより行える画質改善
– 平滑化
• ランダムなノイズを除去したり,濃度値の細かい変化を 少なくして見やすい画像にしたりする
– 鮮鋭化
• ぼやけた画像を鮮明にする
• 空間フィルタリングにより行える特徴抽出
– エッジ検出
• 輪郭など濃度値が急激に変化している箇所を検出する
空間フィルタによる画像の平滑化
• 平滑化
– 細かい濃度変化を滑らかな変化に変換する – ローパスフィルタ
• 低周波成分のみを取り出すフィルタ
– 移動平均フィルタ
• 近傍領域内の濃度値の平均値を利用
– 加重平均フィルタ
• 単純に平均するだけでなく,注目する画素の濃度値の重 み大きくして平均した値を利用
– メディアンフィルタ
• エッジを保存しながら平滑化が行える
空間フィルタによる画像の平滑化
• 移動平均フィルタ
– ある画素を中心とした近傍領域内の濃度値の平均 値を,その中心画素の値とする
1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9
2 7 5 6 2 5 3 4 2 7 3 6 5 6 1 7 5 4
1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9
2 7 5 3 4 2 5 6 1
4
1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9 1/9
積和 積和
6 2 5 7 5 4 3 6 7
4
= =
5
5
移動平均フィルタ
(3×3の場合)
原画像 処理結果画像
空間フィルタによる画像の平滑化
• 大きさ3×3の移動平均アルゴリズム
3×3の移動平均 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
入力画像:img[N][M]
結果画像:res_img[N][M]
入力画像img[][]の入力
for(y = 1; y < N – 1; y++){
for(x = 1; x < M – 1; x++){
img[y-1][x-1]~img[y+1][x+1]の3×3画素領域 平均値をres_img[y][x]に格納する
} }
結果画像res_img[][]の出力
空間フィルタによる画像の平滑化
• 加重平均フィルタ
– 移動平均では,近傍領域内についてすべて同じ 重みであるため,エッジもぼけてしまう
– 少しでもぼけるのを防ぐために中心付近の重みを 大きくして処理を行う
1/10 1/10 1/10 1/10 2/10 1/10 1/10 1/10 1/10
加重平均フィルタの例
1/16 2/16 1/16 2/16 4/16 2/16 1/16 2/16 1/16
1/36 1/36 1/36 1/36 2/36 2/36 1/36 2/36 4/36
1/36
1/36 2/36
2/36
2/36 2/36 2/36
1/36 1/36
1/36 1/36 1/36 1/36 1/36 1/36
1/36
空間フィルタによる画像の平滑化
• メディアンフィルタ
– 平均値ではなく,近傍領域内の画素の濃度値のうち 中央値(メディアン)の濃度値を中心画素の濃度値と する
0,1,0,1,6,5,6,6
0,0,1,2,4,6,6,6
0,0,1,1,5,6,6,6
原画像
移動平均フィルタの結果
メディアンフィルタの結果 エッジ
エッジがぼけてる
エッジが保存されてる
空間フィルタによる画像の平滑化
• メディアンフィルタの処理アルゴリズム
原画像 処理結果画像
1 3 2 3 4 2 1 2 0
2
1 3 2 3 4 2 1 2 0
1 1 2 2 2 3 3 4
0
並べ替え 中央値
空間フィルタによる画像の平滑化
• 大きさ3×3のメディアンフィルタ処理アルゴリズム
3×3のメディアンフィルタ処理 1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
入力画像:img[N][M]
結果画像:res_img[N][M]
入力画像img[][]の入力
for(y = 1; y < N – 1; y++){
for(x = 1; x < M – 1; x++){
img[y-1][x-1]~img[y+1][x+1]の3×3画素領域 の値を並べ替えたときの中央値を
res_img[y][x]に格納する }
}
結果画像res_img[][]の出力
空間フィルタによる画像の平滑化
• 平滑化の処理結果
原画像 移動平均フィルタ(3×3)
の処理結果
メディアンフィルタ(3×3)
の処理結果
エッジもぼけて しまっている
エッジがいくらか 保存されている
空間フィルタによるエッジの検出
• エッジの検出方法
– エッジとは,対象物の輪郭など濃度値が急激に変化 しているところ
– 画像に対して1次微分を施すと,それが変化の度合 いを示すことになる
– 1次微分は差分により近似する
[ ][ ] f i j f i j [ ][ 1] +
[ ][ ] [ 1][ ]
f i j f i + j
[ ][ ] [ ][ 1] [ ][ ] f i j
x= f i j + − f i j
[ ][ ] f i j
x[ ][ ] f i j
y[ ][ ] [ 1][ ] [ ][ ] f i j
y= f i + j − f i j x
方向の1次微分y
方向の1次微分2 2
[ ][ ]
x[ ][ ]
y[ ][ ] f i j f i j f i j
∇ = +
微分強度(エッジ強度)
空間フィルタによるエッジの検出
• エッジの検出方法(1次微分の適用)
– 1次微分(差分)の計算をオペレータで表現
– 微分強度(エッジ強度)の計算の簡単化
[ ][ ] x [ ][ ] y [ ][ ] f i j f i j f i j
∇ = +
ー1
ー1 1
x
方向の1次微分 1y
方向の1次微分( )
[ ][ ] max x [ ][ ] , [ ][ ] y
f i j f i j f i j
∇ =
空間フィルタによるエッジの検出
• エッジの検出方法(1次微分の適用)
– 斜め方向のエッジ検出( Roberts オペレータ)
ー1 0 0 1
0 1 ー1 0
{ } { 2 } 2
[ ][ ] [ 1][ 1] [ ][ ] [ ][ 1] [ 1][ ]
f i j f i j f i j f i j f i j
∇ = + + − + + − +
[ ][ ] [ 1][ 1] [ ][ ] [ ][ 1] [ 1][ ]
f i j f i j f i j f i j f i j
∇ = + + − + + − +
( )
[ ][ ] max [ 1][ 1] [ ][ ] , [ ][ 1] [ 1][ ]
f i j f i j f i j f i j f i j
∇ = + + − + − +
Roberts オペレータ
Roberts オペレータによる微分強度(エッジ強度)
空間フィルタによるエッジの検出
• エッジの検出方法(1次微分の適用)
– Prewitt オペレータ および Sobel オペレータ
• 差分値の位置が注目画素の位置と一致するように差分の とり方を変更
• 平滑化の効果
ー1
0 1 0
ー1 0
0
1
ー1 0 0
1 1 1 1 ー1 ー1 ー1
ー1
0 2 0
ー1 0
0
1
ー2 0 0
1 1 2 1 ー1 ー2 ー1
x
方向の差分y
方向の差分x
方向の差分y
方向の差分Prewitt オペレータ Sobel オペレータ
空間フィルタによるエッジの検出
• Prewitt オペレータによる縦方向エッジ( x 方向の差分)の検出
Prewitt
オペレータによる縦方向のエッジの検出1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
入力画像:img[N][M]
結果画像:res_img[N][M]
入力画像img[][]の入力
for(y = 1; y < N - 1; y++){
for(x = 1; x < M - 1; x++){
img[y-1][x+1]+img[y][x+1]+img[y+1][x+1]
-(img[y-1][x-1]+img[y][x-1]+img[y+1][x-1])の絶対値を計算
その値が255より大きければ255に置き換えるその値が0より小さければ0と置き換える
res_img[y][x]にその値を代入する
} }
結果画像res_img[][]の出力
空間フィルタによるエッジの検出
• エッジの検出方法(2次微分の適用)
– 2次微分(差分の差分)を用いたエッジ検出
[ ][ 1] [ ][ ] [ ][ 1]
f i j − f i j f i j +
[ 1][ ] [ ][ ] [ 1][ ]
f i j
f i j
f i j
−
+
{ }
{ }
[ ][ ] [ ][ 1] [ ][ ]
[ ][ ] [ ][ 1]
[ ][ 1] 2 [ ][ ] [ ][ 1]
f i j
xxf i j f i j
f i j f i j f i j f i j f i j
= + −
− − −
= − − + +
[ ][ ] f i j
xx
方向の2次微分[ ][ 1]
f i j
x−
[ ][ ] f i j
xx[ ][ ] f i j
y[ 1][ ] f i
y− j [ ][ ]
f i j
yy{ }
{ }
[ ][ ] [ 1][ ] [ ][ ]
[ ][ ] [ 1][ ] [ 1][ ] 2 [ ][ ] [ 1][ ]
f i j
yyf i j f i j
f i j f i j
f i j f i j f i j
= + −
− − −
= + − + −
y
方向の2次微分空間フィルタによるエッジの検出
• エッジの検出方法(2次微分の適用)
– ラプラシアン(2次微分)オペレータ
– x 方向の2次微分と y 方向の2次微分を加える
2 [ ][ ] [ ][ ] [ ][ ]
[ 1][ ] [ ][ 1] 4 [ ][ ] [ 1][ ] [ ][ 1]
xx yy
f i j f i j f i j
f i j f i j f i j f i j f i j
∇ = +
= − + − − + + + +
0 1 0
1
-4 1
0 1 0
ラプラシアンフィルタ
空間フィルタによる画像の鮮鋭化
• 鮮鋭化
– エッジの部分は画素値が急に変化している – 急な変化がゆるやかになると輪郭がぼやける
– 画素値の変化を強調させることでぼやけた画像を 鮮明な画像にすることを鮮鋭化という
座標
x
濃度値
f ( x )
濃度値f ( x )
座標
x
値が急に変化 値が徐々に変化
変化の差が 少ない
エッジがはっきりしている エッジがぼやけている
• 画像の2次微分による鮮鋭化の概念
アンダーシュート オーバーシュート
空間フィルタによる画像の鮮鋭化
鮮鋭化
空間フィルタによる画像の鮮鋭化
• 鮮鋭化フィルタ
– ラプラシアン(2次微分)の結果を原画像から差し引く
[ ][ ] [ ][ ] 2 [ ][ ]
[ 1][ ] [ ][ 1] 5 [ ][ ] [ 1][ ] [ ][ 1]
g i j f i j f i j
f i j f i j f i j f i j f i j
= − ∇
= − − − − + − + − +
0
-1 0
-
1 5
-1 0
-1 0
4近傍鮮鋭化フィルタ
-
1
-1
-1
-
1 9
-1
-
1
-1
-1
8近傍鮮鋭化フィルタ
斜め方向の 2次微分も 加えたもの
空間フィルタによる画像の鮮鋭化
• 鮮鋭化の処理結果
原画像 移動平均フィルタ(3×3)
によりぼかした画像
8近傍鮮鋭化フィルタ による処理結果