Python图像平滑滤波处理(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)
图像平滑概述
图像平滑是指受传感器和大气等因素的影响,遥感图像上会出现某些亮度变化过大的区域,或出现一些亮点(也称噪声)。这种为了抑制噪声,使图像亮度趋于平缓的处理方法就是图像平滑。图像平滑实际上是低通滤波,平滑过程会导致图像边缘模糊化。
图像平滑处理算法
噪声滤除算法可以从设计方法上分为两大类:线性滤波算法、非线性滤波算法
参数说明
src:输入图像,可以是任何通道数的图像,处理时是各通道拆分后单独处理,但图像深度必须是CV_8U, CV_16U, CV_16S, CV_32F 或CV_64F;
ddepth:输出图像深度(请参考《图像表示的相关概念:图像深度、像素深度、位深的区别和关系》),如果目标图像深度和输入图像深度相同,则传值-1,在Python中此时取值None、0效果也一样,注意ddepth在这里必须传值,不能使用默认值。
dst:结果图像,其大小和类型都与输入图像相同;
ksize:卷积核(convolution kernel )矩阵大小,如上概述所述,实际上是相关核(correlation kernel),为一个单通道的浮点数矩阵,如果针对图像不同通道需要使用不同核,则需要将图像进行split拆分成单通道并使用对应核逐个进行处理
anchor:核矩阵的锚点,用于定位核距中与当前处理像素点对齐的点,默认值(-1,-1),表示锚点位于内核中心,否则就是核矩阵锚点位置坐标,锚点位置对卷积处理的结果会有非常大的影响
normalize:核矩阵是否归一化处理的标记,为True进行归一化处理,否则不进行归一化处理,默认值为True
borderType:当要扩充输入图像矩阵边界时的像素取值方法,当核矩阵锚点与像素重合但核矩阵覆盖范围超出到图像外时,函数可以根据指定的边界模式进行插值运算。
过滤器大小:大过滤器(d > 5)非常慢,因此建议在实时应用中使用 d=5,对于需要大量噪声过滤的离线应用,建议使用 d=9。
Sigma 值:为简单起见,您可以将 2 个 sigma 值设置为相同。 如果它们很小(< 10),则滤镜不会有太大的效果,而如果它们很大(> 150),它们会产生非常强烈的效果,使图像看起来“卡通”。
代码实现
# -*- coding: utf-8 -*-
import cv2
import numpy as np
import matplotlib.pyplot as plt#读取图片
img = cv2.imread('1.bmp',cv2.IMREAD_GRAYSCALE)
source = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)#均值滤波
result1 = cv2.blur(source, (5,5))
result2 = cv2.blur(source, (7,7))#方框滤波
result3 = cv2.boxFilter(source, -1, (5,5), normalize=1)
result4 = cv2.boxFilter(source, -1, (7,7), normalize=1)#高斯滤波
result5 = cv2.GaussianBlur(source, (3,3), 0)
result6 = cv2.GaussianBlur(source, (15,15), 0)#中值滤波
result7 = cv2.medianBlur(source, 3)#高斯双边滤波
result8 =cv2.bilateralFilter(source, 15, 50, 50)#显示图形
titles = ['Source', 'Blur 5*5', 'Blur 7*7', 'BoxFilter 5*5','BoxFilter 7*7', 'GaussianBlur 3*3', 'GaussianBlur 15*15','medianBlur', 'bilateralFilter']
images = [source, result1, result2, result3,result4, result5, result6, result7, result8] fig = plt.figure(figsize=(10, 10))#设置大小
for i in range(9): plt.subplot(3,3,i+1), plt.imshow(images[i], 'gray') plt.title(titles[i]) plt.xticks([]),plt.yticks([])
plt.show()
fig.savefig('fig.jpg',bbox_inches='tight')
效果展示
参赛话题:学习笔记
Python图像平滑滤波处理(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)相关推荐
- opencv学习笔记11:图像滤波(均值,方框,高斯,中值)
为什么要使用滤波 消除图像中的噪声成分叫作图像的平滑化或滤波操作.信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没.因此一个能降低高频成分幅度的滤波 ...
- 【OpenCV】邻域滤波:方框、高斯、中值、双边滤波
邻域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积禅城右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用的邻 ...
- 域滤波:方框、高斯、中值、双边滤波
邻域滤波(卷积) 邻域算子值利用给定像素周围像素的值决定此像素的最终输出.如图左边图像与中间图像卷积禅城右边图像.目标图像中绿色的像素由原图像中蓝色标记的像素计算得到. 通用线性邻域滤波是一种常用的邻 ...
- OpenCV函数简记_第三章数字图像的滤波处理(方框,均值,高斯,中值和双边滤波)
系列文章目录 OpenCV函数简记_第一章数字图像的基本概念(邻域,连通,色彩空间) OpenCV函数简记_第二章数字图像的基本操作(图像读写,图像像素获取,图像ROI获取,图像混合,图形绘制) Op ...
- CV10 图像模糊(均值、高斯、中值、双边滤波)
通过将图像与低通滤波器内核进行2D卷积来实现图像模糊.这对于消除噪音很有用.它实际上从图像中消除了高频部分(例如噪声,边缘).因此,在此操作中边缘有些模糊.(有一些模糊技术也可以不模糊边缘).Open ...
- 9、opencv 方盒、均值、高斯、中值、双边滤波 2022-08-22
import cv2 import numpy as npimg_path = "./R-C.jpg"img = cv2.imread(img_path) 方盒滤波 # norma ...
- 【OpenCV】5种图像滤波辨析:方框、均值、高斯、中值、双边
from:http://www.07net01.com/2015/12/1003192.html 图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预 ...
- OpenCV3学习(4.2)——图像常用滤波方法(方框、均值、高斯、中值、双边)
滤波处理分为两大类:线性滤波和非线性滤波.OpenCV里有这些滤波的函数,使用起来非常方便,现在简单介绍其使用方法. 线性滤波: 1.方框滤波:模糊图像 2.均值滤波:模糊图像 3.高斯滤波:信号的平 ...
- 【opencv】(3) 图像滤波:均值、方框、中值、高斯
内容有: 均值滤波 cv2.blur(),方框滤波 cv2.boxFilter(),高斯滤波 cv2.GaussianBlur(),中值滤波 cv2.medianBlur() 滤波可理解为,平均卷积操 ...
- 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验
** 基于python的九轴惯性传感器的数据预处理代码-中值滤波实验 ** import random import numpy as np import pandas as pd import sc ...
最新文章
- EPML schema(附带用myeclipse生成的结构图)
- TensorFlow:深度学习框架TensorFlow TensorFlow_GPU的简介、安装、测试之详细攻略
- 常用的几个JavaScript调试技巧
- 电影院里为何有散落的青瓜?
- 《C++ Primer 第五版》(第4.11-4.12节)——static_cast,const_cast和reinterpret_cast类型转换, 运算符优先级表
- 总结深度学习各种网络结构【更新中...】
- 2 FI配置-企业结构-定义-创建公司代码(Company Code)
- 诺基亚X71上手评测:中端机市场中的绝对C位
- linux 下生成中文pdf,Linux itex pdf生成中文不显示
- jstack分析CPU高的问题
- vc++HOOK详细讲解
- Java简介:Java是什么?及Java语言的特点
- react-native获取农历日期和二十四节气
- windows系统下ink!canvas-node安装
- android wifi 5g,android 判断 wifi 是否是 5G
- 关于运筹学三方库的编译和使用 ortools
- LockSupport 的 park 和 unpark 以及线程中断对 park 的影响
- [rom助手]制作刷机包,一键刷机不求人
- 如何根据负载选择开关电源规格?
- 【0基础】最简单的英灵神殿/Valheim服务器搭建实战教学