Я бачу кольоровий простір HSV, який використовується всюди: для відстеження, виявлення людини тощо ... Цікаво, чому? Що з цього кольорового простору робить його кращим, ніж використання RGB?
Я бачу кольоровий простір HSV, який використовується всюди: для відстеження, виявлення людини тощо ... Цікаво, чому? Що з цього кольорового простору робить його кращим, ніж використання RGB?
Відповіді:
Проста відповідь полягає в тому, що на відміну від RGB , HSV відділяє луму або інтенсивність зображення від кольоровості або кольорової інформації. Це дуже корисно у багатьох програмах. Наприклад, якщо ви хочете зробити вирівнювання гістограми кольорового зображення, ви, ймовірно, хочете це зробити тільки на компоненті інтенсивності, а кольорові компоненти залишити в спокої. Інакше ви отримаєте дуже дивні кольори.
У комп’ютерному зорі часто хочеться відокремити кольорові компоненти від інтенсивності з різних причин, наприклад, стійкості до змін освітлення або видалення тіней.
Однак зауважте, що HSV - це один із багатьох кольорових просторів, які відокремлюють колір від інтенсивності (Див. YCbCr, Lab тощо). HSV часто використовується просто тому, що код для перетворення між RGB і HSV є широкодоступним і також може бути легко реалізований. Наприклад, панель інструментів для обробки зображень для MATLAB включає функції rgb2hsv
та hsv2rgb
.
Інформація про колір зазвичай набагато шумніша, ніж інформація про HSV.
Дозвольте навести приклад: я та деякі друзі брали участь у проекті, що займався розпізнаванням дорожніх знаків у реальних відео сценах (шум, тіні та іноді оклюзія). Це було частиною більшого проекту, який дав нам час спробувати різні підходи до цієї конкретної проблеми (та повторно використовувати старі підходи). Я сам не пробував кольоровий підхід, але пам’ятаю цікаву інформацію: _ Домінуючий компонент RGB у знаку STOP часто не був червоним! (в основному за рахунок тіней)
Зазвичай ви можете отримати кращу інформацію з простору кольорів HSV . Дозвольте спробувати ще раз навести приклад особистого досвіду: Спробуйте уявити, що у вас є зображення одноколірної площини з тінню на ній. У кольоровому просторі RGB тіньова частина, швидше за все, матиме зовсім інші характеристики, ніж частина без тіней. У кольоровому просторі HSV компонент відтінку обох патчів швидше схожий: тінь впливатиме в першу чергу на значення або, можливо, компонент насичення , тоді як відтінок , вказуючи на основний "колір" (без його яскравості та розбавленої білості / чорний) не повинен сильно змінюватися.
Якщо ці пояснення для вас не звучать інтуїтивно, пропоную:
спробуйте побачити причини, чому такі кольорові представлення були розроблені: це завжди якимось чином, базуючись на певній точці інтерпретації кольору людини
наприклад, діти насправді не люблять сильно забарвлені == цінні предмети, вони віддають перевагу ситно насиченим предметам, предметам, у яких колір інтенсивний та не розбавлений
після того, як ви отримаєте це і розвинете деяку інтуїцію, вам слід пограти з зображеннями: спробуйте розкласти різні зображення в їх RGB та HSV компоненти
Вашою метою було б побачити і зрозуміти різницю в цих розкладах для зображень, що містять тіні, сильне освітлення, відбиття світла.
якщо у вас є певний тип зображень, з якими ви любите грати, спробуйте розкласти їх: хто знає, може RGB дійсно більше підходить для ваших потреб, ніж HSV :)
Використання лише компонента Hue робить алгоритм менш чутливим (якщо не інваріантним) до варіацій освітлення.
Іншим популярним варіантом є кольоровий простір LAB, де канали AB представляють кольорові та евклідові відстані в AB просторі, які краще відповідають сприйняттю кольором людини. Знову ж таки, ігнорування L-каналу (Luminance) робить алгоритм більш стійким до перепадів освітлення.
Найкраща відповідь, яку я можу зрозуміти, полягає в тому, що RGB має відношення до "деталей реалізації" щодо того, як RGB відображає колір, а HSV має відношення до компонентів "фактичного кольору". Ще один спосіб сказати, що це RGB - це те, як комп'ютери поводяться з кольором, а HSV намагається захопити компоненти того, як ми сприймаємо колір.
Я докладно:
Колір - це сприйняття, засноване на електромагнітних хвилях. Природними властивостями цих хвиль є, наприклад, інтенсивність і частота. Якби ми змістили частоту світлового хвилі від інфрачервоного до ультрафіолетового, ми візуально сприйняли б кольорову варіацію уздовж кольорів веселки. Кольори веселки можна вважати "чистими кольорами", оскільки вони представлені одночастотними хвилями.
Тепер людське око може лише реагувати або «резонувати» на три основні частоти світла, не дивно червоні, зелені та сині. Справа в тому, що ця реакція нелінійна, тому сітківка може розрізнити заданий чистий колір (і неявно його "частоту") за комбінованою реакцією трьох кольорових компонентів .
Кольоровий простір RGB існує як такий лише для імітації внутрішніх функцій нашої сітківки, завдяки чому переважна більшість кольорів може бути представлена на комп'ютерних дисплеях за допомогою зручного (з комп'ютерної точки зору) 24 біт на піксель кодування. Кольоровий простір RGB не має внутрішнього відношення ні до природних кольорових властивостей, ні до людської інтерпретації кольору.
Наприклад, будь-яка арифметична операція, яка виконується з використанням каналу в просторі RGB (наприклад, генерація кольорових градієнтів), дає дуже грубі або навіть просто "неправильні" результати. Ось чому радимо створювати кольорові карти, перетворюючи кольорові зупинки з RGB в інші кольорові простори (HLS, Lab тощо), виконуючи інтерполяції, а потім перетворюючи інтерпольовані значення назад у RGB.
Сподіваюся, це допомагає!
HSV означає Hue-Saturation-Value. Насправді це тип кольорової площинної репрезентації (наприклад, RGB, YCbCr тощо).
Це незалежний формат представлення кольорів від пристрою: представлення кольорів HSV корисно для виявлення конкретних типів кольорів, наприклад: колір шкіри, колір вогню тощо.
Matlab
функцією для перетворення зображення RGB в площину HSV є rgb2hsv('/inputimage_name')
.
Я надам вам приклад, щоб зрозуміти. Як у нашої руки є багато частин долоні, задньої долоні і нижче цього. ми можемо побачити різні кольори в цих областях, але відтінок для всіх цих регіонів не сильно відрізняється, тому значення відтінку може бути корисним при сегментації рук.
Нічого я не знаю, що особливо краще з HSV порівняно з YUV або LAB, що сприяло б вилученню та інваріації освітлення або візуалізації. Я думаю, що HSV є найбільш часто використовуваним через умовність та безперервність: його легше порівнювати результати та спілкуватися один з одним, якщо ви обидва використовуєте один і той же кольоровий простір.
Зважаючи на це, ВПГ (на відміну від RGB) використовується у комп’ютерному зорі з 2 відомих мені причин:
Як уже згадували інші, корисність відокремлення луми від кольоровості. Лума сильно відрізняється в сцені залежно від кількості світла, що падає на предмет. З іншого боку, Chroma краще співвідноситься із властивостями об'єкта, а для належним чином збалансованих білих зображень є більш-менш інваріантними.
Однак я хотів би додати, що HSV, HSL або насправді будь-який кольоровий простір з полярною параметризацією площини кольору - це поганий вибір для цієї мети. Це тому, що вони вносять особливість у лінію сірого (який відтінок сірий?), Роблячи їх дуже чутливими до шуму та балансу білого. Крім того, порівняння двох кольорів у полярній системі координат не настільки прямо. Також зауважте, що ні значення HSV, ні легкість у HSL не відповідають сприйнятій людиною легкістю чи будь-яким іншим фізичним вимірюванням енергії.
Існує безліч лінійних кольорових просторів, які дають однакове розділення лума-хрому, зберігаючи лінійність (YCbCr, YUV) або правильно моделюючи людський зір (LUV, LAB). З тими можна порівняти два кольори за допомогою евклідової норми L2 за їх кольоровістю, що призведе до більш надійного алгоритму в цілому.
Чому тоді HSV / HSL використовуються так часто? Важко дати об'єктивну відповідь. З мого досвіду, це здебільшого пояснюється незнанням та наявністю програм RGB-> HSV для перетворення. Довелося працювати з кодом, автори якого не розуміли гамма-корекцію, не кажучи вже про різні кольорові простори. Побачений код, який перетворив RGB у HSV, потім сегментував зображення на основі відтінку, не зважаючи на те, що це модульна кількість. Я думаю, ми можемо погодитися, що ці свідомі рішення не були підкріплені будь-якою причиною.