我正在研究一个图像处理问题。
我创建了一个将盐和胡椒噪声应用于图像的函数。下面是函数:
def sp_noise(image,prob):
res = np.zeros(image.shape,np.uint8)
for i in range(image.shape[0]):
for j in range(image.shape[1]):
rdn = random.random()
if rdn < prob:
rdn2 = random.random()
if rdn2 < 0.5:
res[i][j] = 0
else:
res[i][j] = 255
else:
res[i][j] = image[i][j]
return res当我想要显示结果时,出现了问题。
wood = loadPNGFile('wood.jpeg',rgb=False)
woodSP = sp_noise(bois,0.01)
plt.subplot(1,2,1)
plt.imshow(bois,'gray')
plt.title("Wood")
plt.subplot(1,2,2)
plt.imshow(woodSP,'gray')
plt.title("Wood SP")我不能直接发布图片,但这里有链接:

情况则更为暗淡。但是当我显示像素的值时
但是当我显示两个图像之间的像素值时,的值是相同的:
[[ 99 97 96 ... 118 90 70]
[110 110 103 ... 116 115 101]
[ 79 73 65 ... 96 121 121]
...
[ 79 62 46 ... 105 124 113]
[ 86 98 100 ... 114 119 99]
[ 96 95 95 ... 116 111 90]]
[[255 97 96 ... 118 90 70]
[110 110 103 ... 116 115 101]
[ 79 73 65 ... 96 121 121]
...
[ 79 62 46 ... 105 124 113]
[ 86 98 100 ... 114 119 99]
[ 96 95 95 ... 116 111 90]]我还检查了平均值:
117.79877369007804
117.81332616658703显然问题出在display plt.imshow上,但我找不到解决方案
发布于 2019-04-28 04:29:35
查看imshow的documentation,有两个可选参数,vmin,vmax,它们:
当使用标量数据且无显式规范时,vmin和vmax定义色彩映射覆盖的数据范围。默认情况下,色彩映射表覆盖所提供数据的完整值范围。如果使用norm参数,则忽略vmin和vmax。
因此,如果没有为这些参数指定值,则光度范围基于实际数据值,最小值设置为黑色,最大值设置为白色。正如您所发现的,这在可视化方面很有用,但在比较中并不有用。因此,只需将vmin和vmax设置为适当的值(可能为0和255)。
https://stackoverflow.com/questions/55883532
复制相似问题