实验二、OpenCV图像滤波
一、题目描述
对下面的图片进行滤波和边缘提取操作,请详细地记录每一步操作的步骤。

滤波操作可以用来过滤噪声,常见噪声有椒盐噪声和高斯噪声,椒盐噪声可以理解为斑点,随机出现在图像中的黑点或白点;高斯噪声可以理解为拍摄图片时由于光照等原因造成的噪声。
二、实现过程
1.加载原图
import cv2
#加载图片
img=cv2.imread("test14.bmp",0)
imgzi = cv2.putText(img, 'original', (40,25),cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0, 0), 2)
#显示图片
cv2.imshow('canny', img)
key = cv2.waitKey(0)
if key==27: #按esc键时,关闭所有窗口
print(key)
cv2.destroyAllWindows()
2.均值滤波
均值滤波是一种最简单的滤波处理,它取的是卷积核区域内元素的均值,用cv2.blur()实现,如3×3的卷积核:
mg=cv2.imread("test14.bmp",0)
blur = cv2.blur(img, (3, 3)) # 均值模糊
imgzi = cv2.putText(img, 'averagefilter ', (40,25),cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0, 0), 2)
3.中值滤波
中值又叫中位数,是所有数排序后取中间的值。中值滤波就是用区域内的中值来代替本像素值,所以那种孤立的斑点,如0或255很容易消除掉,适用于去除椒盐噪声和斑点噪声。中值是一种非线性操作,效率相比前面几种线性滤波要慢。
img = cv2.imread('test14.bmp', 0)
均值滤波vs中值滤波
median = cv2.medianBlur(img, 5) # 中值滤波
imgzi = cv2.putText(img, 'medianfilter ', (40,25),cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0, 0), 2)
4.高斯滤波

OpenCV中对应函数为cv2.GaussianBlur(src,ksize,sigmaX):
img = cv2.imread('test14.bmp')
#高斯滤波
gaussian = cv2.GaussianBlur(img, (5, 5), 1) # 高斯滤波
imgzi = cv2.putText(img, 'gaussfilter ', (40,25),cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0, 0), 2)
5.高斯边缘检测
原理:首先对图像做高斯滤波,然后再求其拉普拉斯(Laplacian)二阶导数。
即图像与 Laplacian of the Gaussian function 进行滤波运算。
最后,通过检测滤波结果的零交叉(Zero crossings)可以获得图像或物体的边缘。
因而,也被简称为Laplacian-of-Gaussian (LoG)算子。
在第一步的基础上,可以通过拉普拉斯边缘检测来实现这一功能。Laplacian函数简介:dst = cv.Laplacian(src, ddepth[, dst[, ksize[, scale[, delta[, borderType]]]]])。
import cv2
import numpy as np # Load the image in greyscale
img = cv2.imread('test14.bmp',0) # Apply Gaussian Blur
blur = cv2.GaussianBlur(img,(3,3),0) # Apply Laplacian operator in some higher datatype
laplacian = cv2.Laplacian(blur,cv2.CV_64F,5)
三、运行结果(效果)




四、问题及解决方法
老师给的第五步gauss边缘检测没有搜索到相关的资料,最后我查阅了官方文档,上面的GAUSS指高斯---拉普拉斯算法。我查阅了资料,完成了此次作业。解决方法:进行laplacian边缘检测得以实现。
Puttext函数不能输出中文,解决方法:使用英文输出
五、实验总结
我们要合理运用网络资源,特别时官方文档,学会查阅资料。
实验二、OpenCV图像滤波的更多相关文章
- CUDA二维纹理内存+OpenCV图像滤波
CUDA和OpenCV混合编程,使用CUDA的纹理内存,实现图像的二值化以及滤波功能. #include <cuda_runtime.h> #include <highgui/hig ...
- OpenCV成长之路:图像滤波
http://ronny.blog.51cto.com/8801997/1394138 OpenCV成长之路:图像滤波 2014-04-11 14:28:44 标签:opencv 边缘检测 sobel ...
- opencv学习之路(12)、图像滤波
一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...
- opencv第三课,图像滤波
1.介绍 OpenCV图像处理技术中比较热门的图像滤波操作主要被分为了两大类:线性邻域滤波和非线性滤波.线性邻域滤波常见的有“方框滤波“,”均值滤波“和”高斯滤波“三种,二常见的非线性滤波主要是中值滤 ...
- 图像滤波与OpenCV中的图像平滑处理
.About图像滤波 频率:可以这样理解图像频率,图像中灰度的分布构成一幅图像的纹理.图像的不同本质上是灰度分布规律的不同.但是诸如"蓝色天空"样的图像有着大面积近似的灰度强度,而 ...
- 第十三节,OPenCV学习(二)图像的简单几何变换
图像的简单几何变换 几何变换不改变图像的像素值,只是在图像平面上进行像素的重新安排 适当的几何变换可以最大程度地消除由于成像角度.透视关系乃至镜头自身原因所造成的几何失真所产生的的负面影响. 一.图像 ...
- CV_图像滤波[转]---python+opencv均值滤波,高斯滤波,中值滤波,双边滤波
1.图像滤波算法(cv2) https://blog.csdn.net/qq_27261889/article/details/80822270 2.
- OpenCV3入门(六)图像滤波
1.图像滤波理论 1.1图像滤波理论 图像滤波即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作.消除图像中的噪声又叫做图像滤波或平滑,滤波的目的有两个,一是突出特 ...
- opencv图像特征检测之斑点检测
前面说过,图像特征点检测包括角点和斑点,今天来说说斑点,斑点是指二维图像中和周围颜色有颜色差异和灰度差异的区域,因为斑点代表的是一个区域,所以其相对于单纯的角点,具有更好的稳定性和更好的抗干扰能力. ...
随机推荐
- 利用requests, beautifulsoup包爬取股票信息网站
这是第一次用requests, beautifulsoup实现爬虫,此次爬取的是一个股票信息网站:http://www.gupiaozhishi.net.cn. 实现非常简单,只是为了demo使用的数 ...
- Netty(五):ServerBootstrap启动流程
这篇文章主要是对ServerBootstrap启动流程做一个梳理,方便我们串联起各个类,同时也对主要的一些类有个大概的印象,方便之后逐个类的深入学习. 本篇文章不在具体贴出代码,而是对整个启动流程画了 ...
- 2019-2020 ICPC, Asia Jakarta Regional Contest A. Copying Homework (思维)
Danang and Darto are classmates. They are given homework to create a permutation of N integers from ...
- 图论--LCA--Tarjan(离线)
* * 给出一颗有向树,Q个查询 * 输出查询结果中每个点出现次数 * 复杂度O(n + Q); */ const int MAXN = 1010; const int MAXQ = 500010; ...
- django源码分析——静态文件staticfiles中间件
本文环境python3.5.2,django1.10.x系列 1.在上一篇文章中已经分析过handler的处理过程,其中load_middleware就是将配置的中间件进行初始化,然后调用相应的设置方 ...
- 数据库SQL---范式
1.数据冗余导致的问题:冗余存储.更新异常.插入异常.删除异常. 2.函数依赖:一种完整性约束. 在关系模式r(R)中,α属于R,β属于R. 1)α函数确定β(β函数依赖于α):记作α→β,对于任意合 ...
- 正方形已知两点对角线求另外两点(POJ2002)
至于为什么,上图.转载于MZW_BG 枚举正方形的一条边,此时有上正方形和下正方形. 最后正方形个数/4,因为每个正方形被枚举了4条边 #include <bits/stdc++.h> u ...
- P1725 琪露诺(单调队列优化)
描述:https://www.luogu.com.cn/problem/P1725 小河可以看作一列格子依次编号为0到N,琪露诺只能从编号小的格子移动到编号大的格子.而且琪露诺按照一种特殊的方式进行移 ...
- 一次内核 crash 的排查记录
一次内核 crash 的排查记录 使用的发行版本是 CentOS,内核版本是 3.10.0,在正常运行的情况下内核发生了崩溃,还好有 vmcore 生成. 准备排查环境 crash 内核调试信息rpm ...
- javaScript 添加和移除class类名的几种方法
添加类属性: // 一次只能设置一个类值,如果当前属性本身存在类值,会被替换 element.className = '类名'; /* * .setAttribute 用来设置自定义属性和值的 * 自 ...