标题

  • 椒盐噪声

椒盐噪声

如果kkk是一幅数字图像中表示灰度值的比特数,则灰度值可能是[0,2k−1][0, 2^k -1][0,2k−1]。椒盐噪声的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=2k−1z=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(1−Ps​−Pp​)+(2k−1)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=(0−zˉ)2Pp​+(K−zˉ)2(1−Ps​−Pp​)+(2k−1)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-12k−1的所有位置赋2k−12^k-12k−1值,保留fff中η\etaη为VVV的所有位置的值不变。

  • 噪声密度
    像素被盐粒或胡椒噪声污染的概率PPP为P=Ps+PpP=P_s + P_pP=Ps​+Pp​。PPP称为噪声密度

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()

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

  1. 第5章 Python 数字图像处理(DIP) - 图像复原与重建1 - 高斯噪声

    本章主要讲图像复原与重建,首先是了解一下各种噪声的特点与模型,还有形成的方法.一些重点的噪声,如高斯噪声,均匀噪声,伽马噪声,指数噪声,还有椒盐噪声等. 本章主要的噪声研究方法主要是加性噪声. 标题 ...

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

    标题 估计噪声参数 估计噪声参数 周期噪声的参数通常是通过检测图像的傅里叶谱来估计的. 只能使用由传感器生成的图像时,可由一小片恒定的背景灰度来估计PDF的参数. 来自图像条带的数据的最简单用途是,计 ...

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

    标题 周期噪声 周期噪声 周期噪声通常是在获取图像期间由电气或机电干扰产生的 def add_sin_noise(img, scale=1, angle=0):"""ad ...

  4. 第5章 Python 数字图像处理(DIP) - 图像复原与重建5 - 均匀噪声

    标题 均匀噪声 均匀噪声 均匀噪声的PDF为 P(z)={1b−a,a≤z≤b0,other(5.13)P(z) = \begin{cases}\frac{1}{b-a}, & a\leq z ...

  5. 第5章 Python 数字图像处理(DIP) - 图像复原与重建4 - 指数噪声

    标题 指数噪声 指数噪声 指数噪声的PDF为 P(z)={ae−az,z≥00,z<0(5.10)P(z) = \begin{cases} ae^{-az}, & z\geq 0 \\ ...

  6. 第5章 Python 数字图像处理(DIP) - 图像复原与重建2 - 瑞利噪声

    标题 瑞利噪声 瑞利噪声 瑞利噪声的PDF为 P(z)={2b(z−a)e−(z−a)2/b,z≥a0,z<a(5.4)P(z) = \begin{cases} \frac{2}{b}(z-a) ...

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

    标题 使用频率域滤波降低周期噪声 陷波滤波深入介绍 最优陷波滤波 本章陷波滤波器有部分得出的结果不佳,如果有更好的解决方案,请赐教,不胜感激. 使用频率域滤波降低周期噪声 陷波滤波深入介绍 零相移滤波 ...

  8. 第5章 Python 数字图像处理(DIP) - 图像复原与重建17 - 由投影重建图像、雷登变换、投影、反投影、反投影重建

    标题 由投影重建图像 投影和雷登变换 Johann Radon 反投影 滤波反投影重建 由投影重建图像 本由投影重建图像,主要是雷登变换与雷登把变换的应用,所以也没有太多的研究,只为了保持完整性,而添 ...

  9. 第5章 Python 数字图像处理(DIP) - 图像复原与重建16 - 约束最小二乘方滤波、几何均值滤波

    标题 约束最小二乘方滤波 几何均值滤波 约束最小二乘方滤波 F^(u,v)=[H∗(u,v)∣H(u,v)∣2+γ∣P(u,v)∣2]G(u,v)(5.89)\hat{F}(u,v) = \bigg[ ...

最新文章

  1. python3 graphviz入门教程
  2. 《JavaScript启示录》——导读
  3. 笔记-信息系统安全管理-安全审计-作用
  4. 面试智力题:天平称球
  5. EcStore中的App是什么东西?
  6. 第十九期:程序员节,女朋友偷偷送了我这个...
  7. java制作图形界面数据库_java图形界面以及链接数据库
  8. mysql 数据库查看锁表_【数据库】MySQL查看是否锁表
  9. 怎么看b树是几阶_数据库原理基础:设计B树与B+树的目的以及二者的优劣
  10. Give root password for maintenance 问题的解决方法
  11. 山西计算机职业学校排名2015,2015山西专科学校排名及排行榜
  12. bzoj:1828: [Usaco2010 Mar]balloc 农场分配
  13. 乐优商城(14)–订单服务
  14. Misra c规则简介
  15. spc 统计过程控制(Statistical Process Control)分析软件
  16. 微信隐藏代码大全(来源于网络)
  17. 如何写好项目规划和方案设计文档
  18. 使用python制作矢量图
  19. PS不能直接拖入图片的解决办法
  20. 观察 | 家长焦虑,教培着急,暑期“培训热”今年还会持续吗?

热门文章

  1. 微信小程序时间标签与范围联动设计实现
  2. 微信小程序 - 五星评分(含半分)
  3. P2634 [国家集训队]聪聪可可
  4. (2.15)备份与还原--使用作业备份、清理过期备份、清理历史记录、事务日志是否备份过...
  5. MySQL--SQL中的安全问题
  6. 制作vb dll的总结
  7. Lucene.net 下载地址
  8. Google Logos
  9. Mac系统中MongoChef链接MongoDB集群的方法
  10. javascript --- 使用语法糖class定义函数