Чому ми так часто використовуємо кольоровий простір HSV для огляду та обробки зображень?


64

Я бачу кольоровий простір HSV, який використовується всюди: для відстеження, виявлення людини тощо ... Цікаво, чому? Що з цього кольорового простору робить його кращим, ніж використання RGB?


3
Це дуже гарне запитання. На мою думку, було б корисно, якщо ви будете трохи детальніше: що таке ВПГ, що таке RGB. Оскільки більшість відповідей порівнює HSV з RGB, заголовок може бути перефразований для порівняння цих двох кольорових просторів.
PhilMacKay

2
Ще одним хорошим запитанням може бути: "Чому ВПГ використовується всюди замість HSL?"
posfan12

Відповіді:


60

Проста відповідь полягає в тому, що на відміну від RGB , HSV відділяє луму або інтенсивність зображення від кольоровості або кольорової інформації. Це дуже корисно у багатьох програмах. Наприклад, якщо ви хочете зробити вирівнювання гістограми кольорового зображення, ви, ймовірно, хочете це зробити тільки на компоненті інтенсивності, а кольорові компоненти залишити в спокої. Інакше ви отримаєте дуже дивні кольори.

У комп’ютерному зорі часто хочеться відокремити кольорові компоненти від інтенсивності з різних причин, наприклад, стійкості до змін освітлення або видалення тіней.

Однак зауважте, що HSV - це один із багатьох кольорових просторів, які відокремлюють колір від інтенсивності (Див. YCbCr, Lab тощо). HSV часто використовується просто тому, що код для перетворення між RGB і HSV є широкодоступним і також може бути легко реалізований. Наприклад, панель інструментів для обробки зображень для MATLAB включає функції rgb2hsvта hsv2rgb.


42

Інформація про колір зазвичай набагато шумніша, ніж інформація про HSV.

Дозвольте навести приклад: я та деякі друзі брали участь у проекті, що займався розпізнаванням дорожніх знаків у реальних відео сценах (шум, тіні та іноді оклюзія). Це було частиною більшого проекту, який дав нам час спробувати різні підходи до цієї конкретної проблеми (та повторно використовувати старі підходи). Я сам не пробував кольоровий підхід, але пам’ятаю цікаву інформацію: _ Домінуючий компонент RGB у знаку STOP часто не був червоним! (в основному за рахунок тіней)

Зазвичай ви можете отримати кращу інформацію з простору кольорів HSV . Дозвольте спробувати ще раз навести приклад особистого досвіду: Спробуйте уявити, що у вас є зображення одноколірної площини з тінню на ній. У кольоровому просторі RGB тіньова частина, швидше за все, матиме зовсім інші характеристики, ніж частина без тіней. У кольоровому просторі HSV компонент відтінку обох патчів швидше схожий: тінь впливатиме в першу чергу на значення або, можливо, компонент насичення , тоді як відтінок , вказуючи на основний "колір" (без його яскравості та розбавленої білості / чорний) не повинен сильно змінюватися.

Якщо ці пояснення для вас не звучать інтуїтивно, пропоную:

  • спробуйте краще зрозуміти компоненти, які використовуються для представлення кольору в кольорі кольорів HSV, і поновіть ваші знання про RGB
  • спробуйте побачити причини, чому такі кольорові представлення були розроблені: це завжди якимось чином, базуючись на певній точці інтерпретації кольору людини

    наприклад, діти насправді не люблять сильно забарвлені == цінні предмети, вони віддають перевагу ситно насиченим предметам, предметам, у яких колір інтенсивний та не розбавлений

  • після того, як ви отримаєте це і розвинете деяку інтуїцію, вам слід пограти з зображеннями: спробуйте розкласти різні зображення в їх RGB та HSV компоненти

    Вашою метою було б побачити і зрозуміти різницю в цих розкладах для зображень, що містять тіні, сильне освітлення, відбиття світла.

  • якщо у вас є певний тип зображень, з якими ви любите грати, спробуйте розкласти їх: хто знає, може RGB дійсно більше підходить для ваших потреб, ніж HSV :)


1
Якщо це тінь, вона повинна змінювати лише яскравість - не насиченість.
Андрій Рубштейн

@Andrey, як я вже сказав, я не працював над кольоровим підходом сам, але можу припустити, що якщо це була не лише тінь - можливо, певне непряме освітлення з оточення чи щось подібне також зіграло певну роль.
пенелопа

1
Ти правий. Однак у випадку непрямого освітлення відтінок також може змінитися.
Андрій Рубштейн

1
@Andrey Звідси моє формулювання: "скоріше", "подібне", "перш за все вплив", ... Зрештою, я не пояснював ВПГ, просто наводив кілька прикладів і викладав здогадки на основі досвіду. І найкращий спосіб вибрати найбільш підходящий кольоровий простір для будь-якої програми - пограти зі своєю базою зображень та різними кольоровими просторами
пенелопа

3
Все, що знаходиться в тіні і, отже, не освітлене первинним джерелом світла (сонце), освітлюється вторинним джерелом світла - небом, яке є гігантським, яскравим і дуже синім світлом. Для людських очей червоні все ще виглядають червоними, оскільки наші очі роблять відносні кольори замість абсолютного кольору, саме тому ваші фотографії на приміщенні, що не спалаху, виглядають більш жовтими, ніж ви вважаєте, що повинні. І я абсолютно погоджуюся з питаннями, пов'язаними з вашою базою даних насправді.
Джон Робертсон

8

Використання лише компонента Hue робить алгоритм менш чутливим (якщо не інваріантним) до варіацій освітлення.

Іншим популярним варіантом є кольоровий простір LAB, де канали AB представляють кольорові та евклідові відстані в AB просторі, які краще відповідають сприйняттю кольором людини. Знову ж таки, ігнорування L-каналу (Luminance) робить алгоритм більш стійким до перепадів освітлення.


7

Найкраща відповідь, яку я можу зрозуміти, полягає в тому, що RGB має відношення до "деталей реалізації" щодо того, як RGB відображає колір, а HSV має відношення до компонентів "фактичного кольору". Ще один спосіб сказати, що це RGB - це те, як комп'ютери поводяться з кольором, а HSV намагається захопити компоненти того, як ми сприймаємо колір.

Я докладно:

Колір - це сприйняття, засноване на електромагнітних хвилях. Природними властивостями цих хвиль є, наприклад, інтенсивність і частота. Якби ми змістили частоту світлового хвилі від інфрачервоного до ультрафіолетового, ми візуально сприйняли б кольорову варіацію уздовж кольорів веселки. Кольори веселки можна вважати "чистими кольорами", оскільки вони представлені одночастотними хвилями.

Тепер людське око може лише реагувати або «резонувати» на три основні частоти світла, не дивно червоні, зелені та сині. Справа в тому, що ця реакція нелінійна, тому сітківка може розрізнити заданий чистий колір (і неявно його "частоту") за комбінованою реакцією трьох кольорових компонентів .

Кольоровий простір RGB існує як такий лише для імітації внутрішніх функцій нашої сітківки, завдяки чому переважна більшість кольорів може бути представлена ​​на комп'ютерних дисплеях за допомогою зручного (з комп'ютерної точки зору) 24 біт на піксель кодування. Кольоровий простір RGB не має внутрішнього відношення ні до природних кольорових властивостей, ні до людської інтерпретації кольору.

Наприклад, будь-яка арифметична операція, яка виконується з використанням каналу в просторі RGB (наприклад, генерація кольорових градієнтів), дає дуже грубі або навіть просто "неправильні" результати. Ось чому радимо створювати кольорові карти, перетворюючи кольорові зупинки з RGB в інші кольорові простори (HLS, Lab тощо), виконуючи інтерполяції, а потім перетворюючи інтерпольовані значення назад у RGB.

Сподіваюся, це допомагає!


2
Я не погодився б. Існує три сфери, а не дві: людська, комп'ютерна та фізика. Модель RGB походить від людського ока, який має три кольорові рецептори.
MSalters

@MSalters Я думаю, що ми говоримо про одні і ті ж речі (хоча, можливо, я не зрозумів себе повністю). RGB-дисплеї зроблені відповідно до нашої системи сприйняття кольорів. Вони мають комп’ютерну частину, (R, G, B) "координати". Оскільки ці координати співвідносяться з реалізацією, а не з фізичними властивостями кольору "реальної природи", вони не підходять для виконання математичної обробки, наприклад, перцептивно лінійної інтерполяції градієнта, корекції кольорів, яскравості та насиченості, тощо.
heltonbiker

2

HSV означає Hue-Saturation-Value. Насправді це тип кольорової площинної репрезентації (наприклад, RGB, YCbCr тощо).

Це незалежний формат представлення кольорів від пристрою: представлення кольорів HSV корисно для виявлення конкретних типів кольорів, наприклад: колір шкіри, колір вогню тощо.

Matlabфункцією для перетворення зображення RGB в площину HSV є rgb2hsv('/inputimage_name').


1

Я надам вам приклад, щоб зрозуміти. Як у нашої руки є багато частин долоні, задньої долоні і нижче цього. ми можемо побачити різні кольори в цих областях, але відтінок для всіх цих регіонів не сильно відрізняється, тому значення відтінку може бути корисним при сегментації рук.


1

Нічого я не знаю, що особливо краще з HSV порівняно з YUV або LAB, що сприяло б вилученню та інваріації освітлення або візуалізації. Я думаю, що HSV є найбільш часто використовуваним через умовність та безперервність: його легше порівнювати результати та спілкуватися один з одним, якщо ви обидва використовуєте один і той же кольоровий простір.

Зважаючи на це, ВПГ (на відміну від RGB) використовується у комп’ютерному зорі з 2 відомих мені причин:

  1. Візуалізація . Кожен раз, коли ви маєте інформацію про спрямованість густо над зображенням, HSV - це гарний кольоровий простір для візуалізації. Замість побудови маленьких векторів над зображенням (вони будуть захаращувати все), ви можете побудувати колір за допомогою HSV, поставивши спрямований вектор, відображений на H (векторний кут) та S (величина вектора). Це залишає компонент Value, який можна встановити будь-якою кількістю способів залежно від того, що ви хочете досягти. Дивіться нижче приклад із набору даних оптичного потоку середнього блоку. HSV використовується для щільного відображення напрямків.

Приклад з БД Middlebury на оптичному потоці

  1. Особливості видобутку та інваріації освітлення , як пояснено в інших відповідях.

0

Як уже згадували інші, корисність відокремлення луми від кольоровості. Лума сильно відрізняється в сцені залежно від кількості світла, що падає на предмет. З іншого боку, Chroma краще співвідноситься із властивостями об'єкта, а для належним чином збалансованих білих зображень є більш-менш інваріантними.

Однак я хотів би додати, що HSV, HSL або насправді будь-який кольоровий простір з полярною параметризацією площини кольору - це поганий вибір для цієї мети. Це тому, що вони вносять особливість у лінію сірого (який відтінок сірий?), Роблячи їх дуже чутливими до шуму та балансу білого. Крім того, порівняння двох кольорів у полярній системі координат не настільки прямо. Також зауважте, що ні значення HSV, ні легкість у HSL не відповідають сприйнятій людиною легкістю чи будь-яким іншим фізичним вимірюванням енергії.

Існує безліч лінійних кольорових просторів, які дають однакове розділення лума-хрому, зберігаючи лінійність (YCbCr, YUV) або правильно моделюючи людський зір (LUV, LAB). З тими можна порівняти два кольори за допомогою евклідової норми L2 за їх кольоровістю, що призведе до більш надійного алгоритму в цілому.

Чому тоді HSV / HSL використовуються так часто? Важко дати об'єктивну відповідь. З мого досвіду, це здебільшого пояснюється незнанням та наявністю програм RGB-> HSV для перетворення. Довелося працювати з кодом, автори якого не розуміли гамма-корекцію, не кажучи вже про різні кольорові простори. Побачений код, який перетворив RGB у HSV, потім сегментував зображення на основі відтінку, не зважаючи на те, що це модульна кількість. Я думаю, ми можемо погодитися, що ці свідомі рішення не були підкріплені будь-якою причиною.


-1

Кольорова модель HSV більше співвідноситься з тим, як люди бачать кольорові предмети, порівняно з RGB, YUV, Lab тощо.

Ми бачимо, якого кольору об’єкт (відтінок), наскільки він насичений (насиченість) і скільки білого світла падає на нього (інтенсивність).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.