О цветопередаче

Еще один пост, родившийся из комментария.

Давид Мзареулян спрашивает:

Вот у нас сенсор (+АЦП). Сигнал от него, как я понимаю, линейный с высокой точностью. Даже если точность не очень высокая, то откалибровать отклик конкретной модели сенсора не должно составлять труда. Перед сенсором светофильтры. Они тоже линейно сворачивают спектр в скаляры. RGB-пространство тоже линейно, ну гамма там по яркости. Получается, что задача преобразования сигнала от сенсора в RGB линейная с точностью до одной единственной заданной гаммы. Значит, чтобы заставить монитор светиться так же как светился объект перед камерой, достаточно линейно преобразовать сигнал от сенсора. С точки зрения цвета это означает ткнуть пипеткой в нейтральный объект и таким образом найти взаимные коэффициенты для трёх каналов. Ну и гамму потом наложить. Всё, этого должно быть достаточно.

Что я упускаю? Потому что если я ничего не упускаю, то совершенно непонятно, почему разные конвертеры по-разному разрешают и передают цвета с разных камер а они таки их передают по-разному.

Отвечаем (чуть подробнее, чем в том комментарии в ЖЖ):

О чувствительности цифровых камер

Скопирую из комментариев в raw-rpp, снабдив ссылками, потому что тема всплывает настолько регулярно, что надо куда-то давать ссылку, а не писать по десятому разу одно и то же.

Реплика:

проблема в том,что для обычного фотографа,юзающего цифрозеркало не хватает ТЕЗИСНЫХ определений простой пример-мне для работы необходимо знать
-возможности матрицы при условных исо от 100 до 400 (изменение диапазона матрицы)пусть с использованием внешнего экспонометра
-возможности матрицы при 3200 и 5500 (исправление разбаланса по каналам)
Ответ:

Правильно, тезисных определений не хватает.

В частности, нету определения "чувствительности в RAW", стандарт который на эту тему есть - определяет в лучшем случае чувствительность для JPEG (честно скажу, стандарт читал давно, а освежал мнение только изложением его в википедии).

С другой стороны, для пленки оно даже хуже: для латентного изображения понятия чувствительности вовсе нет, а для проявленного - есть, но чувствительность (и вообще вся характеристическая кривая) сильно зависят от режима проявки. А проявить, в отличие от RAW, можно только один раз.

Понятно что есть некий стандартный режим, но скажем для слайда результаты в погружной машине и в маленьком баке - при одном времени проявления и температуре - отличаются. И для листов и узкой пленки - отличаются. То есть единственный реальной стандартный процесс который был - это C41 (да и то, я вот обычно немножко перепроявлял, мне так нравилось).

Поэтому практический совет достаточно очевидный

  1. Если вы пользуетесь каким-то стандартным "проявителем" для цифры, ну там RPP или LR (или внутрикамерным, получая JPEG) - ну так померьте тоновую кривую один раз. В отличие от пленки, специализированного прибора (денситометра) не нужно, все есть в фотошопе. Но что для разных проявителей кривая отличается - ну это такой факт, это и для пленки так было.

    То что ACR (а значит и LR) поднимая полутона режет при этом света (при настройках по нулям) - будет для проделавшего этот эксперимент (не)приятным сюрпризом.

  2. Как минимум три года есть инструментарий (имени меня), который позволяет посмотреть "а что там в RAW на самом деле". Мой текст о запасе в светах у 5DMark II на libraw.su - датирован 20 февраля 2009 т.е. ровно 3 года назад.

    Не говоря о поминавшемся тут уже свежем туле RawDigger, который позволяет это проделать удобно. Ну и Rawnalyze тоже был/есть.

Но, конечно, то что у Adobe есть скрытая поправка в ~0.3-0.5 стопа, плюс "неявная" поправка, которая бывает тоже в полстопа (а бывает, наверное, и больше) - это такое интересное открытие, которое каждый делает для себя сам, так уж повелось испокон веку.

Друпальское: аккуратно разложенные грабли в pager

Для памяти, чтобы не забыть.

Со всей дури налетел на эту вот особенность: Pager missing if views is installed.

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

Только вот в одном случае строится список комментариев с pager, а в другом - нет.

Когда в очередной раз обгуглился и нашел про Views, то конечно стало понятнее:

  • Блок Views с pager у меня таки был.
  • А в тех дизайнах, где pager под комментариями появлялся - просто не выводился этот блок из Views.
Штатное лечение - каждому pager во views - задать уникальный (по сайту) Pager ID, благо средства для этого есть. Риторический вопрос только один, а почему этот Pager ID сразу не формируется уникальным, ну там из ID view и номера блока в нем.....

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

10G дома: Myricom + Samba

Продолжаем развлекаться с 10G. Сначала картинка, чтобы было веселее. Это копирование с локального диска на "NAS"

Под катом - как она получена (и почему NAS в кавычках)

Анонс: калибровка экспонометра цифровой камеры по RAW-данным

Хочу напомнить, что сайт RawDigger - это не только ценный мех сайт программы, там будут публиковаться тексты про применение RawDigger в обычной фотографической практике, а не только для фотодро.. глубокого технического анализа камер.

Сегодня опубликован очередной опус:

Калибровка экспонометра цифровой камеры - о том как по двум кадрам за три минуты понять, что же именно меряет экспонометр вашего dSLR и почему это знание нельзя заменить камерной гистограммой.

Прошу любить и обсуждать. Лучше там, но можно и тут.

RawDigger 0.9.8

Я вот люблю проехаться по моральным индусам и прочим программистам, которые свои произведения не тестируют, ну вот сам и огреб из той же серии. Багу сначала залечил, а потом, улучшая другое место, снова внес, уже другим способом. Поделом мне, не надо новые версии в понедельник тринадцатого выпускать.

Встречайте: RawDigger 0.9.8. Прошу любить и жаловаться.

Изменения космические косметические:

  • Гистограмма всего файла вызывается/прячется по Ctrl-H
  • Вызов File-Open, File-Prefs через шорткаты - работает из любого окна программы
  • Окончательно (хочется надеяться) полечено падение при изменении настроек без открытого файла
P.S. Впрочем, все пользователи программы, кто не хакнул обращение к интернету при старте, об этом апдейте узнают автоматически.

Про Drupal7: ненависти (вместо любви) псто !

Только я собрался написать, что впечатления про Drupal7 более-менее положительные, все такое современное, с оверлеями и прочими понтами... как вдруг, внезапно, вылезла проблема:

Если пойти на сайт под D7 по битому URL somesite.domain/node/some-garbage

То вылезает PDO Exception, дескать к числовому полю ходят с символьным ID. Ну, как минимум под PostgreSQL вылезает, возможно MySQL к этому более толерантен (и мусор превращает, скажем, в 0, что не менее прекрасно).

В Drupal6 это место сделано куда разумнее, возвращается обычная страница '404' (нема такой страницы).

Понятно, можно подпереть на фронтенде, фильтровать после /node/ (/comment/, /user/) весь нечисловой мусор, но слишком много исключений (/node/add, небось и всякие /node/что-то-еще тоже бывают).

Значит надо фильтровать уже внутри, там грузится нечто по ID (или списку), ID бывает только числовой.

Гуглую и нахожу прекрасное: PDOException:Invalid text representation when attempting to load an entity with a string ID.

Ровно эта ошибка, ну думаю внесли недавно, сейчас возьму оттуда патч, а в следующем релизе поправят.

Ни хрена! Проблема открыта 21 декабря 2010, сопли жуют уже больше года, и все ради патча на 7 строк (который тривиален и работает, я его оттуда взял, последний по списку).

Я догадываюсь, что проблема в процедуре: активная ветка жалоб приписана к Drupal8, который какбэ девелопится. А репорты про 7.x (один нашел, тоже больше года ему) - помечен как duplicate от D8, вычеркнут и в боевой версии D7 его какбэ и нету. Запихали проблему под ковер.

отчего я такой добрый и терпеливый при моей-то тяжелой жизни? Другой бы на моем месте давно всех убил, один остался...

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

RawDigger 0.9.7

RawDigger

Пока у пользователей RawDigger не выработалась привычка читать анонсы на сайте проекта, буду частично дублировать их тут.

Первая неделя публичного тестирования выявила некоторое количество проблем и недоработок, спасибо нашим пользователям! Версия 0.9.7 правит все замеченные ошибки и добавляет те новые свойства, которые оказались интересными и несложными в реализации.

То что не реализовано пока - сохранено в TODO, надеюсь что руки постепенно дойдут до всего.

Существенные изменения

  • Необходимость сети для запуска
    • Проверка обновлений учитывает системные настройки интернет-соединения. Если вы работаете через proxy, поставьте правильные настройки в Control Panel - Internet Options - Connections - LAN Settings.
    • Можно однократно отключить проверку обновлений, запустив noCheckUpdates.reg (находится в каталоге программы, ProgramFiles [(x86)]/LibRaw/RawDigger при установке по-умолчанию ), эта настройка сбрасывается при запуске.
    В результате, сидящие за proxy или вовсе без интернета имеют возможность оценить наше изделие.

    Фошшизм с интернетом будет продолжаться до релиза. Нам действительно важно, чтобы вы вовремя обновлялись.

  • Имя файла для открытия может быть передано в командной строке. Программа воспринимает первый переданный аргумент как имя файла и пытается его открыть. Соответственно, можно драгать-дропать файл на иконку приложения.
  • Поддержан Drag-and-Drop файлов в окно приложения. Если передается группа файлов, открыт будет только один файл (первый, но сортирует операционная система).
  • Новые настройки:
    • Новая настройка "предупреждать о несохраненных самплах в списке самплов".
    • Новая настройка "сохранять размер/позицию главного окна" (при запуске позиция будет восстановлена только если настройка стоит).
    • Новая настройка "запоминать рабочий каталог" облагорожен порядок обхода контролов по Tab
  • Показ данных всех каналов RAW в greyscale (режим взаимоисключающий с 2x2 pixels). В этом режиме может быть показан и не RGB(G) RAW-файл.

10G дома: Myricom 10G

Помимо Infiniband-карточек, я, как и собирался, запасся картами Myrinet 10G. Портов меньше, дороже (получилось $80 за карту), но тоже интересно.

После пары дней мучений (о которых ниже) удалось получить такое вот (tcp, 1 поток):

------------------------------------------------------------
Client connecting to 10.3.1.2, TCP port 5001
TCP window size:  256 KByte
------------------------------------------------------------
[  3] local 10.3.1.1 port 1383 connected with 10.3.1.2 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  7.77 GBytes  6.68 Gbits/sec
Это Iperf, между Win7 и Linux. Медленнее чем IB в connected mode, быстрее чем в обычном режиме. Что неудивительно, ибо в connected mode размер пакета 64k, в обычной - 2k, а тут чем больше - тем лучше.

Плюсы (в сравнении с Mellanox):

  • Есть драйвера для мака (не пробовал). Ну и вообще, все кроме Windows поддерживают сходу, для виндов - просто ставятся драйвера.
  • Аппаратные контрольные суммы для IP, в случае IPoIB все считается, как я подозреваю, софтом. В результате 26Gbit (два двунаправленных потока по IB) грузят i7-920 ровно наполовину. Мне, впрочем, нужно меньше, оттого я не сильно парюсь.

Минусы:

  • Никаких наворотов, вроде Winsock Direct, SRP, SDP, RDMA. Просто Ethernet 10G. Это может быть и плюс, если хочется просто работать (Subnet Manager не нужен, ARP как у людей и т.п.), но IB-шные навороты в локальном масштабе вполне могут быть и полезны.
  • Один порт. Т.е. цена за порт выше раза в 4 (хотя и остается низкой).
  • Карты сильно греются, пришлось искать слот с обдувом.
В бой поставлю, пожалуй, IB, а пару этих оставлю в заначке, может и пригодятся.

10G дома: IB performance

На всплывавший ранее вопрос "а потянет ли PCIe 1.0 8x два порта Infiniband" ответить не могу, ибо кабель на руках пока один. Один порт тянет:

                    RDMA_Read Bidirectional BW Test
Connection type : RC
  local address:  LID 0x200, QPN 0x8042600, PSN 0xd0710000, RKey 0x3100f6 VAddr 0x00000000f60040
  remote address: LID 0x100, QPN 0x8041c00, PSN 0x982e0000, RKey 0x3100b6 VAddr 0x00000001060040
Mtu : 2048
------------------------------------------------------------------
 #bytes #iterations    BW peak[MB/sec]    BW average[MB/sec]  
      2        1000               0.79                  0.75
      4        1000               1.81                  1.51
      8        1000               3.38                  3.00
     16        1000               8.44                  6.02
     32        1000              12.67                 12.02
     64        1000              25.33                 23.41
    128        1000              67.55                 44.28
    256        1000             108.09                 81.34
    512        1000             170.66                164.09
   1024        1000             432.35                323.87
   2048        1000             720.58                660.57
   4096        1000            1127.86               1107.30
   8192        1000            1572.17               1485.81
  16384        1000            1729.38               1712.38
  32768        1000            1804.58               1797.25
  65536        1000            1844.68               1836.56
 131072        1000            1857.06               1856.84
 262144        1000            1867.50               1866.47
 524288        1000            1872.77               1871.86
1048576        1000            1874.88               1874.69
2097152        1000            1876.21               1876.13
4194304        1000            1876.87               1876.80
8388608        1000            1877.20               1877.18
------------------------------------------------------------------

Это двунаправленный BW, один поток туда, другой - обратно, одновременно. Я щетаю, 7.5Gbit/s payload в одну сторону (из теоретических 8.0) - это вполне нормально.

Заодно понятна польза Jumbo Frames на Ether, особливо на 10G.

Под катом Latency:

10G дома: первые успехи

Как я и предполагал в предыдущем посте на тему, дело было в бобине кривом кабеле (а чего я хотел за $16 без доставки...).

Не сдержался, купил 3-метровый D-Link в московской рознице, руки то чешутся.

Все практически мгновенно завелось, с одной тонкостью, результат вполне бодрый:

ttcp PID=0x1e20 TID=0xd60
ttcp -t: buflen=65000, nbuf=10000, align=16384/0, port=5001  tcp  -> 10.1.1.2
ttcp -t: 650000000 bytes in 718.00 real MilliSeconds = 863.35 MByte/sec +++
ttcp -t: 10000 I/O calls, msec/call = 0.07, calls/sec = 13927.58

Это Connected Mode, MTU 65520, размер пакета - 65000 для ровного счета. Windows - Windows.

А помянутая выше тонкость простая: если нет свитча, то Subnet Manager надо запускать до того, как воткнута карта. Без этого оно о скорости договаривается не всякий раз правильно, бывают и те 1x, которые меня мучали в прошлый раз.

И, сюрприз, IPoIB прекрасно работает при 4x, но не работает на 1x. Хотя Infiniband-пакеты успешно ходят на обеих скоростях.

Плотно займусь рассмотрением скоростей (самба, iscsi, SRP) - не раньше выходных, пока RawDigger не дает отвлечься. C FreeBSD, вероятно, тоже будут приключения.

RawDigger: все что вы хотели узнать про RAW, но боялись спросить

RawDigger В публичное бета-тестирование выпущена программа RawDigger, предназначенная для просмотра, изучения и анализа RAW-файлов. Она позволяет:
  • Смотреть глазами на сам файл в RAW-виде (и в RGB тоже).
  • Смотреть значения RAW-данных для отдельных пикселов в RAW-файле.
  • Считать поканальную статистику RAW-данных по файлу или по произвольному прямоугольному участку.
  • Строить гистограммы RAW-данных по файлу или по его участку.
  • Сохранять статистику и гистограммы в удобном виде.
  • Сохранять тоновые кривые RAW (для тех файлов, где они есть).
Поддержаны важные особенности RAW-файлов:
  • Вычитание/невычитание черного (c поканальной регулировкой уровня черного при желании)
  • Включение/выключение тоновой кривой.
  • Показ/непоказ черной рамки.
Кроме того, есть довольно длинный список TODO (который мы надеемся расширить с помощью пользователей), функциональность будет расширяться.

Pages

Subscribe to blog.lexa.ru: все статьи