opencv学习笔记(四)--图像平滑处理
图像平滑处理的几种常用方法:
- 均值滤波
- 归一化滤波
- 高斯模糊
- 中值滤波
平滑处理(模糊)的主要目的是去燥声:
不同的处理方式适合不同的噪声图像,其中高斯模糊最常用。
其实最重要的是对图像卷积的核的理解,核太大图像会失真,具体关于核的讲解点击传送门
图像噪声:引起较强视觉效果的孤立像素点或像素块。一般,噪声信号与要研究的对象不相关,它以无用的信息形式出现,扰乱图像的可观测信息。通俗的说就是噪声让图像不清楚。
废话不多说,直接上代码:
#均值滤波 //像素点等于周围N*N像素的平均值
img = cv.imread("E:/pictures/lenanoise.jpg")
blur = cv.blur(img,(7,7)) #res = cv.blur(src,核大小)
cv.imshow("orginal",img)
cv.imshow("blur",blur)
cv.waitKey()
cv.destroyAllWindows()
(这是原图)
borderType:Int类型,用于推断图像外部像素的某种边界模式,有默认值BORDER_DEFAULT.
方框滤波(归一化滤波):
#方框滤波 归一化处理
img = cv.imread("E:/pictures/lenanoise.jpg")
boxFiter = cv.boxFilter(img,-1,(5,5))
boxFiter2 = cv.boxFilter(img,-1,(5,5),normalize=False) #res = cv.boxFilter(src,图像深度,核大小,normalize属性)
cv.imshow("orginal",img) #图像深度一般设为-1表示和原图的深度一样
cv.imshow("boxFilter",boxFiter) #normalize->是否进行归一化处理
cv.imshow("boxFilter2",boxFiter2) #normalize属性有两个值TRUE和False,默认为TRUE
cv.waitKey() #(归一化)normalize为TRUE时和均值滤波一样,等于周围N*N个像素的平均值
cv.destroyAllWindows() #normalize为FALSE时,表示周围N*N个像素和,大于255的置为255
高斯模糊:
#高斯滤波 //周围N*N个像素的加权平均值
img = cv.imread("E:/pictures/lenanoise.jpg") #离中心点越近权重越大,越远权重越小
gassblur = cv.GaussianBlur(img,(9,9),0) #dst = cv.GaussianBlur(src,ksize,sigmax)
cv.imshow("orginal",img) #ksize->核大小(必须为奇数)3=3*3,5=5*5
cv.imshow("GaussianBlur",gassblur) #sigmax ->x方向方差(计算权重) ,一般设为0,由ksize推算,当然是由计算机完成的
cv.waitKey()
cv.destroyAllWindows() 在这种方法中,不使用由相同滤波器系数组成的盒式滤波器,而是使用高斯内核。 它使用函数cv2.GaussianBlur()完成。 我们应该指定内核的宽度和高度
,它应该是正数和奇数。 我们还应该分别指定X和Y方向的标准偏差sigmaX和sigmaY。 如果只指定sigmaX,则sigmaY等于sigmaX。 如果两者均为零,则从
内核大小进行计算。 高斯滤波非常有效地消除图像中的高斯噪声。
中值滤波:
#中值滤波 将n*n个像素排序后取中值作为新的像素值(核必须为奇数)
img = cv.imread("E:/pictures/lenanoise.jpg")
medianblur = cv.medianBlur(img,3) #dst = cv.medianBlur(src,ksize)
cv.imshow("orginal",img) #ksize->核大小,必须为奇数,如3,5,7...代表3*3,5*5....
cv.imshow("GaussianBlur",medianblur)
cv.waitKey()
cv.destroyAllWindows()
opencv学习笔记(四)--图像平滑处理的更多相关文章
- 【opencv学习笔记四】opencv3.4.0图形用户接口highgui函数解析
在笔记二中我们已经知道了,在highgui文件夹下的正是opencv图形用户接口功能结构,我们这篇博客所说的便是D:\Program Files\opencv340\opencv\build\incl ...
- OpenCV学习笔记(8)——图像平滑
使用不同的低筒滤波器对图像进行模糊 使用自定义的率弄起对图像进行卷积(2D卷积) 2D卷积 与信号一样,我们也可以对2D图像实施低通滤波,高通滤波等.LPF帮助我们去除噪声,模糊图像.而HPF帮助我们 ...
- OpenCV学习笔记四:ImgProc模块
一,简介 这个模块包含一系列的常用图像处理算法. 二,分析 此模块包含的文件如下图: 其导出算法包括如下: /*********************** Background statistics ...
- OpenCV学习笔记3
OpenCV学习笔记3 图像平滑(低通滤波) 使用低通滤波器可以达到图像模糊的目的.这对与去除噪音很有帮助.其实就是去除图像中的高频成分(比如:噪音,边界).所以边界也会被模糊一点.(当然,也有一些模 ...
- opencv学习笔记(四)投影
opencv学习笔记(四)投影 任选了一张图片用于测试,图片如下所示: #include <cv.h> #include <highgui.h> using namespace ...
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
http://blog.csdn.net/chenyusiyuan/article/details/8710462 OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波 201 ...
- OpenCV 学习笔记 07 目标检测与识别
目标检测与识别是计算机视觉中最常见的挑战之一.属于高级主题. 本章节将扩展目标检测的概念,首先探讨人脸识别技术,然后将该技术应用到显示生活中的各种目标检测. 1 目标检测与识别技术 为了与OpenCV ...
- OpenCV 学习笔记03 findContours函数
opencv-python 4.0.1 1 函数释义 词义:发现轮廓! 从二进制图像中查找轮廓(Finds contours in a binary image):轮廓是形状分析和物体检测和识别的 ...
- 【opencv学习笔记八】创建TrackBar轨迹条
createTrackbar这个函数我们以后会经常用到,它创建一个可以调整数值的轨迹条,并将轨迹条附加到指定的窗口上,使用起来很方便.首先大家要记住,它往往会和一个回调函数配合起来使用.先看下他的函数 ...
随机推荐
- day16-作业 后台管理
二话不说开撸作业 作业要求: 后台管理平台 ,编辑表格:1. 非编辑模式:可对每行进行选择: 反选: 取消选择2. 编辑模式:进入编辑模式时如果行被选中,则被选中的行万变为可编辑状态,未选中的不改变退 ...
- Vulkan Tutorial 04 理解Validation layers
操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 What are validation layers? Vulkan API的设计核 ...
- Mysql问题随记
[用户创建并授权远程访问] CREATE USER 'username'@'host' IDENTIFIED BY 'password’; @后面跟主机地址,即这个用户可以从哪些地址访问数据库,l ...
- Collection Types
[Collection Types] 1.Arrays store ordered lists of values of the same type. Value必须是同一类型. 2.Array的原型 ...
- 第01章 开发准备(对最新版的RN进行了升级)1-3+项目结构介绍
- JDK的安装和环境配置
安装环境:网上下载的JDK一般都包含JRE在里面,安装JDK完成后会提示接着装JRE,如果没提示再去下载另装如:jdk_8u101_windows_x64_8.0.1010.13 配置环境:新建系统变 ...
- Unity ios、android、pc一键打包(一)
http://www.cnblogs.com/miaoshujiang/p/5289223.html http://blog.csdn.net/ynnmnm/article/details/36774 ...
- mysql GROUP_CONCAT 可以将分组的字段进行拼接处理.
GROUP_CONCAT 可以将分组的字段进行拼接处理. SELECT g.id, g.merchant_id, g. NAME, g.introduction, g.cover_pic, g.pla ...
- solr开发之基本操作
package zr.com.util; import java.io.IOException; import java.util.List; import java.util.Map; import ...
- 12-在eclipse上安装lxml
1.可用easy_install安装方式,也可以用pip的方式: pip install lxml 2.安装完毕:写代码导包时提示错误,这是需要配置一下eclipse,是因为它没有更新导入的包,所以需 ...