卷積計(jì)算過程和步驟 圖像處理為何要有卷積運(yùn)算?
圖像處理為何要有卷積運(yùn)算?由于圖像中含有大量的冗余信息,視覺和圖像的識(shí)別是由許多特定的邊緣信息來完成的。人眼看到的圖像是由無數(shù)小塊織成的。受此啟發(fā),人們發(fā)現(xiàn)卷積可以更好地提取圖像的邊緣信息,去除那些冗
圖像處理為何要有卷積運(yùn)算?
由于圖像中含有大量的冗余信息,視覺和圖像的識(shí)別是由許多特定的邊緣信息來完成的。人眼看到的圖像是由無數(shù)小塊織成的。受此啟發(fā),人們發(fā)現(xiàn)卷積可以更好地提取圖像的邊緣信息,去除那些冗余的東西,并通過特定的卷積來提取特定的邊緣,就像人眼一樣,圖像信息是通過局部感知來提取的。卷積運(yùn)算應(yīng)用于圖像處理,有其生物學(xué)的理論基礎(chǔ),可以說是仿生學(xué)較為成功的應(yīng)用。
卷積運(yùn)算是什么?
最近,我一直在研究圖像處理和卷積運(yùn)算,但我認(rèn)為它太復(fù)雜,寫不出來。在這里,我將簡(jiǎn)單介紹卷積計(jì)算過程。
假設(shè)有一個(gè)卷積核h,一般是一個(gè)3*3的矩陣:
有一個(gè)要處理的矩陣X:
h*X的計(jì)算過程分為三步
第一步是將卷積核翻轉(zhuǎn)180度,也就是說,第二步是將卷積核h的中心與X的第一個(gè)元素對(duì)齊,然后將相應(yīng)的元素相乘相加,如果沒有元素,則加0。
這樣,Y中第一個(gè)元素的值是Y11=1*0 2*0 1*0 0*0 0*1 0*2-1*0-2*5-1*6=-16
在第三步中,每個(gè)元素都這樣計(jì)算得到一個(gè)輸出矩陣,它是卷積的結(jié)果
這樣就省去了其他過程。
最終結(jié)果
注意:這里我用0完成原始矩陣,但我們不一定選擇0。在OpenCV的cvfilter2d函數(shù)中,沒有使用0來完成矩陣,而是使用了邊復(fù)制方法。接下來介紹OpenCV的cvfilter2d函數(shù)的卷積運(yùn)算過程。
矩陣的卷積怎么計(jì)算?
卷積定理指出函數(shù)卷積的傅里葉變換是函數(shù)傅里葉變換的積。也就是說,一個(gè)域中的卷積等價(jià)于另一個(gè)域中的積。例如,時(shí)域中的卷積對(duì)應(yīng)于頻域中的乘積。F(g(x)*F(x))=F(g(x))F(F(x)),其中F表示傅里葉變換。這一原理也適用于傅里葉變換的各種變體,如拉普拉斯變換、雙邊拉普拉斯變換、z變換、梅林變換和哈特利變換(參見梅林逆定理)。在調(diào)和分析中,它也可以推廣到定義在局部緊阿貝爾群上的傅里葉變換。卷積定理可以簡(jiǎn)化卷積的計(jì)算。對(duì)于長度為N的序列,根據(jù)卷積的定義,需要進(jìn)行2N-1組位乘法,其計(jì)算復(fù)雜度為;采用傅立葉變換將序列變換到頻域后,只需進(jìn)行一組位乘法,采用傅立葉變換的快速算法后,總計(jì)算復(fù)雜度為。這個(gè)結(jié)果可用于快速乘法。