文章目錄
- 一、同態濾波大體原理
- 二、代碼
- 三、效果舉例
一、同態濾波大體原理
之前介紹的幾個銳化、增強方法,包括更早之前介紹的圖像模糊方法,都是基于空間域進行處理,也就是直接對目標點周邊像素值進行各種數學運算。而這篇文章提到的同態濾波,就要更厲害了,是基于頻率域的,要用到Dft()傅里葉變換函數。
高等數學比較好的讀者可能很好理解,我看了半天也沒明白是什么意思,下面都是我自己的理解,可能有錯的啊。傅里葉變換是一個非常厲害的操作,圖像的原始表達方式是 m * n個像素點組合,這個叫空間域,空間域大小就是m * n,轉成頻率域呢,用處就大了,因為高頻的就是噪聲或者物體邊緣,低頻的就是圖像內比較平緩的部位,比如藍天、純色背景、雪地等等。因為有了高低頻,就可以提取出邊緣、噪聲來,進一步就可以對邊緣、噪聲進行有針對性的處理。
通過傅里葉轉換,在頻率域內對圖像進行處理,也是很重要、很有效的一種辦法,屬于比較高級的應用,很值得用一大章來仔細講解,可惜我不會,就免了吧。
二、代碼
網上有很對專家利用OpenCV 實現同態濾波,原理也講了不少,讀者們可以去找找。我這里也是根據他們的原始代碼,轉換成Emgu CV + C#的形式來實現,代碼如下:
Mat dstMat = new Mat();// 1、log變換,將源圖像轉為float類型 然后進行log變換
Mat gray = srcMat.Clone();// CvInvoke.Resize(gray, gray, new System.Drawing.Size(1280, 720), 0, 0, Inter.Linear);
CvInvoke.CvtColor(gray, gray, ColorConversion.Bgr2Gray);
Mat f = new Mat();
gray.ConvertTo(f, DepthType.Cv32F, 1 / 255.0);
f += 0.1;
CvInvoke.Log(f, f);// 2、傅里葉變換
Mat fourierMat = new Mat();
CvInvoke.Dft(f, fourierMat, DxtType.Forward, 0);// 3、構造一個高斯頻域高通濾波器
Mat filter = new Mat(fourierMat.Rows, fourierMat.Cols, DepthType.Cv32F, 1);
filter.SetTo(new MCvScalar(0, 0, 0));
Image<Gray, double> filterImage = filter.ToImage<Gray, double>();
for (int y = 0; y < filter.Rows; y++)
{for (int x = 0; x < filter.Cols; x++){int xx = x > filter.Cols / 2 ? x - filter.Cols : x;int yy = y > filter.Rows / 2 ? y - filter.Rows : y;double duv = Math.Sqrt((xx * xx) + (yy * yy));double d0 = 3;double huv = ((1.0 - 0.4) * (1 - Math.Pow(2.71828, -1 * (duv * duv / (d0 * d0))))) + 0.4;filterImage.Data[y, x, 0] = huv;}
}filter = filterImage.Mat;
filter.ConvertTo(filter, DepthType.Cv32F);// 4、濾波,將傅里葉變換過后的圖像與濾波器相乘:
CvInvoke.Multiply(fourierMat, filter, fourierMat, 1); // 相乘后,最大值255,最小值0// 5、傅里葉逆變換,指數變換(圖像還原)
CvInvoke.Dft(fourierMat, dstMat, DxtType.InvScale, 0);
CvInvoke.Exp(dstMat, dstMat);
dstMat -= 0.1;// 6、顯示
CvInvoke.Imshow("Destination image,methord 2, " + dstMat.Size.ToString(), dstMat);
不要問為什么,因為我也看不懂,對于頻率域操作,代碼能跑起來就是萬幸了。
三、效果舉例
原始素材定義為srcMat,如下:
還是這張夜晚天橋的照片,執行上述代碼,同態濾波增強后的圖像如下:
同態濾波就是灰度增強,使圖形明亮更均勻,而且明亮處的紋理保留的很好。代碼執行起來速度很快,效果也很好,值得有興趣的同學們去研究研究。再舉個例子加深印象,如下:
原創不易,請勿抄襲。共同進步,相互學習。