2011

О линейности в светах

Смотрю тут на свеженамеряные данные по линейности Canon 5D Mark II (текст пишется, в ближайшие дни будет) и думаю вот какую думу:

Максимальный уровень сигнала (на ISO100) в районе 14700. Даже если весь шум определяется исключительно фотонным шумом, среднеквадратичное отклонение будет в районе 120. А на самом деле оно и вовсе 250-260 (при измеряемой плашке 160x160 пикселов).

Получается, что если реальный уровень сигнала у нас, скажем, 14450 (на сигму меньше максимума), то порядка 16% пикселов (выходящих "за сигму" в положительную область) будут обрезаны по максимуму. Что, в свою очередь, приведет к смещению среднего значения для больших плашек (вроде неба или облаков), т.е. испортит "яркость".

Природа обрезки принципиального значения не имеет, это может быть и переполнение пиксела и и обрезка в АЦП и обрезка после АЦП, эффект чисто "математический".

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

Проявляться это будет в самых самых верхах, речь идет о долях стопа (в зависимости величины сигнала т.е. битности камеры)

Главный вопрос дня!

Я сопли пожевал, но до магазина так и не дошел, а тут ВНЕЗАПНО приперло и надо прямо завтра купить (DVD-плейер дал дуба, что-то делать с ним влом, а детям не на чем мультики смотреть).

Поэтому вопрос дня:

Popcorn Hour C-200 или Dune HD Max?

Цена, если с BD-дисководом, отличается мало, это не критерий.

Update: купил Дюну. Работает. От меню удивился и решил почитать мануал попозже....

О плавающей точке

Что напечатает:
  unsigned short v=59259;
  float a=0.0f;
  double b=0.0;
  for(int i=0;i<33*33;i++)
  {
        a+=v;
        b+=v;
  }
  printf("%g\n",(a-b)/(33*33));

Вроде и значения все вполне небольшие, и число итераций сложения вполне человеческое, однако ж.

P.S. При особом везении тут можно и третий знак разницы получить, а не шестой....

О стандартных форматах

Программировал тут вывод в формат CGATS (это в котором всякие цветовые замеры выводятся, пример ниже), по которому я тут уже немного проехался.

Заодно посмотрел много (десятки) примеров таких файликов, чтобы слова списать. Ну и исходники Argyll на предмет "как это читают".

Если кто-то имеет иллюзию, что это такой вот стандартный формат, который все понимают одинаково и все такое прочее, того жизнь еще не била. Даже форматы данных Пенсионного Фонда РФ - луч света в темном царстве в сравнении с CGATS.

Вот, например, загадка:

  • Допустим, у меня в файле есть и LAB и RGB значения.
  • Допустим, там же есть и стандартные отклонения замеров. Начинаем называть колонки: STDEV_L, STDEV_A, STDEV_B, STDEV_R, STDEV_G, STDEV_что?
  • С XYZ/CMYK, кстати, аналогично.

Административное: антиспам

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

Спам достал, а разбираться как оно пробивает капчу - сейчас нет времени.

У зарегистрированных пользователей комментарии принимаются сразу.

Categories:

О постоянстве физических констант

На картинке два Цейсса 28-мм. Год выпуска разный, слева новый (как я нашел в интернетах, объявлен в 2007-м), справа - старый (год точно свежее 1985-го, потому что MM-mount, а точнее я не стал искать). Светосила тоже разная, но для наших целей это несущественно.

Как мы видим, за 20 лет у Цейсса довольно сильно изменилось представление о глубине резкости. Старый объектив на f/16 и фокусировке на бесконечность давал резкое изображение "от 1 метра", а новый - примерно "от 1.7".

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

Интереснее другое, банальная проверка на DOF-калькуляторе показывает:

О применении психотропных веществ в color management

Вот есть у меня Digital Color Checker SG о 140 патчах.

К нему есть файл описания мишени в формате CGATS в котором написано

LGOROWLENGTH    10
NUMBER_OF_SETS  140
Ну то есть длина ROW (строки) 10, всего строк 14.

Дальше там в файле описание мишени для ячеек A1-A10,B1-B10 и так до N1-N10.

Беру в руки саму мишень, держу ее так, чтобы надписи (эти самые A-N и 1-10, название мишени, гордое слово gretagmacbeth) были горизонтальны, как оно естественно человеку.

И что я вижу? 10 строк (row) по 14 элементов.

Вот я же и думаю, если в этой цветовой науке столбцы называют строками, то отчего же мы удивляемся, что там все так?

P.S. С обычным колорчекером, который 4 строки по 6 клеток все так же:

LGOROWLENGTH    4
NUMBER_OF_SETS  24

О Qt и рисовании прямоугольничков

Мой опыт с Qt достаточно своеобразен: как только я начинал лобзиком выпиливать что-то свое руками, внезапно обнаруживалось, что все украдено до нас и есть уже готовое или почти готовое решение. Из последних открытий в этом месте: QGraphicsItemGroup, подошедший мне на 98% после того, как я изготовил свое частное решение (которое, конечно, выкинул после этого).

Но вот столкнулся с задачкой, которая, вроде бы, не решена:

Дано: картинка (разноцветная), на которой рисуются прямоугольнички (selections). Чтобы они были видны на любом фоне, нужно делать XOR в каком-то виде. Или что-то подобное.

В-принципе, QPainter это все умеет, у него есть CompositionMode, где все подобные преобразования можно задать. Но:

Друпалеру на заметку

Если у вас по каким-то причинам есть запись в таблице node, но нет ни одной записи с таким nid в node_revisions, то у вас ВНЕЗАПНО начнут портиться права доступа. Причем rebuild permissions будут помогать ненадолго, до попытки создания очередной node.

Детектируется проблема элементарно:

 select nid from node n where not exists (select nid from node_revisions r where r.nid=n.nid);
Лечится - таким же delete.

Но я сегодня чуть не фалломорфировал, разбираясь.

Почему создание записи с revision не обернуто в транзакцию - мне удивительно, но подозреваю что это привет от MySQL.

О комментариях в программах

Свежий GPU Computing Toolkit 4.0 Release Candidate. Кусок кода примера (OpenCL RadixSort):

//All three kernels run 512 threads per workgroup
//Must be a power of two
#define WORKGROUP_SIZE 256

P.S. Я, по возможности, стараюсь в своих программах комментариев не писать. По вышепоказанной причине. Опять же, FreeBSD kernel is very well documented.

Pages