【发布时间】:2021-02-27 04:04:46
【问题描述】:
到目前为止,这是我的代码。我完全迷失了,不知道该怎么办。它的python语言。我不能使用 cv2 或 matpolibic。我只被允许使用 cimpl 和 numpy
from Cimpl import*
import numpy as np
def reduce_noise (image: Image) -> Image:
new_image = copy(image)
for pixel in image:
X, Y, (r, g, b) = pixel
r_list = [r, r1, r2, r3, r4]
r_list.sort()
new_r = r_list[2]
g_list = [g, g1, g2, g3, g4]
g_list.sort()
new_g = g_list[2]
b_list = [b, b1, b2, b3, b4]
b_list.sort()
new_b = b_list[2]
reduce_noise = create_color(new_r, new_g, new_b)
set_color(new_image, X, Y, reduce_noise)
return new_image
image = load_image (choose_file())
show (image)
new_image = reduce_noise(image)
show (new_image)
【问题讨论】:
-
一种最简单的降噪方法是通过计算每个像素的平均值来进行模糊处理,该值等于其周围 3x3 或 5x5 像素的平均值。正如我在您的代码中看到的那样,您尝试(尽管有编码错误)计算它周围一些像素的中值,这也是一种方法。
-
这看起来像是中值滤波器的开始,它对噪声有一定的效果。但它一点也不完整,你没有定义
r1-r4,g1-g4,或者b1-b4。 -
@alex 我使用了你实现中值滤波器的想法并改进了它以使用纯 Numpy,请参阅下面的 my answer。
标签: python python-3.x list python-2.7