影象處理中的卷積與模板
1.使用模板處理影象相關概念:
模板:矩陣方塊,其數學含義是一種卷積運算。
卷積運算:可看作是加權求和的過程,使用到的影象區域中的每個畫素分別與卷積核(權矩陣)的每個元素對應相乘,所有乘積之和作為區域中心畫素的新值。
卷積核:卷積時使用到的權,用一個矩陣表示,該矩陣與使用的影象區域大小相同,其行、列都是奇數,是一個權矩陣。
卷積示例:
假設3 * 3的畫素區域R與卷積核G分別為:
則卷積運算為:
R5(中心畫素)=R1G1 + R2G2 + R3G3 + R4G4 + R5G5 + R6G6 + R7G7 + R8G8 + R9G9
2、使用模板處理影象時涉及到的問題:
邊界問題:當處理影象邊界畫素時,卷積核與影象使用區域不能匹配,卷積核的中心與邊界畫素點對應,卷積運算將出現問題。
處理辦法:
A.忽略邊界畫素,即處理後的影象將丟掉這些畫素。
B.保留原邊界畫素,即copy邊界畫素到處理後的影象。
3、常用模板:
(a)低通濾波器
(b)高通濾波器
(c)平移和差分邊緣檢測
(d)匹配濾波邊緣檢測
(e)邊緣檢測
(f)梯度方向邊緣檢測
4、我們來看一下一維卷積的概念.
卷積(convolution,另一個通用名稱是德文的Faltung)的名稱由來,是在於當初定義它時,定義成integ(f1(v)*f2(t-v))dv,積分割槽間在0到t之間。舉個簡單的例子,大家可以看到,為什麼叫“卷積”了。比方說在(0,100)間積分,用簡單的辛普生積分公式,積分割槽間分成100等分,那麼看到的是f1(0)和f2(100)相乘,f1(1)和f2(99)相乘,f1(2)和f2(98)相乘,.........等等等等,就象是在座標軸上回卷一樣。所以人們就叫它“回捲積分”,或者“卷積”了。
連續空間的卷積定義是f(x)與g(x)的卷積是f(t-x)g(x)在t從負無窮到正無窮的積分值.t-x要在f(x)定義域內,所以看上去很大的積分實際上還是在一定範圍的.
實際的過程就是f(x)先做一個Y軸的反轉,然後再沿X軸平移t就是f(t-x),然後再把g(x)拿來,兩者乘積的值再積分.想象一下如果g(x)或者f(x)是個單位的階越函式.那麼就是f(t-x)與g(x)相交部分的面積.這就是卷積了.
卷積運算滿足交換律,也就是說:f與g進行卷積完全等於g與f進行卷積。
由兩個函式f和g進行卷積而得到的函式f*g,一般要比原來的f和g都要光滑。所以在影象處理中對影象進行卷積後會使原影象模糊。因為卷積具有平滑作用。
有趣的是,如果把兩個人的照片互相進行卷積,所得到的照片,就同時和這兩個人都很相像。
把積分符號換成求和就是離散空間的卷積定義了.
那麼在影象中卷積是什麼意思呢,就是影象就是影象f(x),模板是g(x),然後將模版g(x)在模版中移動,每到一個位置,就把f(x)與g(x)的定義域相交的元素進行乘積並且求和,得出新的影象一點,就是被卷積後的影象.模版又稱為卷積核.卷積核做一個矩陣的形狀。
5、卷積運算時的核函式
在Matlab中,對影象進行卷積運算時,都要先得到一個核函式,其實就是模板。其函式呼叫是:
>> G=fspecial('gaussian',5,0.5)
G =
0.0000 0.0000 0.0002 0.0000 0.0000
0.0000 0.0113 0.0837 0.0113 0.0000
0.0002 0.0837 0.6187 0.0837 0.0002
0.0000 0.0113 0.0837 0.0113 0.0000
0.0000 0.0000 0.0002 0.0000 0.0000
>> G=fspecial('gaussian',5,1.5)
G =
0.0144 0.0281 0.0351 0.0281 0.0144
0.0281 0.0547 0.0683 0.0547 0.0281
0.0351 0.0683 0.0853 0.0683 0.0351
0.0281 0.0547 0.0683 0.0547 0.0281
0.0144 0.0281 0.0351 0.0281 0.0144
能夠看出來,fspesial()函式的第一個引數表示返回高斯核函式(低通濾波器、模板等名稱其實都一樣)。第二個引數“5”表示該模板的大小,是5X5的矩陣。第三個引數是sigma了。