Деформация цветовых пространств методом 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]. Ну вы поняли.

Читать далее

Расчет гистограммы изображения на GPU. Атомарные типы данных Metal и операции над ними

Не далее как месяц назад я описал незатейлевый процесс создания собственной версии фото приложения портящего замечательные цифровые фотографии до приемлемого результата. В качестве основного инструмента обработки (Image Processing) мы использовали гомогенные преобразования цветового пространства через так называемые таблицы поиска или CLUT. Этот замечательный, надежный, супер быстрый и незаменимый способ работает всегда и с возбуждающим успехом. При одном условии: исходная картинка должна быть получена при определенных условиях. А это, как хорошо не известно многим, не достижимое условие, хотя и воспроизводимое с некоторым приближением за неприятный прайс.

Читать далее