目录
实现原理
代码实现
结果
图像锐化(image sharpening)是补偿图像的轮廓,增强图像的边缘及灰度跳变的部分,使图像变得清晰,分为空间域处理和频域处理两类。图像锐化是为了突出图像上地物的边缘、轮廓,或某些线性目标要素的特征。这种滤波方法提高了地物边缘与周围像元之间的反差,因此也被称为边缘增强。
锐化可通过拉普拉斯算子实现。拉普拉斯算子作为一个常见的二阶微分算子,放在二维图像中可以表示为:
其x方向相当于:获取x+1点和x点的差值d1,获取x点和x-1点的差值d2,然后d1-d2。
y方向同理。
function.h
#pragma once
#include
#include
#include
#include
#include
using namespace cv;
using namespace std;
Mat Sharpen(Mat input, int percent, int type);
function.cpp
#include "function.h"
Mat Sharpen(Mat input, int percent, int type)
{
Mat result;
Mat s = input.clone();
Mat kernel;
switch (type)
{
case 0:
kernel = (Mat_(3, 3) <<
0, -1, 0,
-1, 4, -1,
0, -1, 0
);
case 1:
kernel = (Mat_(3, 3) <<
-1, -1, -1,
-1, 8, -1,
-1, -1, -1
);
default:
kernel = (Mat_(3, 3) <<
0, -1, 0,
-1, 4, -1,
0, -1, 0
);
}
filter2D(s, s, s.depth(), kernel);
result = input + s * 0.01 * percent;
return result;
}
main.cpp
#include
#include
#include
#include
#include
#include "function.h"
using namespace cv;
using namespace std;
int main()
{
Mat scr = imread("F:\\picture\\江.jpg");
Mat res = Sharpen(scr, 50, 0);
imshow("原图", scr);
imshow("处理后", res);
waitKey(0);
return 0;
}
![]() |
![]() |
![]() |
如果以上内容对你有所帮助,不妨点个赞,感谢观看!