二者基本相似,在進行 圖像匹配是一個非常重要的方法。
相關是濾波器模板移過圖像並計算計算每個位置乘積之和的處理
卷積的機理相似,但濾波器首先要旋轉180度
相關的計算步驟:
(1)移動相關核的中心元素,使它位於輸入圖像待處理像素的正上方
(2)將輸入圖像的像素值作為權重,乘以相關核
(3)將上面各步得到的結果相加做為輸出
卷積的計算步驟:
(1)卷積核繞自己的核心元素順時針旋轉180度
(2)移動卷積核的中心元素,使它位於輸入圖像待處理像素的正上方
(3)在旋轉后的卷積核中,將輸入圖像的像素值作為權重相乘
(4)第三步各結果的和做為該輸入像素對應的輸出像素
超出邊界時要補充像素,一般是添加0或者添加原始邊界像素的值
可以看出他們的主要區別在於計算卷積的時候,卷積核要先做旋轉。
而計算相關過程中不需要旋轉相關核。
離散單位沖擊:我們將包含單個1而其余全是0的函數成為離散單位沖擊。重要性質:一個函數與離散單位沖擊相關,在沖擊位置產生這個函數的一
個翻轉版本。
f 函數
w 濾波器模板
eg:
f(x,y)
0 0 0 0 0
0 0 0 0 0
0 0 1 0 0
0 0 0 0 0
0 0 0 0 0
w(x,y)
1 2 3
4 5 6
7 8 9
相關 f*w =
0 0 0 0 0
0 9 8 7 0
0 6 5 4 0
0 3 2 1 0
0 0 0 0 0
卷積f*w=
0 0 0 0 0
0 1 2 3 0
0 4 5 6 0
0 7 8 9 0
0 0 0 0 0
相關的用途:圖象的匹配
假如函數f中存在w的一個復制版本,即f:
0 0 0 0 0
0 1 2 3 0
0 4 5 6 0
0 7 8 9 0
0 0 0 0 0
f*w是多少呢?讀者也自己算吧。
9 26 50 38 21
42 94 154 106 54
90 186 285 186 90
54 106 154 94 42
21 38 50 26 9
是不是會發現w與f中w的復制版本重合時,該點的值最大。最大值為
1^2+2^2+……+9^2 = 285
這就是用相關進行圖像匹配的基本原理。當然了,在圖像匹配時還要進行
相關函數的歸一化等操作。
matlab源代碼:
%函數f f = [0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0]; %濾波器模板 w = [1 2 3 4 5 6 7 8 9]; %卷積 ff = conv2(f,w,'same') %相關 ff2 = imfilter(f,w) %圖像匹配的基本原理 f2 = [ 0 0 0 0 0 0 1 2 3 0 0 4 5 6 0 0 7 8 9 0 0 0 0 0 0]; ff3 = imfilter(f2,w)