Коррекция геометрических искажений

Идеальные фигуры встречаются только в геометрии.
(Кто-то пошутил)

Не сильно ошибусь, если предположу, что у подавляющего большинства человечества, использующего фото-редакторы, самой востребованной фичей является функция коррекции линейных искажений. Хотя некоторые идут еще дальше: Фотосессия длиной в 4 года. А некоторые, совсем наоборот, утверждают, что желание исправлять геометрию рисунка — это в чистом виде технодрочерство и никакого отношения к фотографии не имеет. Мне же представляется, что все инструменты известные в природе на сегодняшний день для решения этой задачи, не совсем удобные и иногда избыточные с точки зрения возможностей (хотя, все не так, да), если говорить не о технологически точных фото-задачах, а о простом повседневном использовании: ну, там поехал в отпуск, фоткнул красивые руины, дома посмотрел, а там все криво — открыл свою любимую программку (которую сегодня напишем), поправил — мир стал лучше.

Поэтому сегодня пост, о том как самостоятельно изготовить быстрый, легкий и в меру незагруженный тулкит. Будем решать частный, но самый распространенный случай коррекций: исправление искажений проекции: ровно тот случай, что описал Антон, когда плоскость проекции изображения фотографии в момент фиксации не соответствует «правильной» (плоскости объекта съемки и фокальная плоскость не параллельны).

Читать далее

Реклама

Геометрические фильтры: «игрушечные» шейдеры Metal. Анимация процессинга.

Параллельные прямые не пересекаются, если вы не наклоняете одну из них или обе.
И да, никогда не пейте перед дифференцированием!
(Народная мудрость)

Мне, как неопытному блогеру, все еще представляется, что для публикации любого поста нужно иметь какой-то повод. Но, на днях, т.е. совсем недавно, комрад Дима Новак,  его подкинул: пристыдил нас за отсутствие в нашем концептуальном движке обработки фотографий возможности работать с геометрией картинки. А это, надо сказать, справедливый упрек — даже аналоговая темная комната имеет такие инструменты по умолчанию, а уж в эпоху повсеместного распространения суперкомпьютеров среди пользователей не иметь такого тулкита в арсенале — что-то вроде винтажного пижонства.

Читать далее

Чем измерить эстетичность. Энтропия и вариативность гармонизированного изображения

«Вовсе не обязательно, что бы всюду был смысл: смешно — ну и ладно.»  
(Пол Маккартни)

А займемся-ка мы сегодня изучением такого важного параметра как энтропия информации и её производного: энтропии изображения и всем тем, что к ней приводит. И главное, осознаем чем она нам может быть интересна. К примеру, почему бы нам не придумать какой-то численный индикатор эстетики в изображении, и попробовать в этом контексте энтропию в плане измерения «эстетичности» изображения, выяснив предварительно, что можно под этим термином понимать.

Читать далее

Самый лучший селективный HSV-adjustment фильтр ever.

Мы не заблудились, мы просто не знаем где мы находимся.
(South Park)

Наверное не будет преувеличением утверждение: каждый фотограф или человек занимающийся фотографией хоть раз в жизни использовал инструмент называющийся «Hue/Saturation» или вроде того. С этим весьма популярным инструментом есть одна интересная история: в природе не существует более-менее адекватной реализации доступной в исходных кодах. Каждый разработчик либо конструирует все самостоятельно, либо использует готовый код из свободного Gimp либо городит безумные конструкции вокруг расширений ImageMagic. Те же, кто знают тайну, попросту жмутся, не делятся исходниками или же выкладывают в сеть что-то вроде пресловутого Gimp. Пробовали с ним работать? Вот то-то и оно.

А давайте уже нарушим эту монополию, сорвем покровы с реализации этого инструмента в виде Metal-апического кода, но не под iOS, а, например, под OSX. Так удобнее крутить параметры слайдерами и видеть изменения в реальном времени. А еще будет удобно рисовать гистограмму и наблюдать как меняется представление картинки в «частотном домене».

Читать далее

Мифическая скорость GPU. Параллелизация расчетов GPU+DSP на A7

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

Читать далее

Оптимизация шейдеров Apple Metal на примере работы с конвертером цветовых пространств: RGB/HSV.

Баталии в блоге Degradr по поводу эстетики и математики в эстетике и эстетической математики, и еще какого-то другого творчества, которое все несли не стесняясь, разгорелись не шуточные. Хочется немного уйти от гуманитарного и погрузиться в наше любимое: в технодр@черство. Прошу дам меня извинить: сегодня попытаемся выжать из GPU последние капли крови производительности. A по простому — мы будем пытаться оптимизировать код, который, казалось бы и оптимизировать уже невозможно. Но…

Читать далее

Как написать свой Metalagram. Color Lookup Tables или CLUT-ы в Metal

Смоки, тут не Вьетнам. Это — боулинг. Здесь есть правила.
Уолтер Собчак/Большой Лебовски

В самом первом посте этого блога я обещал, что мы напишем свою версию приложения фото-камеры с фильтрами, что-то вроде Instagram-а или встроенной Камеры iOS. В 100500й раз. Приложение будет конечно же круче в тоже самое количество раз. Все дело в количестве припоя кода которого мы нальем в программу, что-бы сделать её работающей. Его практически не будет. Сомневаюсь, что у отцов-основателей Instagram были наши сегодняшние возможности. А еще у нас будут большие файлы формата Cube LUT Specification Version 1.0. В общем пишем свой Instagram!

Приложение будет выглядеть как-то так:

Metalling App

Вот сегодня это и сделаем: возьмем в руки отвертку и паяльник XCode и напаямем накодируем кода: быстренько обернем Metal в свой фреймворк и сосредоточимся, в итоге, исключительно на разработке фильтров не отвлекаясь на детали. А еще проще использовать готовый через cocoapods: DPCore3. Эта штука находится еще на стадии активных доработок, но вполне сгодится для использования в качестве слоя абстракции уменьшающего количества кода на единицу  времени программиста. Но обо всем по порядку.

Читать далее