OpenCV图像处理(十三)---图像滤波

热力学第一定律(the first law of thermodynamics)就是不同形式的能量在传递与转换过程中守恒的定律,表达式为△U=Q+W。表述形式:热量可以从一个物体传递到另一个物体,也可以与机械能或其他能量互相转换,但是在转换过程中,能量的总值保持不变。其推广和本质就是著名的能量守恒定律。

该定律经过迈尔 J.R.Mayer、焦耳 J.P.Joule等多位物理学家验证。热力学第一定律就是涉及热现象领域内的能量守恒和转化定律。十九世纪中期,在长期生产实践和大量科学实验的基础上,它才以科学定律的形式被确立起来。                                    

科普

知识

前言

     在上一期的文章中,我们学习了图像阈值化(二值化)处理方法,阈值化操作很实用,特别是以后的去除噪点,图像分割等等都会涉及到一定的阈值操作。今天我们继续来学习图像的另一个技术--图像滤波。

一、图像滤波

一、图像滤波简介

     滤波的在数字信号处理这门课程中的本义是,对各种数字信号中的某一或指定频率进行过滤(也可以理解为不想要的频率),最后筛选出我们想要的频率的信号,这即是滤波的过程,也是目的。我们常见的拍摄的图像中或多或少存在一些噪声,常见的图像噪声如高斯噪声、瑞利噪声、椒盐噪声等。这些噪声体现在图像上也就是一些像素值不合理像素(何为不合理,可以简单的理解为过大或者过小的像素,类似白点,黑点 等等),因此我们要对这些不合理的像素进行滤波,常见滤波操作有均值滤波、中值滤波、高斯滤波和双边滤波等。

1.1 原始图片

(蔚蓝色的星球)

(澄碧如洗的蓝天)

(海天一色的美景)

1.2 代码实践

# cv2.filter2D()滤波
import cv2
import numpy as np


img_path = './test_01.jpg'
image = cv2.imread(img_path)
read_image = cv2.imread(img_path, 0)


# 定义滤波核大小
filter_kernel = np.ones((3, 3), np.float32)/9
# 调用2D滤波器函数,跟之前一样,我们不用重点解释了,直接带参数就行
# 感兴趣的可以查看其他参数代表含义
dst_img = cv2.filter2D(read_image, -1, filter_kernel)
# 显示图像 进行对比
cv2.imshow('dst_img', dst_img)
cv2.imshow('src_image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()


效果展示:

(可以看到,滤波后的图像变得模糊了,因此,模糊也是滤波的一个作用,当然,我们一般形容滤波的作用是滤掉不需要的像素值,尽量使之平均,不至于高低不平。)

均值滤波:

      OpenCV中有一个专门的平均滤波模板供使用------归一化卷积模板,所有的滤波模板都是使卷积框覆盖区域所有像素点与模板相乘后得到的值作为中心像素的值。OpenCV中均值模板可以用cv2.blur,比如一个3*3的模板其实就可以如下表示;

这里的意思就是对这个M大小的像素区域进行对点相乘 ,然后各个相乘的结果相加 最后平均(除以9)。

# 均值滤波 cv2.blur(),
import cv2
import numpy as np
# 读取为灰度图像
src_img = cv2.imread('test_02.jpg')
img = cv2.imread('test_02.jpg', 0)
# 均值滤波
image_blur = cv2.blur(img, (3, 3))  # 模板大小为3*3, 可自定义
cv2.imshow('src_img', src_img)
cv2.imshow('image_blur', image_blur)
cv2.waitKey(0)
cv2.destroyAllWindows()

效果展示:

(可以看到经过滤波后的图像与原图对比不是那么清晰,但滤波操作却十分的必要。)



#高斯双边滤波
import cv2
img=cv2.imread('test_03.jpg',1)
cv2.imshow('src',img)
#后面两个数字:空间高斯函数标准差,灰度值相似性标准差
dst=cv2.bilateralFilter(img,15,35,35)
cv2.imshow('dst',dst)
cv2.waitKey(0)


(可以看到高低双边滤波似乎变化不大,但别忘了像素分布取值已经不同了哦)

结语

     今天的分享到此结束了,滤波操作将会是以后的图像处理和视频处理的基本操作,大家一定要记得哦,如果觉得调库过于硬化,大家可以看懂源码或者懂了数学原理后进行代码重写哦。

    我们下期再见!

编辑:玥怡居士|审核:小圈圈居士

往期精彩回顾

OpenCV图像处理(十二)---图像阈值化

OpenCV图像处理(十一)---图像梯度

OpenCV图像处理(十)---图像开运算VS闭运算

扫码关注更多精彩

点亮在看,你最好看!

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值