Деформация цветовых пространств методом Moving Least Squares

— Меньше оваций, больше ассигнаций!
(из фильма «O Brother, Where Art Thou?»)

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

Сегодня предлагаю отдохнуть от чисто программистского трюкачества и заняться настоящими хардкорным факин-балавством, но уже не в терминах простых и понятных объектов, а будем искривлять и портить то, что так любим: пространства.  Цветовые. Например, так:

Читать далее

Реклама

Как из SCNSphere сделать что угодно с помощью Metal. Например, 3D RGB-Cube

Джулс: Знаешь почему так? 
Брэд: Метрическая система?
Джулс: Гляди как наш Бред мозговит!
Смышленый сукин сын, это точно — всё просек.
(из фильма «Криминальное чтиво»)

Дорогие слушатели нашей радиостанции, если вы переодически следите за нашими выпусками, то в целом в курсе наших новейших исследований цвета в нашей высоко-профессиональной любительской лаборатории. И уже имеете представление о том как цвет влияет на общее восприятие изображения. Очень важной фишкой в таких исследованиях являются цветовые пространства, в которых, обычно, можно производить манипуляции с пикселами картинки, системно её «ухудшая». Так удачно сложилось, что почти все такие пространства 3-х компонентные. А это означает, что мы можем попытаться визуализировать то как наши дурные наклонности могут его деформировать относительно исходного состояния в 3D сцену.

В многообразии фреймворков Apple есть очень мощный SDK SceneKit.  Сегодня мы распотрошим сразу двух кроликов: изучим как нам нарисовать произвольную 3D-фигуру с помощью инструментов SceneKit. А так же научимся добавлять очень большое количество дополнительных объектов в 3D-сцену, быстро её  деформировать, модифицировать и манипулировать свойствами всех добавленных объектов с помощью Metal.

Читать далее

Доступ к пикселям текстуры в Metal

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

В последнее время я наблюдаю некоторый рост интереса к Metal со стороны разработчиков: переодически получаю отзывы и благодарности от вас, и даже ссылочки на приложения в AppStore, при разработке которых помогли посты этого ресурса. Это приятно, чоуж.

С другой стороны, Apple таки приближается к Swift 5, замораживает синтаксис и объявляет совместимость по ABI. И хотя Objc или C++ реализации приложений на Metal все еще субъективно шустрее чем Swift, а код не нужно переписывать от версии к версии практически с нуля, Swift начинает выглядеть как штука, на которой уже можно писать примеры для важных постов без вопросов к версии  XCode для сборки.

А еще мне хочется проверить работу шорткода [Gist] вместо кривого и дурацкого  [Code]. Ну вы поняли.

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

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

Читать далее