Я столкнулся с какой-то проблемой при преобразовании целочисленного изображения в изображение с плавающей запятой с использованием 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
. Я ничего не нашел при чтении кода на Гитхаб...
Почему это возможно?