0
def image_filtering_anisotropic():
"""
Anisotropic image filtering methods
"""
# reading and cleaning the input image
image_ref = io.imread('input.jpg', as_gray=True)
image_retina = np.nan_to_num(image_retina)
image_retina[image_retina < 0] = 1
print("Input Image SNR: " + str(signal_to_noise(image_retina)))
# plotting the outcomes
fig, axs = plt.subplots(3, 1, figsize=(4, 9.5))
axs[0].imshow(image_retina, cmap='gray', vmin=0, vmax=255)
axs[0].set_title("Input")
# log transformation of the input image
log_input = log_transformation(image_retina)
# median filtering
median_output = exp_transformation(median_filtering(log_input))
print("Median SNR: " + str(signal_to_noise(median_output)))
axs[1].imshow(median_output, cmap='gray')
axs[1].set_title("Median Filtering")
# bilateral filtering
bil_output = exp_transformation(bilateral_filtering(log_input))
print("Bilateral SNR: " + str(signal_to_noise(bil_output)))
axs[2].imshow(bil_output, cmap='gray')
axs[2].set_title("Bilateral Filtering")
for j in range(3):
axs[j].set_xticks([])
axs[j].set_yticks([])
plt.tight_layout()
plt.show()
下图可以看出,均值滤波不仅可以去除噪声分量,而且还可以模糊边缘。高斯滤波和双边滤波不能完全消除噪声。但是,与高斯滤波器相比,双边滤波器能够更好地保留边缘。在特征保留和噪声去除方面,中值滤波器比其他方法产生更好的输出。
下图显示了均值和高斯模糊的结果。列中的第一张图像是带有噪声的原始OCT图像,另外两张图像是均值和高斯滤波的结果。
下图的第一张图像是带有噪声的原始OCT图像,另外两张是中值和双边方法的结果。从下图可以看出,当图像被斑点噪声破坏时,中值滤波器的性能优于双边滤波器。但是,当图像被高斯噪声破坏时,双边是最可靠的方法之一。
收藏