经常投诉网站快照,网站换模板对seo,seo顾问招聘,台州网站制作开发文章目录 一、同态滤波大体原理二、代码三、效果举例 一、同态滤波大体原理 
之前介绍的几个锐化、增强方法#xff0c;包括更早之前介绍的图像模糊方法#xff0c;都是基于空间域进行处理#xff0c;也就是直接对目标点周边像素值进行各种数学运算。而这篇文章提到的同态滤… 文章目录 一、同态滤波大体原理二、代码三、效果举例 一、同态滤波大体原理 
之前介绍的几个锐化、增强方法包括更早之前介绍的图像模糊方法都是基于空间域进行处理也就是直接对目标点周边像素值进行各种数学运算。而这篇文章提到的同态滤波就要更厉害了是基于频率域的要用到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));
ImageGray, double filterImage  filter.ToImageGray, 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如下  还是这张夜晚天桥的照片执行上述代码同态滤波增强后的图像如下  
同态滤波就是灰度增强使图形明亮更均匀而且明亮处的纹理保留的很好。代码执行起来速度很快效果也很好值得有兴趣的同学们去研究研究。再举个例子加深印象如下  原创不易请勿抄袭。共同进步相互学习。