第5章 Python 数字图像处理(DIP) - 图像复原与重建6 - 椒盐噪声

标题

        • 椒盐噪声

椒盐噪声

如果kkk是一幅数字图像中表示灰度值的比特数,则灰度值可能是[0,2k−1][0, 2^k -1][0,2k1]。椒盐噪声的PDF为:

P(z)={Ps,z=2k−1Pp,z=01−(Ps+Pp),z=V(5.16)P(z) = \begin{cases} P_s, & z = 2^k -1 \\ P_p, & z=0 \\ 1-(P_s + P_p), & z=V \end{cases} \tag{5.16}P(z)=Ps,Pp,1(Ps+Pp),z=2k1z=0z=V(5.16)

$0<V<2^k-1 $的任意整数

均值和方差为
zˉ=(0)Pp+K(1−Ps−Pp)+(2k−1)Ps(5.17)\bar z =(0)P_p + K(1 -P_s - P_p) + (2^k -1) P_s \tag{5.17}zˉ=(0)Pp+K(1PsPp)+(2k1)Ps(5.17)
σ2=(0−zˉ)2Pp+(K−zˉ)2(1−Ps−Pp)+(2k−1)2Ps(5.18)\sigma^2 =(0-\bar z)^2 P_p + (K - \bar z)^2 ( 1 -P_s -P_p) + (2^k -1)^2 P_s \tag{5.18}σ2=(0zˉ)2Pp+(Kzˉ)2(1PsPp)+(2k1)2Ps(5.18)

  • 添加椒盐噪声的方法
    η(x,y)\eta(x, y)η(x,y)表示是一幅椒盐噪声图像,其密度值满足式(5.16)。我们使用椒盐噪声污染图像f(x,y)f(x, y)f(x,y)的方法为:
    fffη\etaη为0的所有位置赋0,在fffη\etaη2k−12^k-12k1的所有位置赋2k−12^k-12k1值,保留fffη\etaηVVV的所有位置的值不变。

  • 噪声密度
    像素被盐粒或胡椒噪声污染的概率PPPP=Ps+PpP=P_s + P_pP=Ps+PpPPP称为噪声密度

def salt_pepper_pdf(ps=0.1, pp=0.1):"""create salt and pepper PDF, math $$P(z) = \begin{cases} P_s, & z = 2^k -1 \\ P_p, & z=0 \\ 1-(P_s + P_p), & z=V \end{cases}$$param: z: input grayscale value of iamgeparam: v:  float, while z = v, probability of other valuesparam: ps: float, probability of the saltparam: pp: float, probability of the pepper"""salt_pepper = np.zeros([3])salt_pepper[0] = pssalt_pepper[2] = ppsalt_pepper[1] = 1 - (ps + pp)return salt_pepper   
def add_salt_pepper(img, ps=0.01, pp=0.01):"""add salt pepper noise to imageparam: img: input image, uint8 [0, 255]param: ps:  probability of salt noise, which is white noise, default is 0.01param: pp:  probability of peper noise, which is black noise, default is 0.01return image with salt pepper noise, [0, 255]"""h, w = img.shape[:2]mask = np.random.choice((0, 0.5, 1), size=(h, w), p=[pp, (1-ps-pp), ps])img_out = img.copy()img_out[mask==1] = 255img_out[mask==0] = 0return img_out
def add_salt_pepper_1(img, prob):output = np.zeros(img.shape, np.uint8)thres = 1 - probfor i in range(img.shape[0]):for j in range(img.shape[1]):rdn = np.random.random()if rdn < prob:output[i][j] = 0elif rdn > thres:output[i][j] = 255else:output[i][j] = img[i][j]return output
# 椒盐噪声
z = np.array([0, 128, 255])
ps = 0.1
pp = 0.3
k = 8
z_ = 0 * pp + k * (1 - ps - pp) + (2**k - 1) * ps
sigma = (0 - z_) ** 2 * pp + (k - z_) ** 2 * (1 - ps - pp) + (2**k -1) ** 2 * psprint(f"z_ -> {z_}, sigma -> {sigma}")salt_pepper = salt_pepper_pdf(ps=ps, pp=pp)plt.figure(figsize=(9, 6))
plt.bar(z, salt_pepper), plt.xticks([]), plt.yticks([])
plt.show()
z_ -> 30.3, sigma -> 7076.301

在这里插入图片描述

# 椒盐噪声,可随意控制胡椒与盐粒的概率大小
# img_ori = np.ones((512, 512)) * 128
img_ori = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0503 (original_pattern).tif", 0)img_salt_pepper = add_salt_pepper(img_ori, ps=0.05, pp=0.02)plt.figure(figsize=(9, 6))
plt.subplot(121), plt.imshow(img_ori, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])
plt.subplot(122), plt.imshow(img_salt_pepper, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])plt.tight_layout()
plt.show()

在这里插入图片描述

hist, bins = np.histogram(img_salt_pepper.flatten(), bins=255, range=[0, 255], density=True)
bar = plt.bar(bins[:-1], hist[:])

在这里插入图片描述

# 一些重要的概率密度函数
a = 2
b = 8z = np.linspace(0, 10, 200)gaussian = gauss_pdf(z)
rayleigh = rayleigh_pdf(z, a=a, b=b)
ireland  = ireland_pdf(z, a=a, b=b-6)
exponent = exponential_pdf(z, a=a)
average  = average_pdf(z, a=a, b=b)#=============椒盐=============
ps = 0.2
pp = 0.3
salt_pepper = salt_pepper_pdf(ps=ps, pp=pp)show_list = ['gaussian', 'rayleigh', 'ireland', 'exponent', 'average', 'salt_pepper']fig = plt.figure(figsize=(16, 8))for i in range(len(show_list)):ax = fig.add_subplot(2, 3, i+1)if i == 5:z = np.array([0, 100, 255])ax.bar(z, eval(show_list[i]), width=2), ax.set_xticks([0, 100, 255]), ax.set_yticks([0, eval(show_list[i]).max() ])ax.set_xlim(-1, 257), ax.set_ylim([0, eval(show_list[i]).max() + 0.05]), ax.set_title(show_list[i])else:ax.plot(z, eval(show_list[i])), ax.set_xticks([0, 10]), ax.set_yticks([0, eval(show_list[i]).max() ])ax.set_xlim(0, 10), ax.set_ylim([0, eval(show_list[i]).max() + 0.05]), ax.set_title(show_list[i])
plt.tight_layout()
plt.show()

在这里插入图片描述

一般重要噪声的例子

  • 高斯噪声

    • 由电子电路及(光照不足和/或高温引起的)传感器噪声等因素导致的
  • 瑞利噪声

    • 有助于表征距离成像中的噪声现象
  • 指数和伽马密度

    • 在激光成像中广泛应用
  • 冲激噪声

    • 出现在成像期间的快速瞬变(如开关故障)
  • 均匀密度

    • 是对实际情况最起码的描述
# 一些重要的噪声
img_ori = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0503 (original_pattern).tif", 0)img_gauss       = add_gaussian_noise(img_ori, mu=0, sigma=0.05)
img_rayleigh    = add_rayleigh_noise(img_ori, a=1)
img_gamma       = add_gamma_noise(img_ori, scale=2)
img_exponent    = add_exponent_noise(img_ori, scale=3)
img_average     = add_average_noise(img_ori, mean=10, sigma=1.5)
ps = 0.05
pp = 0.02
img_salt_pepper = add_salt_pepper(img_ori, ps=ps, pp=pp)show_list = ['img_gauss', 'img_rayleigh', 'img_gamma', 'img_exponent', 'img_average', 'img_salt_pepper']fig = plt.figure(figsize=(14.5, 20))for i in range(len(show_list)):if i >= 3:# 显示图像ax = fig.add_subplot(4, 3, i + 3 + 1)ax.imshow(eval(show_list[i]), 'gray'), ax.set_xticks([]), ax.set_yticks([]), ax.set_title(show_list[i].split('_')[-1])# 对应图像的直方图ax = fig.add_subplot(4, 3, i + 1 + 6)hist, bins = np.histogram(eval(show_list[i]).flatten(), bins=255, range=[0, 255], density=True)bar = ax.bar(bins[:-1], hist[:]), ax.set_xticks([]), ax.set_yticks([]),else:# 显示图像ax = fig.add_subplot(4, 3, i + 1)ax.imshow(eval(show_list[i]), 'gray'), ax.set_xticks([]), ax.set_yticks([]), ax.set_title(show_list[i].split('_')[-1])# 对应图像的直方图ax = fig.add_subplot(4, 3, i + 1 + 3)hist, bins = np.histogram(eval(show_list[i]).flatten(), bins=255, range=[0, 255], density=True)bar = ax.bar(bins[:-1], hist[:]), ax.set_xticks([]), ax.set_yticks([]),plt.tight_layout()
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260618.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Keras 深度学习框架中文文档

2019独角兽企业重金招聘Python工程师标准>>> Keras深度学习框架中文文档 Keras官网&#xff1a;http://keras.io/Github项目&#xff1a;https://github.com/fchollet/keras中文文档主页&#xff1a;http://keras-cn.readthedocs.io/en/latest/Github中文文档&#…

求一个二维数组外围元素之和_C++数组作为函数的参数(学习笔记:第6章 04)...

数组作为函数的参数[1]数组元素作实参&#xff0c;与单个变量一样。数组名作参数&#xff0c;形、实参数都应是数组名&#xff08;实质上是地址&#xff0c;关于地址详见后续章节&#xff09;&#xff0c;类型要一样&#xff0c;传送的是数组首地址。对形参数组的改变会直接影响…

android p wifi一直在扫描_Android再次解读萤石云视频

点击上方蓝字关注 ??前言我之前写过一篇萤石云的集成文章&#xff0c;很多人问我有没有demo&#xff0c; 今天我再次总结一下&#xff0c; 并加个些功能。集成步骤视频预览播放视频放大缩小视频的质量切换截图之前的文章大家可以看下面的链接&#xff1a;https://mp.weixin.q…

第5章 Python 数字图像处理(DIP) - 图像复原与重建7 - 周期噪声 余弦噪声生成方法

标题周期噪声周期噪声 周期噪声通常是在获取图像期间由电气或机电干扰产生的 def add_sin_noise(img, scale1, angle0):"""add sin noise for imageparam: img: input image, 1 channel, dtypeuint8param: scale: sin scaler, smaller than 1, will enlarge, …

第5章 Python 数字图像处理(DIP) - 图像复原与重建8 - 估计噪声参数

标题估计噪声参数估计噪声参数 周期噪声的参数通常是通过检测图像的傅里叶谱来估计的。 只能使用由传感器生成的图像时&#xff0c;可由一小片恒定的背景灰度来估计PDF的参数。 来自图像条带的数据的最简单用途是&#xff0c;计算灰度级的均值和方差。考虑由SSS表示的一个条…

python 随机获取数组元素_Python创建二维数组的正确姿势

List &#xff08;列表&#xff09;是 Python 中最基本的数据结构。在用法上&#xff0c;它有点类似数组&#xff0c;因为每个列表都有一个下标&#xff0c;下标从 0 开始。因此&#xff0c;我们可以使用 list[1] 来获取下标对应的值。如果我们深入下列表的底层原理&#xff0c…

在ubunut下使用pycharm和eclipse进行python远程调试

我比较喜欢Pycharm&#xff0c;因为这个是JetBrains公司出的python IDE工具&#xff0c;该公司下的java IDE工具——IDEA&#xff0c;无论从界面还是操作上都甩eclipse几条街&#xff0c;但项目组里有些人使用eclipse比较久了&#xff0c;一时让他们转pycharm比较困难&#xff…

CSS:页脚紧贴底部

2019独角兽企业重金招聘Python工程师标准>>> 我的练习来源于《CSS揭秘》这本书第7章-41紧贴底部的页脚这部分内容以及书中提到的链接。 方案一 描述&#xff1a;以下方案简单、干净、现代并且没有hack&#xff0c;适用于IE8, Chrome, Firefox, Opera等浏览器&#x…

第5章 Python 数字图像处理(DIP) - 图像复原与重建9 - 空间滤波 - 均值滤波器 - 算术平均、几何平均、谐波平均、反谐波平均滤波器

标题只存在噪声的复原 - 空间滤波均值滤波器算术平均滤波器几何均值滤波器谐波平均滤波器反&#xff08;逆&#xff09;谐波平均滤波器只存在噪声的复原 - 空间滤波 仅被加性噪声退化 g(x,y)f(x,y)η(x,y)(5.21)g(x, y) f(x, y) \eta(x, y) \tag{5.21}g(x,y)f(x,y)η(x,y)(5…

第5章 Python 数字图像处理(DIP) - 图像复原与重建10 - 空间滤波 - 统计排序滤波器 - 中值、最大值、最小值、中点、修正阿尔法均值滤波器

标题统计排序滤波器中值、最大值、最小值、中点 滤波器修正阿尔法均值滤波器统计排序滤波器 中值、最大值、最小值、中点 滤波器 f^(x,y)median{g(r,c)}(5.27)\hat{f}(x, y) \text{median} \{g(r,c)\} \tag{5.27}f^​(x,y)median{g(r,c)}(5.27) f^(x,y))max{g(r,c)}(5.28)\ha…

如何设置坐标原点值_氨气检测仪电化学原理及报警值如何设置

氨气体检测仪检定规程&#xff1a;一般氨气体检测仪检定规程主要是针对技术参数设定的一些标准&#xff0c;具体包含有规程的名称和范围、仪器示值误差、充分性标准差、响应时间、稳定性、报警功能、流量控制器、检定项目表、检定操作有数值误差、重复性、响应时间、稳定性等。…

第5章 Python 数字图像处理(DIP) - 图像复原与重建11 - 空间滤波 - 自适应滤波器 - 自适应局部降噪、自适应中值滤波器

标题自适应滤波器自适应局部降噪滤波器自适应中值滤波器自适应滤波器 自适应局部降噪滤波器 均值是计算平均值的区域上的平均灰度&#xff0c;方差是该区域上的图像对比度 g(x,y)g(x, y)g(x,y)噪声图像在(x,y)(x, y)(x,y)处的值 ση2\sigma_{\eta}^2ση2​ 为噪声的方差&am…

关闭防火墙_从零开始学Linux运维|09.关闭防火墙和SElinux

firewalld是centos7默认的防火墙安全增强型 Linux(Security-Enhanced Linux)简称 SELinux初学者建议先关闭,等熟悉了之后再来使用前期联系中的好多错误都有可能是由于没有关闭或者正确配置上面两项造成的1.临时关闭centos7下的防火墙firewalld一行命令就能够关闭firewalld--&qu…

Discuz!NT - 在线显示列表 游客 bug 修复

引发bug的条件&#xff1a;当你修改了系统组里面的[游客]组 的名字后&#xff01;&#xff01; 你会发现首页上底部的在线显示列表里始终都是显示"游客"字样而非你改过得字样&#xff01;如图 至此你需要运行一个t-sql脚本去修复这个bug&#xff01;&#xff08;但是…

基于空间方法的图神经网络模型_用于时空图建模的图神经网络模型 Graph WaveNet | 课程上新...

课程概要本课程来自集智学园图网络论文解读系列活动。是对论文《Graph WaveNet for Deep Spatial-Temporal Graph Modeling》的解读。时空图建模 (Spatial-temporal graph modeling)是分析系统中组成部分的空间维相关性和时间维趋势的重要手段。已有算法大多基于已知的固定的图…

dataframe类型数据的遍历_Python零基础入门到爬虫再到数据分析,这些你都是要学会的...

1.必须知道的两组Python基础术语A.变量和赋值Python可以直接定义变量名字并进行赋值的&#xff0c;例如我们写出a 4时&#xff0c;Python解释器干了两件事情&#xff1a;在内存中创建了一个值为4的整型数据在内存中创建了一个名为a的变量&#xff0c;并把它指向4用一张示意图表…

第5章 Python 数字图像处理(DIP) - 图像复原与重建12 - 空间滤波 - 使用频率域滤波降低周期噪声 - 陷波滤波、最优陷波滤波

标题使用频率域滤波降低周期噪声陷波滤波深入介绍最优陷波滤波本章陷波滤波器有部分得出的结果不佳&#xff0c;如果有更好的解决方案&#xff0c;请赐教&#xff0c;不胜感激。 使用频率域滤波降低周期噪声 陷波滤波深入介绍 零相移滤波器必须关于原点(频率矩形中心)对称&a…

Android之Menu动态改变文字

Menu创建&#xff1a; Override//这里遇到一个问题add的是MenuItem的idpublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.add(0,1023, 0, "一");menu.add(0,1022, 1, "开启线程");Log.e("onCreateOptionsMenu…

去掉xcode中警告的一些经验

1、编译时&#xff0c;编译警告忽略掉某些文件 只需在在文件的Compiler Flags 中加入 -w 参数&#xff0c;例如&#xff1a; 2、编译时&#xff0c;编译警告忽略掉某段代码 #pragma clang diagnostic push#pragma clang diagnostic ignored "-Wmultichar"char b df;…

富士施乐3065扫描教程_全面支持IT国产化 富士施乐70款机型获统信UOS兼容认证

最近&#xff0c;富士施乐&#xff08;中国&#xff09;有限公司宣布共70款机型获得国产操作系统统信UOS的兼容认证&#xff0c;其中包括新一代ApeosPort旗舰智能型数码多功能机、多功能一体机/打印机、生产型数字印刷系统。这是继获得中标麒麟、龙芯和兆芯兼容认证后&#xff…