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

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

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

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

Читать далее

Реклама

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

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

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

Читать далее

Шаблоны функций Metal Shading Language

Metal Shading Language (MSL) — универсальный язык программирования для создания графических и вычислительных функций используемых с приложениями написанными с использованием Metal Framework. Так говорит тутонхамон Apple.

И это в действительности так. Мало того, что MSL реализует синтаксическое подмножество C++, фактически это C++ базирующийся на спеках C++11. Например в MSL реализованы атомарные типы. Об этой фишке я как-нибудь расскажу отдельно с примерами. Однако надо понимать, что GPU не CPU и не поддерживает некоторые специфические вычисления или реализует их крайне не эффективно по сравнению с CPU, поэтому MSL — это некое ограниченное подобие C++11. К слову, MSL не поддерживает лямбда-функции (чорт, а было бы круто конечно, если бы да…). В любом случае это, хоть и маленький шаг одной яблочной компании, но огромный шаг всего человечества.

Читать далее