画像処理 05. Filters フィルタ
金 帝演
目次
What is a Filter?
Linear Filters
Formal Properties of Linear Filters
Nonlinear Filters
2020/11/20 jykim 2
線形フィルタの種類 ( Types of Linear Filter )
線形フィルタの効果はフィルタマトリクスによって決定 されるために無数の線形フィルタが存在
平滑化フィルタ
ボックスフィルタ(Box filter)
ガウシアンフィルタ(Gaussian filter)
差分フィルタ(Difference filter)
ボックスフィルタ( Box filter )
一番簡単なフィルタ
最適な平滑化フィルタとしては 程遠い
周波数空間での粗い処理
(
Sharp cutoff
)ガウシアンフィルタ( Gaussian filter )
2
次元ガウス関数に対応する 平滑化フィルタ
𝜎
は標準偏差(釣鐘型関数の幅)
𝑟
は中心からの距離(半径) 中心ピクセルが最大の重み
離散フィルタ行列が十分大きい 場合はアナログガウスフィルタと 等方性を持つ
Box filterより優秀
2020/11/20 jykim 5
差分フィルタ( Difference filter )
, ∈
, ∈
𝑅
は𝐻 𝑖, 𝑗 0
𝑅
は𝐻 𝑖, 𝑗 0
ラプラスフィルタ(
Laplace filter
) エッジ検出と画像鮮鋭化に利用
2020/11/20 jykim 6
線形フィルタの特性
(Formal Properties of Linear Filters) 線形畳み込み(Linear Convolution)
線形畳み込みの特定(
Properties of Linear Convolution
) 線形フィルタの可分性(
Separability of Linear Filter
) フィルタのインパルス応答(
Impulse Response of a Filter
)線形畳み込み( Linear Convolution )
同じ次元の2つの関数の結合
畳み込み演算
フィルタ適用での式
5.5
と一致𝐼 𝑢, 𝑣 𝐼 𝑢 𝑖, 𝑣 𝑗 · 𝐻 𝑖, 𝑗 5.14
(
*
は畳み込み演算子)𝐼 𝑢, 𝑣 ← 𝐼 𝑢 𝑖, 𝑣 𝑗
, ∈
· 𝐻 𝑖, 𝑗 5.5
線形畳み込み( Linear Convolution )
式
5.5
との違い 総和における変数
𝑖, 𝑗
の範囲
𝐼 𝑢 𝑖, 𝑣 𝑗
の座標系における負の符号2020/11/20 jykim 9
𝐼 𝑢, 𝑣 𝐼 𝑢 𝑖, 𝑣 𝑗 · 𝐻 𝑖, 𝑗
, ∈
𝐼 𝑢 𝑖, 𝑣 𝑗 · 𝐻 𝑖, 𝑗
, ∈
𝐼 𝑢 𝑖, 𝑣 𝑗 · 𝐻
∗𝑖, 𝑗
, ∈
5.16
180◦回転
線形畳み込みの例
2020/11/20 jykim 10
線形畳み込みの特性
(Properties of Linear Convolution) 可換性(Commutativity)
線形性(
Linearity
)
連想性(Associativity)
線形フィルタの可分性
(Separability of Linear Filter ) が複数のカーネルの畳み込みカーネルの場合
フィルタ操作 は
x/y- 可分性
フィルタは1次元カーネル と で構成されている 場合
画像 にフィルタを適用した場合
2020/11/20 jykim 13
𝐻 1 1 1 1 1 𝑎𝑛𝑑 𝐻 1 1 1
𝐻
分離可能なガウシアンフィルタ
フィルタ関数 が つの 次元関数の外積で 表現可能であれば2次元フィルタは分離可能
2次元ガウシアン関数
2次元ガウシアンフィルタ
, は1次元ガウシアンフィルタ
, , により実現可能2020/11/20 jykim 14
, , ,
フィルタのインパルス応答
(Impulse Response of a Filter) 線形畳み込みは2つの関数を含むバイナリ演算で あり、単位元(
Neutral element
)を持つ インパルス(Impulse)またはDirac関数
インパルス応答
関数をフィルタカーネルとして利用した場合、
その結果は入力画像(元画像)そのまま
入力
インパルス応答
入力関数がインパルス の場合、フィルタ操作後の 結果はフィルタ そのまま
2020/11/20 jykim 17
入力
線形フィルタ
平滑化またはノイズ除去時に画像の品質を均等に 低下
特にノイズ除去のために利用
2020/11/20 jykim 18
線形フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I H
1 1 1 1 1
線形フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=(0*1+0*1+0*1+0*1+0*1)/5 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
線形フィルタ適用の例(インパルス)
2020/11/20 jykim 21
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
0=(0*1+0*1+0*1+0*1+0*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
2020/11/20 jykim 22
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
2=(0*1+0*1+0*1+0*1+10*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
4=(0*1+0*1+0*1+10*1+10*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
4=(0*1+0*1+10*1+10*1+0*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
2020/11/20 jykim 25
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
4=(0*1+10*1+10*1+0*1+0*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
2020/11/20 jykim 26
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
4=(10*1+10*1+0*1+0*1+0*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
2=(10*1+0*1+0*1+0*1+0*1)/5 1 1 1 1 1
線形フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
0=(0*1+0*1+0*1+0*1+0*1)/5 1 1 1 1 1
非線形フィルタ( Nonlinear Filters )
元のピクセル値がいくつかの非線形関数によって 結合される場合、そのフィルタを「非線形フィルタ」と 呼ぶ
最大値と最小値フィルタ(
Max and Min Filter
) メディアンフィルタ(
Median Filter
) 重み付けメディアンフィルタ(Weighted Median Filter)
2020/11/20 jykim 29
最大値と最小値フィルタ
(Max and Min Filter
) 一番簡単な非線形フィルタ
ここで、Rはフィルタの領域
2020/11/20 jykim 30
最小値フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I H
1 1 1 1 1
最小値フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,0,0) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(インパルス)
2020/11/20 jykim 33
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,0,0) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(インパルス)
2020/11/20 jykim 34
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,0,1) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,1,1) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(インパルス)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,1,1,0) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(インパルス)
2020/11/20 jykim 37
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,1,1,0,0) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
2020/11/20 jykim 38
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,0,0) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,0,0) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,0,10) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
2020/11/20 jykim 41
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,0,10,10) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
2020/11/20 jykim 42
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,0,10,10,10) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
0=min(0,10,10,10,10) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
最小値フィルタ適用の例(ステップ)
10
0 0 0 0 0 0 1 1 0 0 0 0 0 0 0
I
10=min(10,10,10,10,10) 10
0 0 0 0 0 0 1 1 1 1 0 0 0 0 0
I
1 1 1 1 1
2020/11/20 jykim 45 元画像
Minimumフィルタ 適用後
Maximumフィルタ 適用後
白の雑音は除去
(輝度値が高い雑音)
黒の雑音は除去
(輝度値が低い雑音)
メディアンフィルタ( Median Filter )
中央値は順位序列の統計
すべての画像のピクセル値をフィルタ領域
R
における ピクセルの中央値に入れ替え
2020/11/20 jykim 46
整列
メディアンフィルタの影響
(教科書修正要)
ディアンフィルタ 適用後
(中央値)
Boxフィルタ 適用後
(平均値)
元画像
重み付きメディアンフィルタ
(Weighted Median Filter) フィルタ領域内の位置に個々の重みを割り当てる
対応するピクセル値の投票数として解釈
, ∈
例えば、
L=15
L=5
2020/11/20 jykim 49
重み付きメディアンフィルタ
(Weighted Median Filter)2020/11/20 jykim 50
課題
下記の項目のプログラムを作成し、その結果を提示 してください。 ただし、フィルタの大きさは
5
×5
。 平坦化(
lena_gray.bmp
を利用) ボックスフィルタ
ガウシアンフィルタ
非線形フィルタ(lena_gray_noise.bmpを利用)
Minimumフィルタ
Maximumフィルタ
メディアンフィルタ(lena_gray_noise.bmpを利用)
提出締め切り
次に授業開始前まで