[OpenCV学习日记-java]-05-模糊

十年热恋 提交于 2020-01-25 04:53:01

模糊

模糊主要应用就是降低噪声

模糊属于线性滤波

例如颜色识别,如果不进行模糊操作,可能会误差很大


均值模糊

blur(Mat src, Mat dst, Size ksize)
blur(Mat src, Mat dst, Size ksize, Point anchor)
blur(Mat src, Mat dst, Size ksize, Point anchor, int borderType) 
  • src:表示输入图像
  • dst:输出图像
  • ksize:卷积核大小
  • anchor 卷积核中心位置
  • borderType:填充边缘类型

如果想要水平方向模糊或者垂直方向模糊,那么只需要把size对应的参数改成1

ksize = new Size(9,1)//水平方向模糊
ksize = new Size(1,9)//垂直方向模糊

专业术语也就这样,看不懂不要慌,会用就行…

下面插一张图 和 一段代码

你可以点击图片放大查看这三种模糊的区别
在这里插入图片描述
下面是代码

Mat m1 = Imgcodecs.imread("C:\\test\\256_256_t1.png" );
HighGui.imshow("原图",m1);

Mat s1 = new Mat();
Imgproc.blur(m1,s1,new Size(9,9));//均值模糊

Mat s3 = new Mat();
Imgproc.blur(m1,s3,new Size(9,1));//x(水平)方向模糊

Mat s4 = new Mat();
Imgproc.blur(m1,s4,new Size(1,9));//y(垂直)方向模糊

HighGui.imshow("均值模糊",s1);

HighGui.imshow("x",s3);
HighGui.imshow("y",s4);

高斯模糊

高斯模糊是越接近于卷积核中心的地方 权重越高、越接近于边缘的权重越低

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)
GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX, double sigmaY)
GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX, double sigmaY, int borderType)
  • src:表示输入图像
  • dst:输出图像
  • ksize:卷积核大小(当输入的是Size(0,0)的时候,自动从sigmaX计算)
  • sigmaX:X方向模糊程度
  • sigmaY:Y方向模糊程度(可以不填写,代表自动从X方向计算)
  • borderType:填充边缘类型

在这里插入图片描述

Mat m1 = Imgcodecs.imread("C:\\test\\256_256_t1.png" );
HighGui.imshow("原图",m1);

Mat s1 = new Mat();
Imgproc.blur(m1,s1,new Size(9,9));
Mat s2 = new Mat();
Imgproc.GaussianBlur(m1,s2,new Size(0,0),3);

HighGui.imshow("均值模糊",s1);
HighGui.imshow("高斯模糊",s2);

上一篇[OpenCV学习日记-java]-04-Mat对象通道与算术操作

下一篇[OpenCV学习日记-java]-06-统计排序滤波

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!