OpenCV学习第九篇:图像模糊(卷积)
程序员文章站
2022-07-15 23:31:22
...
模糊原理:
Smooth/Blur是图像处理中最简单和常用的操作之一
使用该操作的原因之一就为了给图像预处理时候减低噪声
使用Smooth/Blur操作其背后是数学的卷积计算
通常这些卷积算子计算都是线性操作,所以又叫线性滤波
假设6x6的图像像素点矩阵
黄色3x3区域代表算子
卷积过程:
6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像素点值之和取平均值赋给中心红色像素作为它卷积处理之后新的像素值,每次移动一个像素格!
均值模糊:
-blur(Mat src,Mat dst,Size(xradius,yradius),Point(-1,-1));
高斯模糊:
-GaussianBlur(Mat src,Mat dst,Size(11,11),sigmax,sigmay);
其中Size(x,y),x,y必须是正数而且是奇数
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;
int main(int argc,char** argv) {
Mat src, dst;
src = imread("F:/识图/645-140GG51041.JPG");
if (src.empty()) {
printf("could not found image!");
return -1;
}
char input_title[] = "input image";
char output_title[] = "output image";
namedWindow(input_title, CV_WINDOW_AUTOSIZE);
namedWindow(output_title, CV_WINDOW_AUTOSIZE);
imshow(input_title, src);
//均值模糊
blur(src, dst, Size(15, 15), Point(-1, -1));
Mat gblur;
//高斯模糊
GaussianBlur(src, gblur, Size(11, 11), 11, 11);
imshow("Gaussian blur", gblur);
imshow(output_title, dst);
waitKey(0);
return 0;
}
这里是效果:
推荐阅读
-
Java编程实现高斯模糊和图像的空间卷积详解
-
Python数据挖掘(烟火图像分类:传统机器学习建模方法与卷积神经网络性能比较)
-
Python数据挖掘(烟火图像分类:传统机器学习建模方法与卷积神经网络性能比较)
-
荐 opencv进阶学习笔记3:像素运算和图像亮度对比度调节
-
荐 opencv进阶学习笔记2:numpy操作图像,色彩空间,查找指定颜色范围,通道分离与合并
-
Opencv+Python实现图像运动模糊和高斯模糊的示例
-
OpenCV与图像处理学习二——图像基础知识(下)
-
OpenCV学习第九篇:图像模糊(卷积)
-
图像预处理之opencv卷积/滤波api
-
【OpenCV学习笔记 024】Stitcher类实现全景图像拼接