Я чувствую, что в вашем вопросе есть недоразумение. Хотя ответ Бойко Перанова, безусловно, верен, с предоставленными вами изображениями проблем нет. Логика этого такова: ваша камера делает снимки в цветовом пространстве RGB, которое по определению является кубом. Когда вы конвертируете его в цветовое пространство HSV, все пиксели сопоставляются со следующим конусом:
Оттенок (первый канал HSV) — это угол на конусе, Насыщенность (второй канал HSV, называемый на изображении Chroma) — это расстояние до центра конуса, а Значение (третий канал HSV) — это высота. на конусе.
Канал Hue обычно определяется между 0-360 и начинается с красного на 0 (в случае 8-битных изображений OpenCV использует диапазон 0-180, чтобы соответствовать символу без знака, как указано в документацию). Но дело в том, что два пикселя со значениями 0 и 359 действительно очень близки по цвету. Это легче увидеть, если сгладить конус HSV, взяв только внешнюю поверхность (когда насыщенность максимальна):
Даже если эти значения близки по восприятию (совершенно красный на 0 и красный с небольшим количеством фиолетового на 359), эти два значения далеко друг от друга. Это причина «артефактов», которые вы описываете в канале Hue. Когда OpenCV показывает его вам в оттенках серого, он сопоставляет черный цвет с 0, а белый с 359. На самом деле это очень похожие цвета, но при отображении в оттенках серого они отображаются слишком далеко друг от друга. Есть два способа обойти этот противоречивый факт: вы можете перенаправить H-канал в пространство RGB с фиксированной насыщенностью и значением, что покажет более близкое к нашему восприятию представление. Вы также можете использовать другое цветовое пространство, основанное на восприятии (например, цветовое пространство Lab), которое выиграло. не дают вам эти математические побочные эффекты.
Бойко Перанов объясняет, почему эти пятна артефактов имеют квадратную форму. Сжатие JPEG работает путем замены пикселей на более крупные квадраты, которые приблизительно соответствуют заменяемому патчу. Если вы установите очень низкое качество сжатия при создании jpg, вы увидите, что эти квадраты появляются даже на изображении RGB. Чем ниже качество, тем больше и заметнее квадраты. Среднее значение этих квадратов представляет собой единое значение, которое для оттенков красного может находиться в диапазоне от 0 до 5 (отображается черным) или от 355 до 359 (отображается белым). Это объясняет, почему «артефакты» имеют квадратную форму.
Мы также можем спросить себя, почему в канале оттенка видно больше артефактов сжатия JPEG. Это происходит из-за подвыборки цветности, когда исследования, основанные на восприятии, показали, что наши глаза менее подвержены видеть быстрые изменения цвета, чем быстрые изменения интенсивности. Итак, при сжатии JPEG намеренно теряет информацию о цветности, потому что мы все равно этого не заметим.
Аналогичная история с изменением насыщенности (нижнее левое изображение) белых пятен. Вы описываете пиксели почти черными (на кончике конуса). Следовательно, значение Saturation может сильно варьироваться, но не сильно повлияет на цвет пикселя: он всегда будет близок к черному. Это также побочный эффект цветового пространства HSV, основанного не только на восприятии.
Преобразование между RGB (или BGR для OpenCV) и HSV (теоретически) без потерь. Вы можете сами убедиться в этом: переконвертируйте ваше изображение HSV в изображение RGB, вы получите точно такое же изображение, с которого вы начали, без добавления артефактов.
person
Soravux
schedule
28.01.2015
result picks a lot of this artifacts
: вы пытаетесь сохранить артефакты или избавиться от них? - person David Robinson   schedule 21.06.2013