图像的锐化

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(附代码)

Python图像锐化及边缘检测(RobertsPrewittSobelLapllacianCannyLOG)

MATLAB-图像锐化(空域与频域)

MATLAB-图像锐化(空域与频域)

MATLAB-图像锐化(空域与频域)

MATLAB-图像锐化(空域与频域)