А если не кот, то кто?

Берем grayscale/floating point/32bit изображение.

И сохраняем его из фотошопа как 24 bit/floating point/TIFF:

Фотошоп, конечно, честно предупреждает, что хрен кто прочтет:

И ведь не врет. Открываем результат в IrfanView:

И наслаждаемся.

При этом:

  | 5)  PhotometricInterpretation = 1 => это Grayscale
  | 10) SamplesPerPixel = 1 => одно значение на пиксель
Правда
   | 3)  BitsPerSample = 24

И это, наверное, и сбивает IrfanView с панталыку, эвристика какая-то срабатывает, раз 24 бита, значит RGB


 

Comments

А чё! Красиво получилось!
Почти как кросс процесс ;)

Полярное сияние под кислотой)

А я, помнится, долбил FastStone, чтобы они поддержали 16 bit Lab TIFF.
Видать, разрабы посмотрели на весь этот зоопарк в формате и сказали «ну, нахер».

LAB будет завтра. Там, смешно сказать, ICCLAB и CIELAB, два разных формата....

А вот gray/FP/24бита - загадочный формат оказался, фотошоп его пишет, а вот прочесть его пока ничем (ну кроме фотошопа же) не могу. Оно, конечно, честно предупреждает, то не так оно легко.

Таки да, GIMP и Imagine тупо вылетают. XnView неправильно определяет всё: и модель, и битность, в итоге показывает зёбру.
А UPLab — он к ICCLAB?

А UPLab, AFAIK. это кривой LAB, надо править профилем до конверсии в RGB. Но RPP вроде сохраняет в нормальном LAB

А еще я вспомнил, что бывают Gray (и RGB) с альфа-каналом :)

Попробуйте этим: https://alivecolors.com

Ух ты, открывает. С неверной гаммой (профиль встроенный верный есть), но хотя бы читает.

Хм, типа, православный клон фотошопа? Ну хоть подписка недорогая.

Я честно скажу - файл проверил и сразу снес обратно.

Но вот то что заявлена обработка на видяхе - повод посмотреть когда-нибудь повнимательнее, я люблю такое.

А что такое FP24 вообще? IEEE такого не знает.

А Adobe - теоретически знает. 8 бит экспоненты, 16 бит мантиссы (оба со знаками).
Только вот попытка раскодировать по этому знанию - не работает.

Загадочно зачем так вообще...

Ну если 16 бит мало, а 32 много, то вот есть вариант.

Причем, вот в DNG тоже бывает 24 бита и насколько я код оттуда к себе скопипастил, DNG-шные FP24 таки другие, чем фотошоп пишет. Правда DNG всегда (ну все что я видел) с предиктором, а у фотошопных даже без предиктора - хрен пойми что.

Если всерьез приспичит, разберемся (наверное) уж всяко из фотошопа можно один и тот же файл посохранять - и известно какие чиселки ожидать в этом FP24.

FP вообще непонятно зачем кроме HDR нужен а там свои форматы...

FP - прекрасный формат для хранения линейных данных, потому что внутре у него неонка логарифм.

А линейные данные - это может быть, к примеру RAW из которого вычтен (усредненный) темновой кадр. Ну или сам такой темновой кадр. Т.е. далеко не только HDR

И тут - 32bit/int - много (но можно, конечно), а FP16 или FP24 в самый раз.

Ну так HDR это и есть линейные данные. А там и FP16 и FP32 и FP64, на выбор, на сколько я помню.
Ну и FP24 это, как по мне, экономия на спичках совсем. FP32 же стандартен.

Ну и в случае HDR: HDR-форматы не предназначены для хранения HDR-raw (т.е. склейки), там нет места тому же балансу белого например. А FP-DNG (а это тот же TIFF, правда как раз 24 бита/FP там отличаются) - очень к месту.

Нужно ли хранить такую склейку? Для меня неочевидно. Это же восстановимый промежуточный формат.

Так не хранить (долго). Intermediate между склейщиком и raw-проявщиком.

Ну так 32 бита или все 64, что экономить-то на временном файле? А по-хорошему, вообще через пайп. Но это фатастика, да.

Оно далось.
Почему-то (вот не вдавался) внутрь DNG SDK и из libtiff - байты вылазиют в разном порядке. Загадка.

вот тут очень смешное:

http://chriscox.org/TIFFTN3d1.pdf

Field: SampleFormat
Tag: 339 (153.H)
Type: SHORT
Count: N = SamplesPerPixel
Value: 3 = IEEE Floating point data

Field:BitsPerSample
Tag:258 (102.H)
Type:SHORT
Count:N = SamplesPerPixel
Value:16 or 24

Так IEEE или 16/24? :-)))))

Там, кстати, и формат есть.

Да-да, оно.
И вот тамошний FP24 - не раскодируется как написано.

Весело.

Я, правда, схалявил - я взял 24-битный декодер из DNG SDK, не сам писал.
Так вот, и при попытке применить предиктор, и без нее - чушь вылазит.

Остается конечно вариант, что внутри libtiff (ошибочно) применен какой-то предиктор, либо byteswapped.