码迷,mamicode.com
首页 > 其他好文 > 详细

锐化空间滤波器

时间:2016-03-27 01:55:42      阅读:360      评论:0      收藏:0      [点我收藏+]

标签:

锐化处理主要目的是突出灰度过度部分。
技术分享
技术分享

二阶微分-拉普拉斯算子锐化

两变量的离散拉普拉斯算子是:
技术分享

void laplaceSharpenl(){
    auto im = imread("/Users/qixiangzhang/Desktop/openCV/jy.png");
    Mat dst;
    Mat kernel = (Mat_<float>(3,3) << 0,-1,0,-1,5,-1,0,-1,0);
    filter2D(im, dst, im.depth(), kernel);
    imshow("Original", im);
    imshow("Sharpenl", dst);
}

结果:
技术分享
标定的拉普拉斯滤波图像:
拉普拉斯滤波处理后图像中既有正值又有负值,所有负值被修剪为0,很多经过拉普拉斯滤波后的图像大部分是黑色的。典型的标定拉普拉斯图像的方法是对他的最小值加一个新的代替0的最小值。


非锐化掩蔽和高提升滤波

非锐化掩蔽的处理步骤:
1)模糊原图像。
2)从原图中减去模糊的图像得到模板。
3)将模板加到原图像上。
公式描述:
技术分享
技术分享

代码:

void Unsharp(){
    auto im = imread("/Users/qixiangzhang/Desktop/openCV/yq.png");
    Mat dstIm_9;
    blur(im, dstIm_9, Size(9,9));//模糊
    imshow("Original",im);
    imshow("blur9", dstIm_9);
    Mat sub;
    absdiff(im,dstIm_9,sub);//相减
    Mat add;
    scaleAdd(im, 1, sub, add);//相加,非锐化掩蔽
    imshow("k=1",add);
    scaleAdd(im, 2, sub, add);//k=2,高提升滤波
    imshow("k=2",add);
}

技术分享


梯度图像

梯度图像可理解为突出图像显著变化的地方,变化越大其梯度值越高。
图像函数f(x,y)在点(x,y)的梯度是一个具有大小和方向的矢量,设为Gx 和 Gy 分别表示x方向和y方向的梯度,这个梯度的矢量可以表示为:
技术分享
这个矢量的幅度为:
技术分享
近似为:
技术分享

罗伯特交叉梯度算子
算子:
技术分享
由两个2*2模板组成,用卷积模板表示为:
技术分享
结合技术分享可得结果:
技术分享

Soble算子
算子:
技术分享
用上述方法可得:
技术分享
其中z表示矩阵中该位置的值。
opencv接口:

CV_EXPORTS_W void Sobel( InputArray src, OutputArray dst, int ddepth,  
                         int dx, int dy, int ksize=3,  
                         double scale=1, double delta=0,  
                         int borderType=BORDER_DEFAULT );  

代码

void sobleIM(){
    auto src = imread("/Users/qixiangzhang/Desktop/openCV/yq.png");
    imshow("1",src);
    //用高斯滤波进行模糊
    GaussianBlur( src, src, Size(3,3), 0, 0, BORDER_DEFAULT );

    Mat grad_x,grad_y;
    Mat abs_grad_x,abs_grad_y;
    //计算x梯度
    Sobel(src, grad_x, CV_8U, 1, 0);
    convertScaleAbs( grad_x, abs_grad_x );
    //计算y梯度
    Sobel(src, grad_y, CV_8U, 1, 0);
    convertScaleAbs( grad_y, abs_grad_y );
    //相加并加权。
    addWeighted( abs_grad_x, 1, abs_grad_y, 1, 0, src );
    imshow("soble1",src);

    addWeighted( abs_grad_x, 2, abs_grad_y, 2, 0, src );
    imshow("soble2",src);
}

结果:
技术分享

锐化空间滤波器

标签:

原文地址:http://blog.csdn.net/zhangqixiang5449/article/details/50987416

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!