如何在Python中向图像添加瑞利噪声?

问题描述 投票:0回答:2

我正在使用

cv2
进行以下图像处理:

import numpy as np
import cv2

image = cv2.imread('./tomatoes.png',cv2.IMREAD_GRAYSCALE)

noise_std = 0.1
noise = np.random.rayleigh(noise_std, image.shape)
noisy_image = image + noise

cv2.imwrite('noisy_image.jpg', noisy_image)
cv2.imshow('Noisy Image', noisy_image)
cv2.waitKey(0)

问题是:当噪声添加到图像中时,我只收到一个白色窗口对话框。

python opencv image-processing scipy computer-vision
2个回答
3
投票

以下是如何在Python/OpenCV中添加瑞利噪声。你有几个问题。首先,将图像转换为浮点数以匹配噪声生成的结果。其次使用 addWeighted 将噪声和图像结合起来。由于瑞利噪声幅度很小,因此需要很大的权重。 (注:我特意选择了很大的权重,以使噪音非常明显)

输入:

import numpy as np
import cv2

img = cv2.imread('lena.png',cv2.IMREAD_GRAYSCALE)
image = img.astype(np.float64)

noise_std = 0.2
noise = np.random.rayleigh(noise_std, img.shape)

noisy_image = cv2.addWeighted(image, 1, noise, 70, 0.0).astype(np.uint8)

cv2.imwrite('lena_rayleigh_noise.png', noisy_image)

cv2.imshow('Image', img)
cv2.imshow('Noise', noise)
cv2.imshow('Noisy Image', noisy_image)
cv2.waitKey(0)

结果:

添加

以下是使用 Imagemagick 脚本 statsfilt 中的统计滤波器对上述图像进行瑞利噪声过滤的结果,网址为 http://www.fmwconcepts.com/imagemagick/statsfilt/index.php。请参阅 Wikipedia,例如,Lp 平均值位于 https://en.wikipedia.org/wiki/Lp_space 和反谐波平均值位于 https://en.wikipedia.org/wiki/Contraharmonic_mean。这两个似乎是最好的,包括几何平均数和调和平均数。我建议使用指数 (p) 为正 2 或更高。

Lp 平均值,p=2:

p=2 的反调和平均值:

p=3 的反调和平均值:

Imagemagick还有一个叫做enhance的降噪功能。我做了五次迭代:

convert lena_rayleigh_noise.png -enhance -enhance -enhance -enhance -enhance lena_rayleigh_noise_enhance5.png

它对白噪声效果很好,但留下了黑噪声。


0
投票

如何在matlab中实现相同的代码?

© www.soinside.com 2019 - 2024. All rights reserved.