Python: изображения с плавающей точкой / альтернатива matlab's im2double? - PullRequest
3 голосов
/ 20 марта 2011

Я пытаюсь преобразовать некоторый код Matlab в Python, и функция im2double доставляет мне неприятности.Он берет изображение и возвращает матрицу с пикселями, используя двойные числа вместо целых.

В настоящее время я манипулирую своими изображениями с помощью PIL.У него есть метод convert, который может принимать 'F' в качестве параметра, но все, что он делает, это конвертирует целочисленное значение 255 в 255.0.Насколько я могу судить, бесполезно.

У меня проблема в том, что я выполняю некоторые манипуляции с изображениями, а затем вынужден их сохранять.Я могу нормализовать свои значения так, чтобы они попадали в диапазон 0-255, но я теряю некоторую точность.Он достаточно мал, чтобы обычно это не имело значения, но здесь это имеет значение.

Я пытался использовать формат файла 'tiff', но это не сработало.Хотя я могу писать / читать, результаты, которые я получаю, не являются правильными, которые я могу получить только в момент преобразования пикселей в 255, что приводит к потере точности, как я уже говорил ранее.Я также попробовал этот 'SPIDER' формат файла, который я нашел ранее в Google, который поддерживает PIL, хотя я не мог открыть изображение в редакторе, чтобы проверить, как оно работает.

1 Ответ

1 голос
/ 20 марта 2011

Способ сделать это правильно в Python будет использовать Numpy . Вы можете читать изображения через PIL в массивы . На этом этапе широкий спектр матричных операций, подобных Matlab, становится доступным через numpy / scipy. Чтобы изменить точность массива, достаточно просто переключить тип данных массива с помощью numpy. Последние релизы PIL включают патч от Travis Oliphant, позволяющий вам делать это без лишних взломов.

Сохранение данных в более читабельном формате изображения может быть достигнуто с использованием TIFF с плавающей запятой без потери точности. Я использую библиотеку GDAL для взаимодействия с несколькими авторами / читателями форматов изображений. Если вы хотите сжатие без потерь, TIFF может также сжимать, используя zlib.

...