07- OpenCV:模糊图像

目录

一、模糊原理

二、模糊的相关处理方法:

1、均值滤波(归一化盒子滤波)

2、高斯滤波(正态分布的形状)

3、中值模糊

4、双边模糊算法(美容软件)

5、相关代码:

6、几种模糊算法的比较:


一、模糊原理

(1)Smooth/Blur 是图像处理中最简单和常用的操作之一

(2)使用该操作的原因之一就为了给图像预处理时候减低噪声(消除数字噪声)

指图像中不该出现的外来像素,通常由电子干扰产生。看起来就像图像被弄脏了,布满一些细小的糙点。

(3)使用Smooth/Blur操作其背后是数学的卷积计算

(4)通常这些卷积算子计算都是线性操作,所以又叫线性滤波

假设有6x6的图像像素点矩阵。(均值滤波的过程)

卷积过程:6x6上面是个3x3的窗口,从左向右,从上向下移动,黄色的每个像个像素点值之和取平均值赋给中心红色像素作为它卷积处理之后新的像素值。每次移动一个像素格。

二、模糊的相关处理方法:

1、均值滤波(归一化盒子滤波)

(1)公式:卷积和系数都是1

对应的图形大概是:没有高的也没有低的

(2)相关API:

 blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));

Filter2D也可以做模糊,自己定义一个kenel赋值进去。

(3)一般模糊用3*3模糊就行,主要控制x、y的值,要是x方向的模糊多一些,就加大数值,好像一个鬼影一样。

2、高斯滤波(正态分布的形状)

(1)公式:权重不一样

对应的图形大概是:

(2)相关API:

- GaussianBlur(Mat src, Mat dst, Size(11, 11), sigmax, sigmay);

其中Size(x, y), x, y 必须是正数而且是奇数

(3)效果:

看着高斯模糊比均值还要清晰一些。

高斯基于权重模糊,均值滤波基于均值模糊;

3、中值模糊

(1)中值滤波:统计排序滤器

(2)中值滤波对椒盐噪声有很好的抑制作用

(3)相关API:

medianBlur(Mat src, Mat dest, ksize)

备注:中值模糊的ksize大小必须是大于1而且必须是奇数。

(4)功效:比如一张图片有点点,人脸有斑点,就可以很好去掉这些斑点。(椒盐噪声)

4、双边模糊算法(美容软件)

(1)基于高斯双边模糊;

(2)相关API:

bilateralFilter(src, dest, d=15, 150, 3);

备注:

 1)15 –计算的半径,半径之内的像数都会被纳入计算,如果提供-1 则根据sigma space参数取值

 2)150 – sigma color 决定多少差值之内的像素会被计算

 3)3 – sigma space 如果d的值大于0则声明无效,否则根据它来计算d值

(3)功效:

双边模糊:边缘信息更多保留,轮廓更加明显,相当于加了滤镜、磨皮;

高斯模糊:整个图片都模糊了;

与filter2D比较,效果更加好,有美颜的效果;

5、相关代码:

(1)均值滤波、高斯模糊的接口例子

#include <opencv2/opencv.hpp> 
#include <iostream> 
using namespace cv;int main(int argc, char** argv) {Mat src, dst;src = imread("D:/vcprojects/images/test.png");if (!src.data) {printf("could not load image...\n");return -1;}char input_title[] = "input image";char output_title[] = "blur image";namedWindow(input_title, CV_WINDOW_AUTOSIZE);namedWindow(output_title, CV_WINDOW_AUTOSIZE);imshow(input_title, src);blur(src, dst, Size(11, 11), 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;
}

(2)中值滤波、双边模糊、高斯模糊、filter2D几个接口的应用。

#include <opencv2/opencv.hpp> 
#include <iostream> 
using namespace cv;int main(int argc, char** argv) {Mat src, dst;src = imread("D:/vcprojects/images/cvtest.png");if (!src.data) {printf("could not load image...\n");return -1;}namedWindow("input image", CV_WINDOW_AUTOSIZE);imshow("input image", src);//medianBlur(src, dst, 3);bilateralFilter(src, dst, 15, 100, 5);namedWindow("BiBlur Filter Result", CV_WINDOW_AUTOSIZE);imshow("BiBlur Filter Result", dst);Mat resultImg;Mat kernel = (Mat_<int>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);filter2D(dst, resultImg, -1, kernel, Point(-1, -1), 0);imshow("Final Result", resultImg);waitKey(0);return 0;}
6、几种模糊算法的比较:

(1)均值模糊无法克服边缘像素信息丢失缺陷。原因是均值滤波是基于平均权重

(2)高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同

(3)高斯双边模糊 – 是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变(美颜相机的算法)

这个图讲解:输入一个图,输出一个图,中间的是卷积核,分为:空域核和值域核;

                空域核指的是:在空间来说,3*3、5*5都有自己的权重;

                值域核:指像素集来说,对于像素集在一定的范围内,就模糊输出,2个图的差异,边缘还在保留的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/342041.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

docker常用指令

一、目录 docker 指令 1. 创建镜像 2. 保存镜像 3. 加载镜像 4. 删除容器 5. 删除镜像 6. 查看容器日志 7. 查看docker 占用内存情况 8. 查看docker 根目录(安装路径) 9. 创建一个容器 二、实现 docker指令 1 创建镜像 docker commit fd69960ed65f jyf&#xff1a;0.0.1保…

VM无法连接U盘

打开Ubuntu系统的文件夹 找到以 .vmx结尾的文件 搜索 usb.restrictions.defaultAllow的选项 讲 FALSE 改成 TRUE

提升测试效率,轻松并行运行测试——探秘Pytest插件pytest-xdist

在软件开发中&#xff0c;测试是确保代码质量的重要一环。然而&#xff0c;随着项目规模的增大&#xff0c;测试用例的数量也随之增多&#xff0c;测试的执行时间可能成为一个瓶颈。为了解决这个问题&#xff0c;Pytest提供了丰富的插件生态系统&#xff0c;其中 pytest-xdist …

对象存储MinIO的简介与部署

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 相关文章推荐&#xff1a; 记录一次跨越16个月的minio版本升级与数据迁移 MinIO集群怎么接入Prometheus监控&#xff1f;(上) Mi…

一个完整的流程表单流转

1.写在前面 一个完整的流程表单审批&#xff08;起表单-->各环节审批-->回退-->重新审批-->完成&#xff09;&#xff0c;前端由Vue2jsElement UI升级为Vue3tsElement Plus&#xff0c;后端流程框架使用Flowable&#xff0c;项目参考了ruoyi-vue-pro(https://gite…

【2024】OAK智能深度相机校准教程

编辑&#xff1a;OAK中国 首发&#xff1a;oakchina.cn 喜欢的话&#xff0c;请多多&#x1f44d;⭐️✍ 内容可能会不定期更新&#xff0c;官网内容都是最新的&#xff0c;请查看首发地址链接。 ▌前言 Hello&#xff0c;大家好&#xff0c;这里是OAK中国&#xff0c;我是Ash…

Dubbo的SPI机制

Dubbo SPI的基本工作流程&#xff1a; 加载扩展点配置&#xff1a;Dubbo SPI首先会加载所有的扩展点配置&#xff0c;这些配置通常是在META-INF/dubbo目录下的properties文件中定义的。每个配置文件的名称就是扩展点接口的全限定名&#xff0c;文件内容是扩展点实现的键值对&am…

1、理解Transformer:革新自然语言处理的模型

目录 一、论文题目 二、背景与动机 三、卖点与创新 四、解决的问题 五、具体实现细节 0. Transformer 架构的主要组件 1. 注意力、自注意力&#xff08;Self-Attention&#xff09;到多头注意力&#xff08;Multi-Head Attention&#xff09; 注意力到底是做什么的&…

Vue、uniApp、微信小程序、Html5等实现数缓存

此文章带你实现前端缓存&#xff0c;利用时间戳封装一个类似于Redis可以添加过期时间的缓存工具 不仅可以实现对缓存数据设置过期时间&#xff0c;还可以自定义是否需要对缓存数据进行加密处理 工具介绍说明 对缓存数据进行非对称加密处理 对必要数据进行缓存&#xff0c;并…

微信小程序开发学习笔记《7》全局配置以及小程序窗口

微信小程序开发学习笔记《7》全局配置以及小程序窗口 博主正在学习微信小程序开发&#xff0c;希望记录自己学习过程同时与广大网友共同学习讨论。全局配置官方文档 一、全局配置文件及常用的配置项 小程序根目录下的app.json 文件是小程序的全局配置文件。 常用的配置项如…

数据库期末复习重点总结

数据库期末复习重点总结 本文为总结&#xff0c;如有不对的地方请指针 第2章 关系模型的介绍 名称符号选择σ投影∏笛卡儿积连接并∪集差-交∩赋值<-更名ρ 除操作 设R和S除运算的结果为T&#xff0c;则T包含所有在R中但不在S中的属性和值&#xff0c;且T的元组与S的元…

C语言理解

目录 计算机语言算法C项目创建C程序框架经典实例 计算机语言 程序是用特殊的编程语言&#xff08;这里是C语言&#xff09;写出来表达如何解决问题的不是用编程语言来和计算机交谈&#xff0c;而是描述要求它如何做事情的过程或方法程序是问题的载体&#xff0c;程序的执行就是…