- 前言
- filter2
- 實操
- conv2
- imfilter
- 最後
最近開始準備深刻學習一下計算機視覺(CV)方面的內容, 這裏會更新幾期基礎知識, 主要是Matlab和Python方面的. 此次的就是三個Matlab的函數filter2, conv2, imfilter.bash
filter2是相關濾波函數, 假設輸入圖像I大小爲M1 X N1,相關核f大小爲M2 X N2.函數
J = filter2 (f, I, shape)
複製代碼
- f: 相關核, 即濾波掩模
- I: 輸入圖像
- J: 輸出圖像
- shape: 可選, 其參數以下:
參數 | 描述 |
---|---|
same(默認值) | 返回與I一樣尺寸濾波後的圖像, M1 X N1 |
full | 返回所有二維濾波結果, (M1 + M2 - 1) X (N1 + N2 - 1) |
valid | 不考慮邊界補零, 即只要有邊界補出的零參與運算的都捨去, (M1 - M2 + 1) X (N1 - N2 + 1) |
這裏實操一下, 首先是same學習
I = [10 10 10 10;
10 10 10 10;
10 10 10 10];
f = [1 1 1;
1 1 1;
1 1 1];
J = filter2(f, I, 'same')
複製代碼
輸出是:spa
>> iFilter
J =
40 60 60 40
60 90 90 60
40 60 60 40
複製代碼
對輸入圖像補零, 第一行以前和最後一行以後都補M2 -1行,第一列以前和最後一列以後都補N2 - 1列, (注意filter2和conv2不支持其餘的邊界補充選項, 函數內部對輸入老是補零.3d
也就是補成以下:code
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 10 10 10 10 0 0
0 0 10 10 10 10 0 0
0 0 10 10 10 10 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
複製代碼
因此第一個40就是相關核與紅框內部分對應相乘而後結果求和所得, 也就是(0*1 + 0*1 + 0*1 + 0*1 + 10 *1 + 10 *1 + 0*1 + 10 *1 + 10 *1), 以後的就滑動相關核, 將相關核的中心位於圖像矩陣的每個元素.cdn
full的話, 就是將邊緣補全零的計算結果也一併輸出, 因此尺寸是(M1 + M2 - 1) X (N1 + N2 - 1)blog
J =
10 20 30 30 20 10
20 40 60 60 40 20
30 60 90 90 60 30
20 40 60 60 40 20
10 20 30 30 20 10
複製代碼
最後valid, 就是邊界補出的零參與運算的都捨去.ci
J =
90 90
複製代碼
和filter2最大的不一樣就是計算以前, 把卷積核旋轉180°. 因此, 若是卷積核旋轉180°和原來同樣, 那麼conv2和filter2的計算結果都是同樣的. 因此我這裏就修改一下算子. 能夠很明顯看到filter2的結果旋轉180°就是conv2的結果.string
I = [10 10 10 10;
10 10 10 10;
10 10 10 10];
f = [1 1 1;
1 1 1;
1 2 1];
J = filter2(f, I, 'same')
J = conv2(I, f, 'same')
複製代碼
J =
50 70 70 50
70 100 100 70
40 60 60 40
J =
40 60 60 40
70 100 100 70
50 70 70 50
複製代碼
J = imfilter(I, f, filtering_mode, boundary_options, size_options)
複製代碼
參數列表 | 選項 | 描述 |
---|---|---|
filtering_mode | ‘corr’ | 相關(默認) |
‘conv’ | 卷積 | |
boundary_options | X | 輸入圖像的邊界經過用值X值來填充擴展其默認值爲0 |
‘replicate’ | 複製外邊界值 | |
‘symmetric’ | 鏡像反射 | |
‘circular’ | 圖像大小經過將圖像當作是一個二維周期函數的一個週期來擴展 | |
size_options | ‘full’ | 輸出圖像的大小與被擴展圖像的大小相同 |
‘same’ | 輸出圖像的大小與輸入原始輸入圖像同樣(默認) |
這樣的話,
J = imfilter(I, f, 'corr', 0, 'same')
與J = filter2(f, I, 'same')
是等效的.
喜歡記得點贊或者關注哦, 有意見或者建議評論區見~