如何用代码实现不同的去噪方法效果对比?
0 950
0
该提问暂无详细描述
收藏
2021-04-14 18:32 更新 正直的烤面包 •  3996
共 1 个回答
高赞 时间
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图像,另外两张是中值和双边方法的结果。从下图可以看出,当图像被斑点噪声破坏时,中值滤波器的性能优于双边滤波器。但是,当图像被高斯噪声破坏时,双边是最可靠的方法之一。

收藏
2021-04-14 18:29 更新 阿托 •  17013