我正在处理图像处理问题。
我创建了一个将盐和胡椒粉噪声应用到图像的函数。 这是函数:
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
显然问题出在显示器plt.imshow,但我找不到解决方法
答案 0 :(得分:1)
看imshow
的{{3}},有2个可选参数vmin
,vmax
,其中:
在使用标量数据且没有明确规范的情况下,vmin和vmax定义 颜色图覆盖的数据范围。默认情况下,颜色图覆盖 提供的数据的完整值范围。 vmin,vmax被忽略 如果使用了norm参数。
因此,如果没有为这些参数指定值,则发光度的范围将基于实际数据值,其中最小值设置为黑色,最大值设置为白色。如您所见,这在可视化中很有用,但在比较中却没有用。因此,只需将vmin
和vmax
设置为适当的值(可能为0和255)。