Расположение образцов Xrite ColorChecker в изображении

Я пытаюсь выполнить настройку цвета в мобильном приложении для фотосъемки с помощью Xrite ColorChecker, и для этого я пытаюсь найти способ найти образцы цвета на панели проверки в представлении.

Я предполагаю

  • Пользователь поместил ColorChecker в поле обзора камеры
  • Положение может быть произвольным, а также может быть в любой ориентации или даже с перекосом.
  • В идеале приложение должно автоматически находить средство проверки цвета в поле обзора камеры или, что еще хуже, с помощью пользователя (нажатие в любом месте ColorChecker).
  • Условия освещения могут быть не идеальными, поэтому чем меньше алгоритм зависит от реальных цветов, тем лучше.

Так выглядит ColorChecker. Меня интересуют именно образцы в правой половине устройства.

Расположение образцов Xrite ColorChecker в изображении

Приложение предназначено для iOS 11 и построено на Xamarin.iOS и C#.

Что я уже пробовал

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

Я также нашел Алгоритм CCFind с помощью MATLAB, который действительно находит ColorChecker по фотографии, но недостаточно быстр даже на мощном ПК, чтобы его можно было использовать в качестве решения в реальном времени, а также MATLAB не может быть перенесен на iOS, поэтому я попытался переписать код, чтобы OpenCV + C++, что было утомительно, и я не смог его успешно завершить почти за месяц работы.

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

Я сделал «похожий» проект, не используя Xrite, но он был в категории калибровки цвета «Диаграмма Макбета». Таким образом, две основные цели заключались в том, чтобы найти цвета диаграммы Макбета и применить цветокоррекцию в реальном времени для предварительного просмотра (а также сохранить исходные необработанные данные камеры без применения какого-либо цветового пространства, но это уже другая история).

SushiHangover 20.07.2018 01:58

Используя CIFilters, некоторые стандартные и некоторые написанные на заказ, я бы разбил видеопоток на более мелкие блоки (CIFilters на основе измельчения), в основном систему сканирования, сверху-слева направо. Используя настраиваемый фильтр в стиле CILineOverlay, чтобы упростить изображение для поиска прямоугольников (перекошенных или нет), проверьте гистограммы на основе CIFilter, чтобы определить, были ли найдены все / некоторые цвета диаграммы Макбета в этом прямоугольнике. Если это так, скорректируйте прямоугольник, чтобы определить, как при необходимости изменить обрезку в реальном времени, пока цветовая гистограмма CIFilter не будет содержать «совпадений» для всех (большинства) цветов диаграммы в прямоугольнике.

SushiHangover 20.07.2018 01:58

Поскольку диаграмма Макбета (Xrite или нет) содержит их цвета чипов в заранее определенном шаблоне, в этот момент действительно легко получить каждый цвет независимо от ориентации и произвести синтетические макбет, и, таким образом, создается CIImage, содержащий iOS цвет, отображаемый камерой, по сравнению с синтетическим (это было сохранено для использования в будущем для постпродакшна). Теперь к потоку была применена цветовая матрица CIFilter, и для анализа освещения был произведен параллельный предварительный просмотр. Таким образом, директор по свету / гаффер / бестбой мог настраивать сцену / декорации в режиме реального времени.

SushiHangover 20.07.2018 01:58

Фаза анализа была удивительно быстрой на iPhone последнего поколения, и поскольку фильтры CIIFilters можно связывать, а их ядро ​​графического процессора предварительно скомпилировано в реальном времени, поиск цветовой диаграммы в реальном времени занял всего секунду или около того, прежде чем отобразился предварительный просмотр с коррекцией цвета. Конечно, создание специальных GLSL-фильтров CIFilters было основой этого типа рабочего процесса с изображениями. Подход ML был бы действительно крутым, но в этом случае я не уверен, что затраты / время на обучение того стоят, просто чтобы найти цветовую диаграмму, но рекомендовать изменения освещения после того, как была рассчитана матрица калибровки цвета, было бы действительно хорошим материалом. ;-) ?

SushiHangover 20.07.2018 02:09

Большое спасибо за ваше предложение @SushiHangover :-). Я проверю CIFilters, звучит многообещающе :-)!

Martin Zikmund 20.07.2018 09:06
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
151
0

Другие вопросы по теме