文章目录
- 一、介绍
- 二、举例
- 1.原始素材
- 2.代码
- 3.运行结果
一、介绍
前面几篇讲的是图像平滑,就是抑制或消除噪声,并使得图像亮度及颜色变化更平缓的操作。在图像处理领域,与平滑操作相对应的,叫图像锐化。
图像锐化就是增强图像的边缘和细节部分,使图像变得清晰。它分为空间域处理和频域处理两类,空间领域相对简单,也是利用滤波核生成新的图像。频率域滤波会涉及到傅里叶函数应用,相对来说更难以理解。
下面将连续介绍几种图像锐化的常见方法,这篇文章先讲Laplacian(拉普拉斯)算子锐化,这是一个最基础、最常用的方法。它其实就是利用了前面介绍的Filter2D()函数进行卷积,但是卷积核是有特殊要求的。具体的含义我也不清楚,读者可以看看网上的相关说明,这里举一个简单的例子,以3 * 3大小的滤波核为例,常见的拉普拉斯算子是这样的:
二、举例
1.原始素材
原始素材定义为srcMat,如下:
这是个电影里的镜头,下面看一下锐化效果。
2.代码
Laplacian(拉普拉斯)算子锐化的代码如下:
int ksize = 11;
int[,,] date = new[,,]
{{{ -1 },{ -1 },{ -1 }},{{ -1 },{ ksize },{ -1 }},{{ -1 },{ -1 },{ -1 }}
};
Mat tempMat = srcMat.Clone();
Mat dstMat = new Mat(tempMat.Size, tempMat.Depth, tempMat.NumberOfChannels);
Image<Gray, int> kernel = new Image<Gray, int>(date);
CvInvoke.Filter2D(tempMat, dstMat, kernel, new System.Drawing.Point(-1, -1));
3.运行结果
锐化效果非常棒,是不是有一种从黑夜到白天的效果。
注意:Emgu CV里面有个Laplacian()函数,这个可不是锐化用的,而是检测边缘用的,概念要分清除。
原创不易,请勿抄袭。共同进步,相互学习。