OpenCV---模糊操作
推文:图像平滑处理(归一化块滤波、高斯滤波、中值滤波、双边滤波)
推文:图像的平滑与滤波
模糊操作
三种模糊操作方式
均值模糊
中值模糊
自定义模糊(可以实现上面两种模糊方式)
原理:
图像处理:基础(模板、卷积运算)
图像处理-模板、卷积的整理
基于离散卷积
定义好每个卷积核
不同卷积核得到不同的卷积效果
模糊是卷积的一种表象

一:均值模糊blur
def blur_demo(image): #均值模糊
dst = cv.blur(image,(,)) #ksize是卷积核大小1行3列,列数越大模糊越大
cv.imshow("blur_demo",dst)
opencv有一个专门的平均滤波模板供使用–归一化卷积模板,所有的滤波模板都是使卷积框覆盖区域所有像素点与模板相乘后得到的值作为中心像素的值。
Opencv中均值模板可以用cv2.blur和cv2.boxFilter,比如一个3*3的模板其实就可以如下表示:

模板大小是m*n是可以设置的。如果你不想要前面的1/,可以使用非归一化的模板cv2.boxFilter。

二:中值模糊mediaBlur
中值滤波模板就是用卷积框中像素的中值代替中心值,达到去噪声的目的。
这个模板一般用于去除椒盐噪声。
前面的滤波器都是用计算得到的一个新值来取代中心像素的值,而中值滤波是用中心像素周围(也可以使他本身)的值来取代他,卷积核的大小也是个奇数。
def median_blur_demo(image): #中值模糊,对于椒盐噪声的去噪效果好,去掉图片中的一些黑点等
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
for i in range(): # 添加点噪声,白色
temp_x = np.random.randint(, gray.shape[])
temp_y = np.random.randint(, gray.shape[])
gray[temp_x][temp_y] = cv.imshow("median_blur_gray", gray)
dst = cv.medianBlur(gray,) #ksize是卷积核大小1行3列,列数越大模糊越大
cv.imshow("median_blur_demo",dst)

可以看到中值滤波对于这些白点噪声的去除是非常的好的。
三:自定义模糊filter2D(上面是封装在2D滤波器之上)
图像滤波函数imfilter函数的应用及其扩展
Opencv提供的一个通用的2D滤波函数为cv2.filter2D(),
滤波函数的使用需要一个核模板,对图像的滤波操作过程为:将和模板放在图像的一个像素A上,求与之对应的图像上的每个像素点的和,
核不同,得到的结果不同,而滤波的使用核心也是对于这个核模板的使用,需要注意的是,该滤波函数是单通道运算的,
也就是说对于彩色图像的滤波,需要将彩色图像的各个通道提取出来,对各个通道分别滤波才行。
(1)实现中值模糊
def custom_blur_demo(image): #自定义模糊
kernel = np.ones([,],np.float32)/ #声明二维数组5*,初始化1,保证值不溢出,除以数组大小,实现中值模糊 自定义卷积核的算子
dst = cv.filter2D(image,-,kernel)
cv.imshow("custom_blur_demo",dst)
上述生成的5*5核模板其实就是一个均值滤波。,当我们是/25就是中值滤波,归一化处理
(2)实现锐化处理
def custom_blur_demo(image): #自定义模糊
kernel = np.array([[,-,],[-,,-],[,-,]],np.float32) #实现锐化处理,提高图像的对比度,提高立体感,轮廓更加清晰
dst = cv.filter2D(image,-,kernel)
cv.imshow("custom_blur_demo",dst)

OpenCV---模糊操作的更多相关文章
- Python+OpenCV图像处理(七)—— 滤波与模糊操作
过滤是信号和图像处理中基本的任务.其目的是根据应用环境的不同,选择性的提取图像中某些认为是重要的信息.过滤可以移除图像中的噪音.提取感兴趣的可视特征.允许图像重采样等等.频域分析将图像分成从低频到高频 ...
- opencv python:模糊操作
均值模糊 中值模糊 自定义模糊 模糊操作的基本原理 基于离散卷积 定义好每个卷积核 不同卷积核得到不同的卷积效果 模糊是卷积的一种表象 blur cv2.blur(image, (1, 3)) 第二个 ...
- opencv 矩阵操作
OpenCv矩阵操作 有很多函数有mask,代表掩码,如果某位mask是0,那么对应的src的那一位就不计算,mask要和矩阵/ROI/的大小相等 大多数函数支持ROI,如果图像ROI被设置,那么只处 ...
- OpenCV 填充(ROI)+模糊操作
1.ROI 操作 src = cv.imread('./1.jpg') cv.imshow('src',src) dst = src[40:240,100:300] gray = cv.cvtColo ...
- python实现模糊操作
目录: (一)模糊或平滑与滤波的介绍 (二)均值模糊 (1) 原理 (2)代码实现-----均值模糊函数blur() (三)中值模糊------mediaBlur函数 (四)高斯模糊------Gau ...
- opencv鼠标操作及GUI矩形绘画
OpenCV的鼠标操作是通过一个中介函数配合回调函数来实现的.指定鼠标操作消息回调函数的函数为SetMouseCallback. void setMouseCallback(const string& ...
- OPENCV形态学操作1
形态学操作是指基于形状的一系列图像处理操作,包括膨胀,腐蚀,二值化,开运算,闭运算,顶帽算法,黑帽算法,形态学梯度等,最基本的形态学操作就是膨胀和腐蚀. 一.膨胀 首先需要明确一个概念,膨胀和腐蚀都是 ...
- 基于PI+QT实现OpenCV图像处理操作(基本环境搭建)
这篇博客就是在PI上直接写出来的!cheers!! PI3的性能已经非常强劲,而作为一个能够独立运行的运算单元,使用它来做图像处理,将是非常适合的.为了挖掘机器的最大潜能,我没有采用比较常见的pyth ...
- [OpenCV-Python] OpenCV 核心操作 部分 III
部分 III核心操作 OpenCV-Python 中文教程(搬运)目录 9 图像的基础操作 目标 • 获取像素值并修改 • 获取图像的属性(信息) • 图像的 ROI() • 图像通道的拆分及合并几乎 ...
- [python-opencv] 模糊操作
@不要在奋斗的年纪 选择安逸 均值模糊 中值模糊 自定义模糊 意义与应用场景 模糊的基本原理: 1.基于离散卷积 2.定义好每个卷积核 3.不同卷积核得到不同的卷积效果 4.模糊是卷积的一种表象 #均 ...
随机推荐
- 用VS测试程序
怀着一种忐忑的心情,我开始了我的软件测试. #include "stdio.h" #include "stdlib.h" int main(int argc, ...
- 团队开发--NABCD
团队成员介绍: 李青:绝对的技术控,团队中扮演“猪”的角色,勤干肯干,是整个团队的主心骨,课上紧跟老师的步伐,下课谨遵老师的指令,课堂效率高,他的编程格言“没有编不出来的程序,只有解决不了的bug”. ...
- Team Work总结 && OPP课程总结
团队作业总结 工作总结 本次大作业我在团队内的工作是:根据框架构建实现建筑类的功能,包括防御塔.水晶.泉水等建筑.根据架构框架以及结合各建筑的特点,利用继承和多态很快速的解决了一些基本的问题.然而在实 ...
- 电梯V2.0
电梯V2.0 GitHub仓库地址 Problem 一栋10层的大楼(楼层编号1-10),设3台无限载重的电梯,初始时电梯停在1层.其中:1号电梯只能停留在奇数层,2号电梯可以各层都停留,3号电梯只停 ...
- firefox插件Firebug的使用教程
什么是Firebug 从事了数年的Web开发工作,越来越觉得现在对WEB开发有了更高的要求.要写出漂亮的HTML代码:要编写精致的CSS样式表展示每个页面模块:要调试 javascript给页面增加一 ...
- Nodejs学习笔记(一)--- 操作Mysql数据库
对于一门语言的学习,我个人觉得最好的方式就是通过一个项目来展示,所以从基本的一些模块去了解是最好的方式对于Mysql怎么去链接数据库这个我是在网上找到的(其实一直想找官方文档的,发现没有它的踪迹,(后 ...
- Java数学函数Math类
Java数学函数Math类常用: Math.abs(12.3); //12.3 返回这个数的绝对值 Math.abs(-12.3); //12.3 Math.copySign(1.23, -12.3) ...
- 数据输出保存生成word文档
ob_start(); //打开缓冲区 $header_str = '<html xmlns:o="urn:schemas-microsoft-com:office:office&qu ...
- js & right click menu
js & right click menu https://stackoverflow.com/questions/4909167/how-to-add-a-custom-right-clic ...
- 【前端学习笔记02】JavaScript字符串、数组的一些操作方法
字符串操作: //str.length "micromajor".length // 10 //str.charAt() "micromajor".charAt ...
