Перейти к содержимому


Float vs Integer


Сообщений в теме: 2

#1 e573

  • Пользователь
  • 122 сообщений
  • Город:Москва

Отправлено 06 November 2013 - 07:47

Хотелось бы услышать мнение форумчан вот по какому вопросу.
Кроме Photoshop ACR, LR и т.д., в последнее время появляются RAW конвертеры, которые используют арифметику с плавающей точкой (вместо целочисленной, как, например, в Ps-почему он в 8 бит и работает достаточно быстро)- http://www.raw-photo...P/Overview.html , http://rawtherapee.com/ (v4), Photivo, частично DXO и LightZone.

В переводе руководства к RT v4 сказано:
RawTherapee 4, вероятно, единственный raw-конвертер реального времени выполняющий операции с изображением в высокоточном 32-битном представлении чисел с плавающей запятой (в противоположность к 16-битному целочисленному представлению в большинстве
других конвертеров, подобно DCRAW и RawTherapee до версии 3.0).
Классические конвертеры работают с 16-битными целыми числами. Иными словами, пиксель одного цвета имеет величину от 0 до 65536 (для увеличения точности конвертеры обычно расширяют диапазон 12-14-битных значений, полученных с камеры, до 16 бит). У этих чисел нет
дробной части, например, между 102 и 103 нет других значений. В противоположность этому, числа с плавающей запятой содержат намного бóльший диапазон с точностью 6-7 значащих цифр. Это особенно помогает в светах, где могут быть восстановлены данные. Это также
оказывается полезным в промежуточных цепочках вычислений пере- и недоэкспонированных снимков без потери информации. Дробные значения также помогают избежать постеризации на плавных цветовых переходах.

Есть ли у кого РЕАЛЬНЫЕ фотографии (а не тестовые, как на http://www.libraw.or...tina-lente.html ), которые доказывают, что арифметика с плав. точкой в самом деле лучше целочисленной, или же целочисленной арифметики в большинстве случаев достаточно для обработки фотографий, (если использовать 16 бит вместо 8)?

#2 NiOl

  • Пользователь
  • 4046 сообщений
  • Город:Московия

Отправлено 06 November 2013 - 08:04

По теме: результат действительно должен быть лучше. но на глаз это не сразу заметно.
По оффтопу: позволю себе по-философствовать. Хоть плавающей арифметикой и занимается отдельная часть проца, т.е. идет более полная нагрузка на камень, но сам принцип плавающей арифметики таков, что она не сильно шустрая. Так что могу предположить, что грамотное использование целочисленных 32бит может дать точно такой же результат, как если бы использовать те же 32 бита, но с плавающей запятой, но будет все значительно шустрее. Особенно будет заметен отрыв на первой же операции, использующей умножение или деление.
Как грамотно использовать целочисленную арифметику? Могу привести простой пример: в далеких 90х знакомый рисовал небольшую программку для бухов и для подсчетов рублей использовал тип данных "real". Надо сказать, что работа на ХТ заставляла учиться оптимизировать код. Прога реально притормаживала, и тогда я предложил считать не в рублях, а в десятых долях копеек, но в типе "longint", а перед выводом результатов просто делить значение на 1000 для рублей и с округлением брать остаток от деления для копеек. Комфорт пользования вырос на порядок, а точности в десятые доли копеек хватило с избытком.

#3 e573

  • Пользователь
  • 122 сообщений
  • Город:Москва

Отправлено 07 November 2013 - 07:00

Просмотр сообщенияNiOl (06 November 2013 - 08:04) писал:

По теме: результат действительно должен быть лучше. но на глаз это не сразу заметно.
Проделал простейшее сравнение: Скачал RAWTherapee v4 (RT4)-float engine и RT3 - integer 16 бит engine (благо программы бесплатные) и одну и ту же фотографии обработал в RT4 и RT3. Разница огромная в пользу RT4, но из-за чего это так - то ли из-за применения плав. точки, то ли из-за разных настроек по дефолту в RT4 и RT3-пока неясно...





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных