使用scikit-image将整数图像转换为浮动图像时,我遇到了一些问题。
这是一个例子(图像是2像素图像):
from numpy import array,uint8;
import skimage;
rgb = array([array([[0,0,0],[0,0,5]])])
i1 = skimage.img_as_float(rgb)#rgb.dtype ->dtype('int32')
i2 = skimage.img_as_float(rgb.astype(uint8))
i3 = skimage.img_as_float(rgb.astype(float))
print i1[0,1,:]
print i2[0,1,:]
print i3[0,1,:]
我期待这个:
[ 0. 0. 5.]
[ 0. 0. 5.]
[ 0. 0. 5.]
但我得到了这个:
[ 2.32830644e-10 2.32830644e-10 2.56113708e-09]
[ 0. 0. 0.01960784]
[ 0. 0. 5.]
从float
到int
的丢失精度是正常的,但是在使用int
从float
传递到img_as_float
时,我丢失了真实信息。在GitHub ...
为什么这可能?
答案 0 :(得分:2)
img_as_float()
不仅仅是类型转换,它将完整的无符号整数范围转换为[0,1],将有符号整数范围转换为[-1,1]。