机器视觉——案例分析基础(五)(图像的噪声产生与去噪)
2021/11/29 23:07:55
本文主要是介绍机器视觉——案例分析基础(五)(图像的噪声产生与去噪),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
图像的噪声产生与去噪
- 一、理论分析
- 二、代码分析
- 2.1 高斯噪声的产生与去噪
- 2.2 椒盐噪声的产生与去噪
一、理论分析
图像在生成时,受到环境、设备本身、光线等因素会导致图片产生噪声,这些噪声过于随机,处理起来十分复杂。处于学习的目的,我们首先学习一些简单的噪声与去噪,比如高斯噪声,椒盐噪声等。
二、代码分析
2.1 高斯噪声的产生与去噪
高斯噪声主要根据高斯分布(也就是正态分布)的边缘值,被认为是噪声。在高斯噪声的产生中,对图像添加给定高斯分布的边缘值,这样就对图像添加了高斯噪声,去噪的方法也很简单,对每个核去除边缘分布的噪声。
from cv2 import cv2 as cv import numpy as np def gauss_noise(image,mean=0,var=0.0001): image = np.array(image/255,np.float32) noise = np.random.normal(mean,var**0.5,image.shape) out = image + noise if out.min() < 0: low_clip = -1 else: low_clip = 0 out = np.clip(out,low_clip,1.0) out = np.uint8(out*255) return out img = cv.imread('./CV-Pictures/036.jpg') gauss_noise = gauss_noise(img,0.0,0.00002) dst = cv.GaussianBlur(gauss_noise,(9,9),0,0) pic = np.hstack([img,dst]) cv.imshow("picture",pic) cv.waitKey(0) cv.destroyAllWindows()
运行结果如下
2.2 椒盐噪声的产生与去噪
椒盐噪声,个人理解,顾名思义,胡椒–>黑色,盐–>白。加入0和255像素的噪声,去噪的方法也很简单,应用中值模糊去噪方法。去除最小值和最大值,从而去除椒盐噪声,但是我们应该认识到,当模糊处理的核很大时,图像会变得很模糊,所以一般我们取一个权衡值。在去除噪声的前提下,争取图像变得清晰,这就导致核不能太大,也不能太小。
from cv2 import cv2 as cv import numpy as np import random def salt_pepper_noise(image,radio): out = np.zeros(image.shape,np.uint8) threshold = 1 - radio for i in range(image.shape[0]): for j in range(image.shape[1]): rdn = np.random.random() #rdn = random.random() if rdn < radio: out[i][j] = 0 elif rdn > threshold: out[i][j] = 255 else: out[i][j] = image[i][j] return out img = cv.imread('./CV-Pictures/010.jpg') out_sp_noise = salt_pepper_noise(img,0.2) dst_median = cv.medianBlur(out_sp_noise,5) dst_blur = cv.blur(out_sp_noise,(9,9)) Gaiss_dst = cv.GaussianBlur(out_sp_noise,(9,9),2,2) pic = np.hstack([out_sp_noise,dst_median,dst_blur,Gaiss_dst]) cv.imshow('out_sp_noise',pic) cv.waitKey(0) cv.destroyAllWindows()
运行代码结果如下图所示,从左到右,依次是椒盐噪声图片,中值模糊,均值模糊,高斯模糊。可以看到中值模糊效果最好。
这篇关于机器视觉——案例分析基础(五)(图像的噪声产生与去噪)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)