卷積運(yùn)算是圖像處理和增強(qiáng)中經(jīng)常遇到的一種算法。由于很多優(yōu)秀的開(kāi)源算法都是采用matlab編寫(xiě)的,在我改寫(xiě)為c語(yǔ)言的時(shí)候就必然會(huì)遇到改寫(xiě)卷積算法的問(wèn)題。在matlab中,卷積可以由imfilter來(lái)實(shí)現(xiàn),在opencv中則是由filter2D來(lái)實(shí)現(xiàn)。它們之間的具體轉(zhuǎn)化過(guò)程是什么?我通過(guò)一系列實(shí)驗(yàn)來(lái)研究。
一、實(shí)驗(yàn)準(zhǔn)備
為了方便觀察,仍然是采用分開(kāi)來(lái)研究的方法。1)是輸入數(shù)字作為卷積內(nèi)容,直接觀察結(jié)果;2)是采用小塊圖片作為卷積內(nèi)容,仍然是比較結(jié)果;3)是采用真實(shí)的圖片和真實(shí)的卷積核作為輸入,對(duì)比最后處理圖片的效果。
那么,首先需要了解的就是在matlab中和opencv中如何將矩陣的內(nèi)容進(jìn)行比對(duì)?
在matlab中可以直接打印到矩陣變量中去,而在opencv中可以這樣直接打印到屏幕上面。然后將兩者在matlab中做減法,直觀地比較最后的結(jié)果。
二、過(guò)程
1)是輸入數(shù)字作為卷積內(nèi)容
int _tmain(int argc, _TCHAR* argv[])
{
//filter2d的卷積方法
printf( "filter2d的卷積方法\n");