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