Не хочется занудствовать, но в начале немного придётся. Зато потом будет много картинок.
- HDR фотография - термин неоднозначный, но в данном случае это не о high definition = много бит на представление цвета, а о делании красивых картинок на основании серий снимков с разной экспозицией, то есть об этом:
Single (Standard) versus High |
- Матрица - это не часть фотоаппарата для "съёма" изображения в цифровом виде, а таблица чисел из математики. Та, что в Теории матриц и для большинства вспоминается как что-то из курса Линейной алгебры...
- Речь пойдёт о конкретной математической технике, придуманной не мной, но я доработал для неё один, крайне важный результат: generalized singular value decomposition (GSVD) [E. Dulov and N. Andrianova, On differentiability of the matrix trace operator and its applications, Korean J. of Comp. & App. Math. 8(1) (2001) 97-109]. Скачать можно тут, или гуглите.
Основная теорема (в лёгком пересказе) такова:Так что собственные числа, собственные вектора и специальные численные методы. Поначалу много экспериментировал и код нужных численных методов писал не с нуля, а пользуясь одним математическим пакетом и его библиотекой основных методов. Код не секретен конечно, и при желании поделюсь через подходящий специальный ресурс.
Тогда мы хотим построить некоторое приближённое разложение исходных матриц вида $A_i\approx PB_iQ^T$ с одинаковыми матрицами $P,Q$ в соответствии с матричным вариантом критерия минимума суммы квадратов, то есть $$\large\min\limits_{P,Q,B_1,\ldots,B_k}\sum\limits_{i=1}^k{\left|A_i-PB_iQ^T\right|}_F^2~.$$
- Нам даны числовые прямоугольные матрицы $A_1,\ldots,A_k\in\mathbb{\mathrm{R}}^{m\times n}$, то есть от одной до формально любого количества. С $m$ строками и $n$ столбцами.
- Кроме того, задаются некоторые строго положительные числа $1\le r_m\le m$ и $1\le r_n\le n$. Они могут быть как разными, так и одинаковыми.
В этом разложении матрицы $P\in\mathbb{\mathrm{R}}^{m\times r_m}$, $Q\in\mathbb{\mathrm{R}}^{n\times r_n}$, $B_i\in\mathbb{\mathrm{R}}^{r_m\times r_n}$ вычисляются как
Последний пункт требует пояснений для читателей, подзабывших матричную алгебру. В частности, "классическая" ортогональная матрица $S$ квадратная и обладает "волшебным" свойством $SS^T=S^TS=I$, то есть единичной матрице. В случае прямоугольных матриц такое возможно когда размерность единичной матрицы будет соответствовать наименьшему из чисел - количества строк и столбцов. Но не наоборот! Так как по условиям $r_m\le m,~r_n\le n$, то "восстановление" исходных матриц даст $$A_i\approx PB_iQ^T=\left(PP^T\right)A_i\left(QQ^T\right).$$
- Ортогональная матрица $P$ состоит из $r_m$ собственных векторов, соответствующих наибольшим (по модулю) $r_m$ собственным значениям матрицы $\large\sum\limits_{i=1}^k A_iA_i^T$;
- Ортогональная матрица $Q$ состоит из $r_n$ собственных векторов, соответствующих наибольшим (по модулю) $r_m$ собственным значениям матрицы $\large\sum\limits_{i=1}^k A_i^TA_i$;
- Матрица $B_i$ которую неформально можно назвать ядром, вычисляется как $P^TA_iQ$.
Если кратко, то суть в том, что каждый снимок со своей экспозицией даёт три цветовых канала, то есть три матрицы. В зависимости от количества снимков в серии, получается три отдельных набора матриц в которых много похожего (убедитесь позже на картинках, а тот кто пользуется HDR функциями камер или специальных программ - и так знает). GSVD и даёт возможность выделить общее (квадратность изображения совсем необязательна), и особенности, можно сказать ядро.
Хитрость в том, что размер матриц ядер может быть значительно меньше размерности исходного изображения, и это без возможности найти огрехи визуально (то, что именуют lossy, с потерями). Сделать с ядром можно многое, но для добавления деталей из более светлых и тёмных снимков линейной комбинации матриц ядер (поканально) достаточно. Есть хитрости и варианты вычисления коэффициентов, масштабирования и прочего. Но суть в том, что получилось - это раз (хоть и медленно считается), а во вторых - обработанный снимок выглядит естественно, а не как шедевры подобные фото ниже
Неестественно контрастно, "кислотность" оттенков. Но этот ещё ничего |
Заранее извиняюсь в двух вещах:
- Что не буду приводить ссылки на исходные материалы, но огромная благодарность всем авторам (большинство источников было на английском), поделившимся сериями снимков из личных коллекций. Так как все (почти) они предлагают собственный вариант конечной обработки, то опытным путём подобрал комбинацию примитивных цифровых фильтров/эффектов, приближающих результат моей обработки к авторским вариантам. Так легче сравнивать "на глаз", но естественно прилагаю и неукрашенный материал.
- Русскоязычной терминологией владею, но написать EV±<число> быстрее. Тем более что не все камеры его пишут в данных снимков и приходилось считать экспозицию отдельно при помощи специальной формулы по другим параметрам. Это обсуждаться не будет, поищете сами - если не знали, но стало интересно.
Из-за значительного количества изобразительного материала группирую его в основном по количеству снимков в исходной серии. Больше всего примеров для серий из 3-х и 5-ти снимков. Поскольку тут надо в первую очередь смотреть, текста будет мало, разве что общепознавательного для интересных мест. Получается что порядок отдельных постов никакого специального смысла не имеет, так что не цепляйтесь к порядку выкладки, а именоваться они будут по устоявшемуся названию математического метода: "GSVD что-то".
Комментарии
Отправить комментарий