为什么在Python中用PIL重新缩放图像时会得到负像素值?

2024-09-29 21:54:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用PIL的resize函数将32x32像素的图像重新缩放到28x28。我首先读取像素值均为255或0的PGM图像(通过查看文件进行验证)。但是,当我重新缩放时,一些像素值变为负值。

currIm = Image.open(os.path.join(currSrc,currFile))
currIm2 = currIm.resize((28,28), Image.BICUBIC

imData = numpy.asarray(currIm)
imData2 = numpy.asarray(currIm2)

imData中的所有值都是0.0或255.0,这是我所期望的。然而,imData2中的“抗锯齿”像素往往是负数,其值在0到-50之间变化,通常在-30左右。

为什么会发生这种情况?我该如何解决它?不管值多少钱,currIm和currIm2都有mode='F'(Float??)

在注意:这是似乎不是什么问题图像.双线性插值


Tags: 文件函数图像imagenumpypil像素asarray
1条回答
网友
1楼 · 发布于 2024-09-29 21:54:28

PIL实现实际上可能是正确的。在

一些插值函数,包括双三次函数,容易出现“超调”。基本上,如果一个小区域内的值变化足够剧烈,插值函数可以生成原始范围之外的值。在

看看维基百科关于Bicubic Interpolation的文章。有一个示例图像演示了对acutanceringingclipping的一些效果和引用。在

相关问题 更多 >

    热门问题