卷積濾波--小記


核大小、權重都在影響着卷積效果

卷積

用不同的卷積覈對圖像進行卷積,得出來的效果是不一樣的。在高通平臺調試噪聲的時候會有flat、edge部分kernel的設置,雖然可以在不同的曝光值下根據色卡情況來自動計算Kernel數據,但是這些數據到底是什麼意思呢?引起了一些思考。
我以爲我很懂卷積,無非就是捲一捲濾一濾,捨棄一些信息,得到一些信息。還是太天真了。
在不涉及公式,只用matlab現成的函數來對比不同kernel和不同weight對圖像的影響。

對比

核A定義每個元素對應的值
[1111111111222222211244444211248884211248478421124888421124444421122222221111111111]\begin{bmatrix} {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{2}&{2}&{2}&{2}&{2}&{2}&{2}&{1}\\ {1}&{2}&{4}&{4}&{4}&{4}&{4}&{2}&{1}\\ {1}&{2}&{4}&{8}&{8}&{8}&{4}&{2}&{1}\\ {1}&{2}&{4}&{8}&{47}&{8}&{4}&{2}&{1}\\ {1}&{2}&{4}&{8}&{8}&{8}&{4}&{2}&{1}\\ {1}&{2}&{4}&{4}&{4}&{4}&{4}&{2}&{1}\\ {1}&{2}&{2}&{2}&{2}&{2}&{2}&{2}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ \end{bmatrix}
那麼對應的卷積核如下所示:
Filter=1sumA×AFilter=\frac{1}{sumA}\times A
核B定義每個元素對應的值
[1111111111222222211244444211248884211248168421124888421124444421122222221111111111]\begin{bmatrix} {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{2}&{2}&{2}&{2}&{2}&{2}&{2}&{1}\\ {1}&{2}&{4}&{4}&{4}&{4}&{4}&{2}&{1}\\ {1}&{2}&{4}&{8}&{8}&{8}&{4}&{2}&{1}\\ {1}&{2}&{4}&{8}&{16}&{8}&{4}&{2}&{1}\\ {1}&{2}&{4}&{8}&{8}&{8}&{4}&{2}&{1}\\ {1}&{2}&{4}&{4}&{4}&{4}&{4}&{2}&{1}\\ {1}&{2}&{2}&{2}&{2}&{2}&{2}&{2}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ \end{bmatrix}
那麼對應的卷積核如下所示:
Filter=1sumB×BFilter=\frac{1}{sumB}\times B

相同大小,不同中心大小

A、B相對應的卷積核中心權重不一樣,對圖像I進行卷積,得到卷積後的圖像,並進行頻率分析。

clc;
clear all;
I = imread('C:\Matlab\1.jpg');
I = rgb2gray(I);
I = double(I(1:500,1:1080));
a = ones(9, 9);
b = ones(7, 7);
c = 2*ones(5, 5);
d = 4*ones(3, 3);
b1 = padarray(b, [1, 1]);
c1 = padarray(c, [2, 2]);
d1 = padarray(d, [3, 3]);
e = a + b1 + c1+ d1;
e(5,5)=47;
sum1 = sum(e(:));
e = (1/sum1)*e;   %卷積核A
flat_con = conv2(I,e, 'same');
err1 = I-flat_con;
flat2 = fft2(flat_con);
flat21 = abs(fftshift(flat2));
flat3 = fft2(err1);
flat31 = abs(fftshift(flat3));
figure;
subplot(431),image(I), title('orignal');
subplot(432),image(flat_con),title('conv');
subplot(433),image(err1),title('orignal-conv');
subplot(434),image(f11),title('orignal fft') ;
subplot(435),image(flat21),title('conv fft');
subplot(436),image(flat31), title('orignal-conv fft');

a = ones(9, 9);
b = ones(7, 7);
c = 2*ones(5, 5);
d = 4*ones(3, 3);
b1 = padarray(b, [1, 1]);
c1 = padarray(c, [2, 2]);
d1 = padarray(d, [3, 3]);
e = a + b1 + c1+ d1;
e(5,5)=16;
sum1 = sum(e(:));
e = (1/sum1)*e; %卷積核A
edge_con = conv2(I,e, 'same');
err2 = I-edge_con;
edge2 = fft2(edge_con);
edge21 = abs(fftshift(edge2));
edge3 = fft2(err2);
edge31 = abs(fftshift(edge3));
subplot(437),image(I),title('orignal');
subplot(438),image(edge_con),title('conv');
subplot(439),image(err2),title('orignal fft');
subplot(4,3,10),image(f11),title('conv fft');
subplot(4,3,11),image(edge21),title('conv fft');
subplot(4,3,12),image(edge31),title('orignal-conv fft');

通過卷積濾波得到相應的對比圖,
A中心元素的權重大,相應的可以留下一定的高頻信息。B的中心權重相對較小,也就意味着中心和四周相差不大,卷積的過程中更多的可以使圖像更加平滑。
圖1是A卷積後的原圖,卷積後圖,以及兩者的差值;
圖1
圖2是B卷積後的原圖,卷積後圖,兩者之間的差值;
圖2
分開看似乎看不來二者之間的聯繫,所以接下來對兩幅圖進行頻率分析:
圖3是A的傅里葉變換結果,圖4是B的傅里葉變化結果,我們可以從中間看到,頻率發生了很大的變化。B可以去掉很多高頻信息,A相對的留下了高頻信息。
圖3
圖4

不同大小,相同中心大小

核的大小分別爲9、5、3:
核C定義每個元素對應的值
[1111111111111111111111111111111111111111161111111111111111111111111111111111111111]\begin{bmatrix} {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{16}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}&{1}\\ \end{bmatrix}

核D定義每個元素對應的值
[11111111111116111111111111]\begin{bmatrix} {1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{16}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}\\ {1}&{1}&{1}&{1}&{1}\\ \end{bmatrix}

核E定義每個元素對應的值
[1111161111]\begin{bmatrix} {1}&{1}&{1}\\ {1}&{16}&{1}\\ {1}&{1}&{1}\\ \end{bmatrix}
三個不同大小的卷積核卷積後,核越大,濾掉的信息越多,從9、7、5、3中心權重佔比越大,留下的信息越多。
核C對應的頻率和卷積圖:
圖5

核D對應的頻率和卷積圖:
圖6
核E對應的頻率和卷積圖:
圖7

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章