【问题标题】:Remove noise or outlier pixels from an image从图像中去除噪声或异常像素
【发布时间】:2021-08-02 12:48:22
【问题描述】:

这是我的示例图片:

你可以看到在左下角和主体结构的边缘,有很多噪点和异常绿色像素。我正在寻找一种方法来删除它们。目前,我尝试了以下方法:

dst = cv2.fastNlMeansDenoisingColored(img_denoise,None,10,10,7,21)

dst = cv2.GaussianBlur(img,(7,7),0,borderType=cv2.BORDER_CONSTANT)

这些方法似乎都没有去除这些噪声像素,有没有其他方法或库可以达到正确去噪和去除这些噪声像素的结果?

【问题讨论】:

  • 算法如何知道小绿色斑点对您来说是“噪音”,而不是图片的有趣和重要特征?

标签: python opencv image-processing noise-reduction


【解决方案1】:

试试这个:

import matplotlib.pyplot as plt

from skimage.restoration import (denoise_tv_chambolle, denoise_bilateral,
                                 denoise_wavelet, estimate_sigma)
from skimage import data, img_as_float
from skimage.util import random_noise
from skimage import io

img =  io.imread('img.png')


original = img_as_float(img)

sigma = 0.155
noisy = random_noise(original, var=sigma**2)

fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(8, 5),
                       sharex=True, sharey=True)

plt.gray()

sigma_est = estimate_sigma(noisy, average_sigmas=True)

ax[0].imshow(noisy)
ax[0].axis('off')
ax[0].set_title('Noisy')
ax[1].imshow(denoise_tv_chambolle(noisy, weight=0.1))
ax[1].axis('off')
ax[1].set_title('Noise-removed')


fig.tight_layout()

plt.show()

【讨论】:

    猜你喜欢
    • 2014-05-22
    • 1970-01-01
    • 2023-04-05
    • 2021-08-16
    • 2011-12-30
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多