我想确定图像是否包含噪点。示例:盐和胡椒噪声或高斯噪声。我也想测量图像中的噪点数量。我该怎么办?我可以通过分析图像的直方图来做到这一点吗?下面是我的初始代码;
import matplotlib.pyplot as plt
import numpy as np
import os.path
if __name__ == '__main__':
image_counter = 1
while True:
if not os.path.isfile('crop_images/' + str (image_counter) + '.png'):
break
image_path = 'crop_images/' + str(image_counter) + '.png'
image = plt.imread(image_path)
#Display Histogram
print(image)
print(image.ravel())
n, bins, patches = plt.hist(image.ravel(), bins = 256)
plt.title('Image Patch # ' + str(image_counter))
plt.xlabel('Grey Value')
plt.ylabel('Frequency')
window = plt.get_current_fig_manager()
window.canvas.set_window_title('Histogram')
plt.show()
image_counter = image_counter + 1
S&P噪点:这意味着图像的某些随机像素设置为黑色或白色(或每个通道一些恒定值)。如果图像的直方图中的峰值为0和255(或每个通道一些恒定值),则可能会出现盐和胡椒噪声。您可以应用中值滤波器来消除噪声,并且使直方图中的尖峰最小化的内核大小可以通知您有关噪声级别的信息。
高斯噪声:这意味着图像中有些模糊。拉普拉斯内核最好同时生成和检测模糊。如果将Laplacian内核应用于图像并获取其变化量,答案将为您提供图像的“前卫性”。如果数字高,则表示方差高,表示图像中出现突然变化(即边缘!),这意味着较少的模糊。