从图像中去除噪声或离群像素
Remove noise or outlier pixels from an image
这是我的示例图片:
你可以看到在左下角和主体结构的边缘,有很多噪音和离群的绿色像素。我正在寻找一种方法来删除它们。目前,我尝试了以下方法:
dst = cv2.fastNlMeansDenoisingColored(img_denoise,None,10,10,7,21)
和
dst = cv2.GaussianBlur(img,(7,7),0,borderType=cv2.BORDER_CONSTANT)
None这些方法似乎都去除了这些噪声像素,有没有其他方法或库可以达到去噪和去除这些噪声像素的效果?
试试这个:
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()
这是我的示例图片:
你可以看到在左下角和主体结构的边缘,有很多噪音和离群的绿色像素。我正在寻找一种方法来删除它们。目前,我尝试了以下方法:
dst = cv2.fastNlMeansDenoisingColored(img_denoise,None,10,10,7,21)
和
dst = cv2.GaussianBlur(img,(7,7),0,borderType=cv2.BORDER_CONSTANT)
None这些方法似乎都去除了这些噪声像素,有没有其他方法或库可以达到去噪和去除这些噪声像素的效果?
试试这个:
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()