OpenCV图像模糊原理
模糊操作是图像处理中最简单和常用的操作之一,使用该操作的原因之一就为了给图像预处理时减低椒盐噪声。 图像模糊,也称为平滑操作,是一种简单且经常使用的图像处理操作,平滑主要是能减少噪声。
要执行平滑操作,我们将对图像应用滤镜。最常见的滤波器类型是线性的,其中输出像素的值(即g(i ,j )被确定为输入像素值的加权和(即F(i + k ,j + l )):
文章图片
h (k ,l ) 被称为内核,它是过滤器的系数。它有助于将滤波器可视化为在图像上滑动的系数窗口。
f() 表示输入的一副图像;
i、j 表示输入图像的行和列;
h(k,l) 表示卷积算子(卷积核,也可以叫掩膜),它的大小可以设定;
k, l 系数的大小又可以叫窗口大小(掩膜的大小,比如3*3);
g() 表示输出的像素值;
f() 的第一行,第一列像素点无法进入卷积算子的红色中心区域,不能进行卷积计算,只能进行相应的边缘像素处理。
文章图片
文章图片
文章图片
假设把图像分解成6x6的图像像素点矩阵,卷积过程:
6x6图像上面有个3x3的卷积窗口,每次移动一个像素格,依次从左向右,从上向下移动,红色中心点的位置依次移动,黄色的每个像个像素点值之和,取平均值赋给中心红色像素点,作为它卷积处理之后新的像素值。
一.归一化盒子滤波(均值滤波)
【opencv|OpenCV图像学习八,图像归一化盒子滤波处理和图像高斯滤波处理实现】
文章图片
API函数接口
blur(Mat src,Mat dst,Size(w,h),Point(-1,-1));
归一化过滤器是最简单的,每个输出像素是其内核邻居的平均值(所有这些像素都具有相同的权重)
参数说明:
src : 源输入图像
dst : 目标图像
Size() : 定义要使用的内核的大小(宽度为w像素,高度为h像素)
Point : 表示锚点(被评估的像素)相对于邻域的位置。如果存在负值,则将内核的中心视为锚点
二.高斯滤波器 (Gaussian Filter)
高斯滤波器是最有用的过滤器。通过将输入数组中的每个点与高斯卷积核核进行卷积,然后将它们相加以产生输出数组来完成高斯滤波。
文章图片
API 函数接口
GaussianBlur(Mat src,Mat dst,Size(w,h),sigmax,sigmay)
src:输入源图像
dst:目标图像
Size(w,h) : 要使用的内核的大小。w 和H必须是奇数和正数,否则将使用σX和σ?参数计算大小。
sigmax : x中的标准差。写0表示使用内核大小计算σx
sigmay : y的标准差。写0表示使用内核大小计算σy。
===============================================================
代码实现:
#include"stdafx.h"
#include
#include
using namespace cv;
int main(int argc, char** argv)
{
Mat src, dst;
src = https://www.it610.com/article/imread("F:/photo/qx.jpg");
if (!src.data)
{
printf("could not load image");
return -1;
}
char input_title[] = "input image";
char output_title[] = "blur image";
namedWindow(input_title, 1);
namedWindow(output_title, 1);
imshow(input_title, src);
blur(src, dst, Size(5, 5), Point(-1, -1));
imshow(output_title, dst);
Mat gblur;
GaussianBlur(src, gblur, Size(11, 11), 11, 11);
imshow("gaussian blur", gblur);
waitKey(0);
return 0;
}
=================================================================
图像处理效果:
文章图片
推荐阅读
- C++|OpenCV图像处理学习十,图像的形态学操作——膨胀腐蚀
- opencv|OpenCV图像处理学习七,利用回调函数setMouseCallback和鼠标响应处理函数onMouse实现ROI感兴趣区的提取
- 论文笔记|论文主要要点记录《Rethinking BiSeNet For Real-time Semantic Segmentation》
- 带你玩转人工智能|【深度学习实践(四)】识别验证码
- JavaScript|神经网络之智能科学与技术专业
- webrtc|webrtc 编译环境搭建
- C++|C++ 【类和对象: 初始化列表,Static成员 --3】
- C++|【C++】new/delete对象过程
- 毕业设计|【毕业设计】opencv+python+深度学习 实现公式识别