畳み込みフィルタで、フィルタの重みによって、画像がどう変わるかを見比べられる形でまとめました。参考になれば幸いです。
背景
- NNを自前で実装できる程度に理解しようとしています。
- Convolution NNについて理解を深めていくにあたり、フィルタの重みを変えると、変換後の画像がどう変わるのか、見比べれる形でまとめたいと思ってました。
元画像
- 下表は 3x3 フィルタの重み値を示します。
0.00 | 0.00 | 0.00 |
0.00 | 1.00 | 0.00 |
0.00 | 0.00 | 0.00 |
Bias:0.0 | ||
明るさ変換
明るく。 中心の値を1.0 より大きい値に
0.00 | 0.00 | 0.00 |
0.00 | 1.50 | 0.00 |
0.00 | 0.00 | 0.00 |
Bias:0.0 |
- 明るくなる。
- 単純に輝度を1.5倍にするので、白飛びが生じている。
暗く: 中心の値を1.0 より小さい値に(0より大きい値で)
0.00 | 0.00 | 0.00 |
0.00 | 0.75 | 0.00 |
0.00 | 0.00 | 0.00 |
Bias:0.0 |
- 暗くなっている。
重み値合計 1.0
ぼかし効果。 中心と近傍とも正数 合計は1.0
中心と 4近傍で 同値
0.00 | 0.20 | 0.00 |
0.20 | 0.20 | 0.20 |
0.00 | 0.20 | 0.00 |
Bias:0.0 | ||
- 比較用に原画 と フィルタ画像を並べている。 左が原画 右がフィルタ後の画像
- 並べると ぼかしの効果がわかる。
中心と 8近傍で ほぼ同値
0.11 | 0.11 | 0.11 |
0.11 | 0.12 | 0.11 |
0.11 | 0.11 | 0.11 |
Bias:0.0 | ||
- 先の4近傍に比べ、ぼかし効果が強まっているのが判る。(左下の髪のあたりが特に)
4近傍に対し中心値を大きくする
0.00 | 0.10 | 0.00 |
0.10 | 0.60 | 0.10 |
0.00 | 0.10 | 0.00 |
Bias:0.0 | ||
- ノイズ低減に用いるのは このあたりの比率っぽい。
中心値を少し小さく & 4近傍→8近傍
0.05 | 0.10 | 0.05 |
0.10 | 0.40 | 0.10 |
0.05 | 0.10 | 0.05 |
Bias:0.0 | ||
- 中心値と近傍値の比率で、ぼかし加減を調節できるみたい。
エッジ強調。 中心は正数 近傍は負数 合計は1.0
0.00 | -0.20 | 0.00 |
-0.20 | 1.80 | -0.20 |
0.00 | -0.20 | 0.00 |
Bias:0.0 | ||
- エッジが強調され、くっきりした印象ある。
値を大きくした場合
0.00 | -1.00 | 0.00 |
-1.00 | 5.00 | -1.00 |
0.00 | -1.00 | 0.00 |
Bias:0.0 | ||
- 印刷物っぽい印象に。
さらに倍に
0.00 | -2.00 | 0.00 |
-2.00 | 10.00 | -2.00 |
0.00 | -2.00 | 0.00 |
Bias:0.0 | ||
- イラストっぽい印象に。
さらに倍ぷっしゅ
0.00 | -4.00 | 0.00 |
-4.00 | 20.00 | -4.00 |
0.00 | -4.00 | 0.00 |
Bias:0.0 | ||
- やりすぎた感ある...。
##エンボス効果。 重みに傾きをつける。 合計は1.0
###① ↑ 方向
-1.00 | -2.00 | -1.00 |
0.00 | 1.00 | 0.00 |
1.00 | 2.00 | 1.00 |
Bias:0.0 | ||
② ↗ 方向
0.00 | -1.00 | -2.00 |
1.00 | 1.00 | -1.00 |
2.00 | 1.00 | 0.00 |
Bias:0.0 | ||
③ → 方向
1.00 | 0.00 | -1.00 |
2.00 | 1.00 | -2.00 |
1.00 | 0.00 | -1.00 |
Bias:0.0 | ||
④ ↘ 方向
2.00 | 1.00 | 0.00 |
1.00 | 1.00 | -1.00 |
0.00 | -1.00 | -2.00 |
Bias:0.0 | ||
⑤ ↓ 方向
1.00 | 2.00 | 1.00 |
0.00 | 1.00 | 0.00 |
-1.00 | -2.00 | -1.00 |
Bias:0.0 | ||
⑥ ↙ 方向
0.00 | 1.00 | 2.00 |
-1.00 | 1.00 | 1.00 |
-2.00 | -1.00 | 0.00 |
Bias:0.0 | ||
⑦ ← 方向
-1.00 | 0.00 | 1.00 |
-2.00 | 1.00 | 2.00 |
-1.00 | 0.00 | 1.00 |
Bias:0.0 | ||
⑧ ↖ 方向
-2.00 | -1.00 | 0.00 |
-1.00 | 1.00 | 1.00 |
0.00 | 1.00 | 2.00 |
Bias:0.0 | ||
- 向きで画像の印象がだいぶ変わる。
- 絵のタッチが変わったようにも見えなくもない。
- 画調変換ではこのあたりのフィルタが使われてるのかな。
エッジ抽出。 重み合計 0.0
- 重みの合計を 0.0 にすると、エッジ画像となる。
4近傍均等 合計は0.0
0.00 | -0.25 | 0.00 |
-0.25 | 1.00 | -0.25 |
0.00 | -0.25 | 0.00 |
Bias:0.0 | ||
値を倍に
0.00 | -0.50 | 0.00 |
-0.50 | 2.00 | -0.50 |
0.00 | -0.50 | 0.00 |
Bias:0.0 | ||
さらに倍に
0.00 | -1.00 | 0.00 |
-1.00 | 4.00 | -1.00 |
0.00 | -1.00 | 0.00 |
Bias:0.0 | ||
- エッジ部分が明るくなる。
8近傍 合計は0.0
-0.25 | -0.50 | -0.25 |
-0.50 | 3.00 | -0.50 |
-0.25 | -0.50 | -0.25 |
Bias:0.0 | ||
-0.50 | -1.00 | -0.50 |
-1.00 | 6.00 | -1.00 |
-0.50 | -1.00 | -0.50 |
Bias:0.0 | ||
輪郭強調 中心と近傍1つ
① ↑
0.00 | -1.00 | 0.00 |
0.00 | 1.00 | 0.00 |
0.00 | 0.00 | 0.00 |
Bias:0.0 | ||
② →
0.00 | 0.00 | 0.00 |
0.00 | 1.00 | -1.00 |
0.00 | 0.00 | 0.00 |
Bias:0.0 | ||
③ ↓
0.00 | 0.00 | 0.00 |
0.00 | 1.00 | 0.00 |
0.00 | -1.00 | 0.00 |
Bias:0.0 | ||
④ ←
0.00 | 0.00 | 0.00 |
-1.00 | 1.00 | 0.00 |
0.00 | 0.00 | 0.00 |
Bias:0.0 | ||
重みに方向を持たせる ↑方向
-0.20 | -0.20 | -0.20 |
0.00 | 0.00 | 0.00 |
0.20 | 0.20 | 0.20 |
Bias:0.0 | ||
重みの傾きを増した場合
-1.00 | -1.00 | -1.00 |
0.00 | 0.00 | 0.00 |
1.00 | 1.00 | 1.00 |
Bias:0.0 | ||
傾きをさらに増した場合
-2.00 | -2.00 | -2.00 |
0.00 | 0.00 | 0.00 |
2.00 | 2.00 | 2.00 |
Bias:0.0 | ||
- 傾きを増すにつれ、エッジの線も明るくなっていく。
傾きの方向を変える →
1.00 | 0.00 | -1.00 |
1.00 | 0.00 | -1.00 |
1.00 | 0.00 | -1.00 |
Bias:0.0 | ||
方向 ↓
1.00 | 1.00 | 1.00 |
0.00 | 0.00 | 0.00 |
-1.00 | -1.00 | -1.00 |
Bias:0.0 | ||
方向 ←
-1.00 | 0.00 | 1.00 |
-1.00 | 0.00 | 1.00 |
-1.00 | 0.00 | 1.00 |
Bias:0.0 | ||
ソーベル フィルタ (時計回り)
① ↑ 方向
-1.00 | -2.00 | -1.00 |
0.00 | 0.00 | 0.00 |
1.00 | 2.00 | 1.00 |
Bias:0.0 | ||
② ↗ 方向
0.00 | -1.00 | -2.00 |
1.00 | 0.00 | -1.00 |
2.00 | 1.00 | 0.00 |
Bias:0.0 |
③ → 方向
1.00 | 0.00 | -1.00 |
2.00 | 0.00 | -2.00 |
1.00 | 0.00 | -1.00 |
Bias:0.0 | ||
④ ↘ 方向
2.00 | 1.00 | 0.00 |
1.00 | 0.00 | -1.00 |
0.00 | -1.00 | -2.00 |
Bias:0.0 | ||
⑤ ↓ 方向
1.00 | 2.00 | 1.00 |
0.00 | 0.00 | 0.00 |
-1.00 | -2.00 | -1.00 |
Bias:0.0 | ||
⑥ ↙ 方向
0.00 | 1.00 | 2.00 |
-1.00 | 0.00 | 1.00 |
-2.00 | -1.00 | 0.00 |
Bias:0.0 | ||
⑦ ← 方向
-1.00 | 0.00 | 1.00 |
-2.00 | 0.00 | 2.00 |
-1.00 | 0.00 | 1.00 |
Bias:0.0 | ||
⑧ ↖ 方向
-2.00 | -1.00 | 0.00 |
-1.00 | 0.00 | 1.00 |
0.00 | 1.00 | 2.00 |
Bias:0.0 | ||
畳み込みフィルタ 重み値合計 -1.0 ネガポジ反転
0.00 | 0.00 | 0.00 |
0.00 | -1.00 | 0.00 |
0.00 | 0.00 | 0.00 |
Bias:255.0 | ||
- Bias を使うとネガポジ反転も可能
感想
- グレースケール画像 + 3x3フィルタ のシンプルな組み合わせでも、フィルタを通しての表現が幅広い事を体感した。
- フィルタを組み合わせ検出器をつくる作業は、機械に任せた方がいいと体感した。