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

В Photoshop CC есть такой очень важный и полезный инструмент, называется Free Transform (и еще несколько вариантов на туже тему). Очень нужная штука, но работает почти никогда.

Снимок экрана 2016-06-21 в 19.50.38Вот если загрузить PNG или вектор — то запросто. А обычный JPEG вызывает у редактора отторжение. И пока не создашь выделение или слой с выделением — меню трансформации остается неактивным. А еще мне порядком, поднадоела вот эта тестовая картинка (та что за меню торчит), точнее не сама картинка, а то как камера iPhone с её широко-угольным объективом портит пропорции лица. Конечно, в PS есть Lens Correction, исправляющий дисторсии и прочие недостатки оптических систем (хотя на картинке не недостаток, а фича), но во-первых: он тормозной, во-вторых: не всегда хочется исправить просто «бочку» или «подушку».

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

Читать далее

Реклама

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Metalling App

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

Читать далее

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

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

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

Читать далее

Фильтр реалистичной, «пленочной» коррекции теней

Сегодня я не буду подробно описывать как с помощью Metal Framework и Metal Shading Language запрограммировать фильтр. Т.е. не буду останавливаться на деталях реализации. В целом, предыдущего поста должно было быть достаточно для уверенного понимания как варится программа с использованием этих средств.

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

Читать далее