当前位置:
首页 >
第5章 Python 数字图像处理(DIP) - 图像复原与重建3 - 爱尔兰(伽马)噪声
发布时间:2023/12/10
60
豆豆
生活随笔
收集整理的这篇文章主要介绍了
第5章 Python 数字图像处理(DIP) - 图像复原与重建3 - 爱尔兰(伽马)噪声
小编觉得挺不错的,现在分享给大家,帮大家做个参考.
标题
- 爱尔兰(伽马)噪声
爱尔兰(伽马)噪声
爱尔兰噪声的PDF是
P(z)={abzb−1(b−1)!e−az,z≥00,z<0(5.7)P(z) = \begin{cases} \frac{a^bz^{b-1}}{(b-1)!}e^{-az}, & z\geq 0 \\ 0, & z < 0 \end{cases} \tag{5.7}P(z)={(b−1)!abzb−1e−az,0,z≥0z<0(5.7)
a>ba > ba>b, bbb是一个正整数,"!"是阶乘
均值和方差为
zˉ=ba(5.8)\bar{z} = \frac{b}{a} \tag{5.8}zˉ=ab(5.8)
σ2=ba2(5.9)\sigma^2 = \frac{b}{a^2} \tag{5.9}σ2=a2b(5.9)
仅当分母 为伽马函数Γ(b)\Gamma(b)Γ(b)时这称为伽马密度
当b=1b=1b=1时,为指数噪声
def ireland_pdf(z, a=2, b=1):"""create ireland PDF, math $$P(z) = \begin{cases} \frac{a^bz^{b-1}}{(b-1)!}e^{-az}, & z\geq 0 \\ 0, & z < 0 \end{cases}$$param: z: input grayscale value of iamgeparam: a: float, a > bparam: b: uint, """ireland = (a**b * z**(b-1) / np.math.factorial(b - 1)) * np.exp(- a *z)ireland = np.where(z >= 0, ireland, 0)return ireland更正下面代码,如果之前已经复制的,也请更正
def add_gamma_noise(img, scale=1):"""add gamma noise for imageparam: img: input image, dtype=uint8param: mean: noise meanparam: sigma: noise sigmareturn: image_out: image with gamma noise"""# image = np.array(img/255, dtype=float) # 这是有错误的,将得不到正确的结果,修改如下image = np.array(img, dtype=float)noise = np.random.gamma(shape=1, scale=scale, size=image.shape)image_out = image + noiseimage_out = np.uint8(normalize(image_out)*255)return image_out # 爱尔兰(伽马)噪声 a = 2.1 b = 2 z = np.linspace(0, 10, 200)z_ = b / a sigma = b / a**2print(f"z_ -> {z_}, sigma -> {sigma}")ireland = ireland_pdf(z, a=a, b=b)plt.figure(figsize=(9, 6)) plt.plot(z, ireland) plt.show() z_ -> 0.9523809523809523, sigma -> 0.4535147392290249 # 伽马噪声 img_ori = cv2.imread("DIP_Figures/DIP3E_Original_Images_CH05/Fig0503 (original_pattern).tif", 0) # img_ori = np.ones((512, 512)) * 128 img_gamma = add_gamma_noise(img_ori, scale=20)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_gamma, 'gray', vmin=0, vmax=255), plt.xticks([]), plt.yticks([])plt.tight_layout() plt.show() hist, bins = np.histogram(img_gamma.flatten(), bins=255, range=[0, 255], density=True) bar = plt.bar(bins[:-1], hist[:])总结
以上是生活随笔为你收集整理的第5章 Python 数字图像处理(DIP) - 图像复原与重建3 - 爱尔兰(伽马)噪声的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: java编程基础 | 练习题
- 下一篇: 第5章 Python 数字图像处理(DI