图像的锐化
Posted zhaobinyouth
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像的锐化相关的知识,希望对你有一定的参考价值。
1.图像锐化概念原理
- 图像锐化是一种突出和加强图像中景物的边缘和轮廓的技术。图像锐化的本质是
增加邻域间像素的差值
,使图像的突变部分变得更加明显。 - 图像的卷积计算除了可以完成模糊去噪、边缘检测等任务外,还可以实现图像锐化/增强的功能。一般也通过
Laplacian滤波加原图权重像素叠加锐化空间滤波器用来增强图像的突变信息,图像的细节和边缘信息
。 - 补充:低通滤波器和高通滤波器
- 平滑滤波器主要是使用邻域的均值(或者中值、积分)来代替模板中心的像素,消弱和邻域间的差别,以达到平滑图像和抑制噪声的目的;模糊图像,称为低通滤波器
- 锐化滤波器则使用邻域的微分作为算子,增大邻域间像素的差值,使图像的突变部分变的更加明显。锐化的作用是加强图像的边沿和轮廓,通常也成为高通滤波器:
2.opencv实现
图像锐化的本质是图像拉普拉斯滤波加原图权重像素叠加的输出:
拉普拉斯算子
- 当C值大于8时候表示图像锐化、越接近8表示锐化效果越好
- 当C值等于8时候图像的高通滤波
- 当C值越大,图像锐化效果在减弱、中心像素的作用在提升
代码
#include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; int main(int argc, char* argv[]) { Mat src = imread("yuan_test.png"); if (src.empty()) { printf("could not load image... "); return -1; } namedWindow("input", CV_WINDOW_AUTOSIZE); imshow("input", src); Mat sharpen_op = (Mat_<char>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); Mat result; filter2D(src, result, CV_32F, sharpen_op); convertScaleAbs(result, result); imshow("sharpen image", result); waitKey(0); return 0; } //version1.1
原图
锐化图
对比
可以明显看出锐化后的图比原图多了一些纹理细节元素
参考:
https://blog.csdn.net/PecoHe/article/details/95289957
https://blog.csdn.net/cyf15238622067/article/details/87859887
https://wx.zsxq.com/dweb2/index/group/551551828124?from=mweb&type=detail
以上是关于图像的锐化的主要内容,如果未能解决你的问题,请参考以下文章
图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码)