Объяснение отслеживания цвета#

Что такое отслеживание цвета и как CMUcam4 это делает?#

Отслеживание цвета — это способность взять изображение, выделить определённый цвет и извлечь информацию о расположении области этого изображения, содержащей только этот цвет. В качестве примера предположим, что вам дали фотографию, на которой красный мяч лежит на грунтовой дороге. Если бы кто-то попросил вас обвести рамкой всё, что имеет красный цвет на изображении, вы бы довольно легко нарисовали прямоугольник вокруг мяча. Это основная идея отслеживания цвета. Вам не нужно было знать, что объект — это мяч. Вам нужно было лишь иметь представление о красном цвете, чтобы выделить объект на снимке. Ниже мы кратко рассмотрим, как CMUcam4 фактически использует информацию в изображении камеры для выполнения отслеживания цвета.

Чтобы задать цвет, вам нужно определить минимальное и максимальное допустимое значение для трёх цветовых каналов. Каждый уникальный цвет представлен значениями красного, зелёного и синего, которые указывают, сколько каждого канала смешано в уникальном цвете. Сложность задания цвета в том, что вам нужно определить диапазон допустимых значений для всех трёх цветовых каналов. Поскольку свет не идеально однороден и цвет объекта не идеально однороден, вам нужно учитывать эти вариации. Однако не стоит слишком ослаблять эти границы, иначе будет принято много нежелательных цветов. Поскольку в случае CMUcam4 каждый цветовой канал преобразуется в число от 0 до 255, вы можете ограничить каждый канал двумя числами — верхним и нижним пределом. Если у вас есть два предела для каждого из трёх каналов, это означает, что шесть значений могут использоваться для ограничения всего цветового пространства, которое вы хотите отслеживать. Если представить цвета в виде куба, где каждая сторона — это отдельный цветовой канал (красный, зелёный и синий), то шесть значений, используемых для выбора вашего цвета, нарисовали бы внутри этого куба трёхмерный прямоугольник, определяющий желаемый набор цветов.

После того как у вас есть границы для цвета, который вы хотите отслеживать, CMUcam4 берёт эти границы и обрабатывает изображение. Существует множество способов отслеживания цветов в изображении, которые могут быть довольно сложными. CMUcam4 использует простой однопроходный алгоритм, который обрабатывает каждый новый кадр изображения с камеры независимо. Он начинает с верхнего левого угла изображения и последовательно проверяет каждый пиксель строка за строкой. Если проверяемый пиксель попадает в диапазон цветов, заданный пользователем, он помечает этот пиксель как отслеживаемый. Он также проверяет положение текущего отслеживаемого пикселя, чтобы определить, является ли он самым верхним, самым нижним, самым левым или самым правым из всех отслеживаемых пикселей, найденных к этому моменту в изображении. Если он обнаруживает, что пиксель находится за пределами текущей ограничивающей рамки отслеживаемой области, он расширяет ограничивающую рамку, чтобы включить этот новый пиксель. Поскольку местоположение даже одного отслеживаемого пикселя может изменить ограничивающую рамку, рамка иногда может довольно сильно колебаться от кадра к кадру. Фильтрацию шума (см. следующий абзац) можно использовать для уменьшения части этих колебаний. Единственная другая важная часть сохраняемой информации — это сумма горизонтальных и вертикальных координат отслеживаемых пикселей. В конце изображения CMUcam4 берёт горизонтальную сумму и вертикальную сумму отслеживаемых пикселей и делит каждую на общее количество отслеживаемых пикселей, получая значение, которое показывает, где находится середина отслеживаемого объекта. Поскольку каждый отслеживаемый пиксель вносит лишь небольшой вклад в итоговые горизонтальную и вертикальную суммы, середина (часто называемая центроидом) отслеживаемых пикселей обычно является гораздо более стабильным измерением, чем ограничивающая рамка. После проверки всех пикселей изображения общее количество отслеживаемых пикселей также можно использовать вместе с площадью ограничивающей рамки для вычисления достоверности и количества пикселей в отслеживаемом объекте.

Фильтрация шума позволяет расширить диапазоны отслеживания цвета, чтобы учесть более значительные вариации значений пикселей изображения, не вызывая при этом отслеживания других случайных вариаций в изображении. Идея фильтрации шума заключается в том, что мы хотим считать пиксель принадлежащим отслеживаемому цвету, только если он является частью группы пикселей, находящихся в границах отслеживания цвета. В CMUcam4 мы реализуем это способом, который требует лишь одного прохода по изображению. При обработке пикселей изображения CMUcam4 поддерживает счётчик, который отслеживает, сколько последовательных пикселей в текущей строке, предшествующих текущему пикселю, находились в границах отслеживаемого цвета. Если это значение превышает значение фильтра шума, то текущий пиксель помечается как отслеживаемый.

Что такое гистограмма и для чего она полезна?#

Гистограмма — это тип диаграммы, который отображает частоту и распределение данных. В случае CMUcam4 гистограмма показывает частоту и распределение значений цвета, найденных в изображении. Каждый столбец представляет диапазон значений цвета для конкретного канала. CMUcam4 может разделить возможные значения цвета от 0 до 255 на 1, 2, 4, 8, 16, 32 и 64 различных столбца (бина). Каждый бин содержит количество пикселей, найденных в изображении, которые попадают в некоторые границы цвета. Таким образом, большое значение в одном конкретном бине означает, что многие из этих цветов были найдены в изображении. Каждая гистограмма представляет только один выбранный цветовой канал.

Гистограммы — это способ абстрагирования содержимого изображения. Они имеют множество применений, таких как примитивное распознавание объектов, пороговая обработка или цветовой баланс. Они особенно полезны для различения разных текстур. Попробуйте направить CMUcam4 с выключенным автоусилением на две поверхности с разной текстурой и заметьте разницу в их распределениях цвета. Этот эффект можно использовать для различения поверхностей пола или обнаружения препятствий.