matplotlib 为什么灰度图像在添加椒盐噪声并使用中值模糊后显示为绿色?

46scxncf  于 2023-06-23  发布在  其他
关注(0)|答案(1)|浏览(114)

目前,我面临的问题与图像,我把盐和胡椒噪声和使用后,中值模糊的图片,它的绿色甚至做图像的灰度。
原始图像:

下面是我使用的代码。我把原图转换成灰度图。

img1 = cv.imread('foto_1.jpeg',cv.IMREAD_GRAYSCALE)

这里我添加了盐和胡椒噪声(我知道这不是最好的代码,但我需要避免使用open cv,因为这是我老师的指示)。

ruido1 = np.zeros_like(img1)
cv.randu(ruido1, 0, 255)
x,y = img1.shape 
img_con_sp_1 = img1.copy()
prob = 0.00001
pixel
for i in range(x):
    for j in range(y):
        rdn = random.randint(205, 255)
        if ruido1[i][j] < int(255 - (rdn*(1-prob))):
            img_con_sp_1[i][j] = 0
        elif ruido1[i][j] > 255 - int(255 - (rdn*(1-prob))):
            img_con_sp_1[i][j] = 255
        else: 
            img_con_sp_1[i][j] = img1[i][j]
imshow("imagen con S&P 1",img_con_sp_1,size=12)

这里的一部分,我使用的中值模糊从开放的简历,但它的形象越来越绿色。

median_blur = cv.medianBlur(img1, 7)
plt.imshow(median_blur)
plt.show()

你能帮我知道我做错了什么吗?

a11xaf1n

a11xaf1n1#

图像没有变成绿色,而是根据Matplotlib的默认色彩Map表viridis进行着色,即蓝色表示较暗的格雷,绿色表示中间值,黄色表示浅灰色。我不明白你怎么能说它是绿色的。不过……
来自plt.imshow文档
输入可以是实际的RGB(A)数据或2D标量数据,其将被渲染为伪彩色图像。为了显示灰度图像,使用参数cmap='gray', vmin=0, vmax=255设置颜色Map。

相关问题