opencv学习笔记-线性空间滤波

来源:互联网 发布:金蝶免费进销存软件 编辑:程序博客网 时间:2024/06/01 08:08

还是会结合opencv和matlab进行学习。

1:一种线性滤波器——拉普拉斯滤波器

拉普拉斯的算子为,可以将拉普拉斯算子转化为与滤波模板相关的算子进一步可以得出拉普拉斯滤波的模板为0 1 0;1 -4 1; 0 1 0;的一个3x3的矩阵。matlab指令为:

可以看出,经过fspecial得出的模板和上文说的一样。最好将原图像转化为浮点类型,否则负值将会丢失经过,拉普拉斯的计算过滤的灰度图层为,这有点类似与边缘检测。然后从原始图像中减去拉普拉斯图像,就可以得到清晰的滤波图像如图。如果滤波模板为 1 1 1; 1 -8 1, 1 1 1.那么得到的图像将会更加清晰。其他的线性滤波,只需要改变fspecial中的参数,就可得到诸如均值滤波,高斯滤波的滤波模板,进一步处理。在opencv中,有很多滤波函数,均值滤波,高斯滤波,方框滤波,等都可以直接使用。下面贴出了一个均值滤波的简单实例,代码来源于<opencv3编程入门>一书。主要是通过blur函数实现。均值滤波主要是利用一个像素领域的均值来代替像素。模板是一个元素全部为1/(r*c)的矩阵。这样就实现了均值滤波。是方框滤波的特殊化形式。

#include <opencv2\opencv.hpp>using namespace cv;int main(){Mat image = imread("1.jpg");namedWindow("均值滤波【原图】");namedWindow("均值滤波【效果图】");imshow("均值滤波【原图】", image);Mat out;blur(image, out, Size(7, 7));imshow("均值滤波【效果图】", out);waitKey();return 0;}


0 0