왜 비전과 이미지 처리에서 HSV 색 공간을 그렇게 자주 사용합니까?


64

추적, 사람 감지 등을 위해 HSV 색 공간이 사방에 사용되는 것을 볼 수 있습니다. 궁금합니다. 왜 그런가요? RGB를 사용하는 것보다이 색 공간이 더 좋은 이유는 무엇입니까?


3
이것은 매우 좋은 질문입니다. 제 생각에는 HSV가 무엇인지 RGB가 무엇인지 조금 더 자세하게하면 도움이 될 것입니다. 대부분의 답변에서 HSV와 RGB를 비교할 때 제목을 사용하여이 두 색상 공간을 비교할 수 있습니다.
PhilMacKay

2
또 다른 좋은 질문은 "HSV 대신 왜 HSV가 모든 곳에서 사용됩니까?"입니다.
posfan12

답변:


60

간단히 말하면 달리이다 RGB , HSV가 분리 루마 에서, 또는 이미지 세기를 색도 또는 색 정보. 이것은 많은 응용 프로그램에서 매우 유용합니다. 예를 들어, 컬러 이미지의 히스토그램 이퀄라이제이션을 수행하려면 강도 구성 요소에서만이를 수행하고 색상 구성 요소는 그대로 두십시오. 그렇지 않으면 매우 이상한 색상이 나타납니다.

컴퓨터 비전에서는 견고성, 조명 변경 또는 그림자 제거와 같은 다양한 이유로 색상 구성 요소를 강도와 분리하려고합니다.

그러나 HSV는 색상과 강도를 구분하는 많은 색상 공간 중 하나입니다 (YCbCr, Lab 등 참조). HSV는 RGB와 HSV 간의 변환을위한 코드가 널리 사용 가능하고 쉽게 구현 될 수 있기 때문에 종종 사용됩니다. 예를 들어, MATLAB에 대한 이미지 처리 도구 상자는 기능이 포함되어 rgb2hsvhsv2rgb.


42

색상 정보는 일반적으로 HSV 정보보다 훨씬 시끄 럽습니다.

예를 들어 보겠습니다. 저와 일부 친구는 실제 장면 비디오 (소음, 그림자 및 때때로 폐색)에서 교통 신호 인식을 다루는 프로젝트에 참여했습니다. 이 프로젝트는 더 큰 프로젝트의 일부 였으므로이 특정 문제에 대한 다양한 접근 방식을 시도해 볼 수있었습니다 (구식 접근 방식을 재사용). 색상 기반 접근 방식을 직접 시도하지는 않았지만 흥미로운 정보를 기억합니다. _STOP 표시의 주요 RGB 구성 요소는 종종 빨간색 이 아니 었습니다 ! (주로 그림자로 인해)

일반적으로 HSV 색 공간에서 더 나은 정보를 얻을 수 있습니다 . 다시 한 번 개인 경험을 해보도록하겠습니다. 그림자가있는 단색 평면 이미지가 있다고 상상해보십시오. RGB 색상 공간에서 그림자 부분은 그림자가없는 부분과 매우 다른 특성을 가질 것입니다. HSV 색 공간으로, 색상 그늘은 주로 영향 것 모두 패치 요소는 유사하기 쉽다 , 또는 어쩌면 satuation의 그동안, 성분 색상 은 백색에 의해 휘도 및 희석 다움이다없이 (주 "색상"을 나타내는 / black)은 크게 바뀌지 않아야합니다.

이 설명이 직관적이지 않은 경우 다음을 제안합니다.

  • HSV 색상 공간에서 색상을 나타내는 데 사용되는 구성 요소를 이해하고 이해하고 RGB에 대한 지식을 갱신하십시오.
  • 이러한 종류의 색상 표현이 개발 된 이유를 시도해보십시오. 색상에 대한 인간의 해석에 대한 관점에 근거하여 항상 어떤 방식 으로든

    예를 들어, 아이들은 실제로 매우 싫어 == 평가 객체, 그들은 매우 선호 satuated 색상이 강렬하고 비 희석되는 개체, 개체를

  • 이것을 이해하고 직관을 개발 한 후에는 이미지를 가지고 놀아야합니다. RGB 및 HSV 구성 요소에서 다양한 이미지를 분해 해보십시오.

    당신의 목표는 그림자, 강한 조명, 빛의 반사를 포함하는 이미지에 대한 이러한 분해의 차이 를보고 이해 하는 것입니다.

  • 재생하고 싶은 특정 유형의 이미지가있는 경우 이미지를 분해 해보십시오. 누가 알겠습니까, 아마도 RGB가 HSV보다 사용자의 요구에 더 적합 할 수 있습니다. :)


1
그림자 인 경우 채도가 아닌 밝기 만 변경해야합니다.
Andrey Rubshtein

@Andrey는 내가 말했듯이 색상 기반 접근 방식을 직접 사용하지는 않았지만 그림자 일뿐 만 아니라 주변의 간접 조명 또는 이와 유사한 것에서도 역할을 했다고 추측 할 수 있습니다 .
penelope

1
네 말이 맞아 그러나 간접 조명의 경우 색조도 변경 될 수 있습니다.
Andrey Rubshtein

1
@Andrey 따라서 내 말로 : "더 가능성이", "유사한", "주로 영향", ... 결국, HSV를 설명하지 않고 경험을 바탕으로 몇 가지 예와 교육 추측을 제공합니다. 그리고 모든 응용 프로그램에 가장 적합한 색상 공간을 선택하는 가장 좋은 방법 은 이미지 데이터베이스와 다른 색상 공간을 사용하는 것입니다.
penelope

3
주 광원 (태양)에 의해 그림자가없고 따라서 불이 들어오지 않는 것은 2 차 광원 (하늘, 거대한 푸른 빛)에 의해 불이 켜집니다. 우리의 눈은 절대적인 색 대신에 상대적인 색 측정을하기 때문에 인간의 눈에는 여전히 붉게 보입니다. 이것이 바로 플래시가 아닌 실내 사진이 생각보다 노란색으로 보이는 이유입니다. 그리고 실제로 이미지 데이터베이스를 가지고 노는 것에 대해 전적으로 동의합니다.
John Robertson

8

Hue 컴포넌트 만 사용하면 알고리즘이 조명 변형에 덜 민감합니다 (불변하지 않은 경우).

다른 인기있는 옵션은 LAB 색상 공간입니다. 여기서 AB 채널은 색상을 나타내고 AB 공간의 유클리드 거리는 사람의 색상 인식과 더 잘 일치합니다. 다시, L 채널 (Luminance)을 무시하면 알고리즘이 조명 차이에 대해 더욱 강력 해집니다.


7

내가 알 수있는 가장 좋은 대답은 RGB가 RGB가 색상을 표시하는 방식과 관련하여 "구현 세부 사항"과 관련이 있고 HSV는 "실제 색상"구성 요소와 관련이 있다는 것입니다. 이것이 RGB라고 말하는 또 다른 방법은 컴퓨터가 색상을 처리하는 방식이며 HSV는 인간 색상을 인식 하는 방식의 구성 요소를 캡처하려고 시도합니다 .

내가 자세히 설명하겠습니다.

색상은 전자기파에 기반한 인식입니다. 이 파동의 자연적 특성은 예를 들어 강도와 주파수입니다. 적외선에서 자외선으로 광파의 주파수를 스윕하면 무지개 색상을 따라 색상 변화를 시각적으로 감지합니다. 무지개 색은 단일 주파수 파로 표현되기 때문에 "순수한 색"으로 간주 될 수 있습니다.

이제 인간의 눈은 놀랍게도 빨강, 녹색 및 파랑이 아닌 세 가지 주요 광 주파수에만 반응하거나 "공명"할 수 있습니다. 사실이 반응은 비선형이기 때문에, 망막은 세 가지 색 성분결합 된 반응에 의해 주어진 순수한 색 (그리고 암시 적으로 "주파수")을 구별 할 수 있습니다 .

RGB 색상 공간은 망막의 내부 동작을 모방하기 위해 존재하기 때문에 픽셀 당 24 비트 색상의 편리한 (컴퓨터 관점에서) 수단으로 컴퓨터 디스플레이에서 대부분의 색상을 표현할 수 있습니다 코딩. RGB 색상 공간은 자연 색상 속성과 사람의 색상 해석에 본질적인 관계가 없습니다.

예를 들어 RGB 공간에서 채널 단위로 수행되는 모든 산술 연산 (예 : 색상 그라디언트 생성)은 매우 조잡하거나 심지어 "잘못된"결과를 제공합니다. 그렇기 때문에 색상 정지 점을 RGB에서 다른 색상 공간 (HLS, Lab 등)으로 변환하고 보간을 수행 한 다음 보간 된 값을 다시 RGB로 변환하여 컬러 맵을 만드는 것이 좋습니다.

도움이 되었기를 바랍니다!


2
동의하지 않습니다. 인간, 컴퓨터 및 물리의 두 가지 도메인이 있습니다. RGB 모델은 3 개의 색 수용체가있는 사람의 눈에서 파생됩니다.
MSalters

@MSalters 우리가 똑같은 것에 대해 이야기하고 있다고 생각합니다 (아마도 내가 완전히 명확하게하지는 않았지만). RGB 디스플레이는 색상 인식 시스템과 일치하도록 제작되었습니다. 그들은 컴퓨터 대응, (R, G, B) "좌표"를 가지고 있습니다. 이러한 좌표는 색상의 물리적 인 "실제 특성"속성보다는 구현에 매핑되므로 지각 적으로 선형 그라디언트 보간, 색상 보정, 밝기 및 채도 연산 등과 같은 수학적 처리를 수행하는 데 적합하지 않습니다.
heltonbiker

2

HSV는 Hue-Saturation-Value를 나타냅니다. 실제로 RGB, YCbCr 등의 색상 평면 표현 유형입니다.

장치 독립적 인 색상 표현 형식입니다. HSV 색상 표현은 특정 색상 유형 (예 : 피부색, 불색 등)을 감지하는 데 유용합니다.

MatlabRGB 이미지를 HSV 평면으로 변환하는 기능은 rgb2hsv('/inputimage_name')입니다.


1

나는 당신에게 이해의 예를 줄 것입니다. 우리의 손처럼 많은 부분이 손바닥, 뒷 손바닥 및 그 아래에 있습니다. 이러한 영역에서 다른 색상 변화를 볼 수 있지만 이러한 모든 영역의 색조는 크게 다르지 않으므로 색조 값은 수동 분할에 유용 할 수 있습니다.


1

YUV 또는 LAB와 비교할 때 HSV를 사용하면 피처 추출 및 조명 불변 또는 시각화에 더 좋을 것입니다. HSV는 규칙과 연속성으로 인해 가장 일반적으로 사용되는 것으로 생각됩니다. 동일한 색상 공간을 사용하는 경우 결과를 쉽게 비교하고 서로 통신 할 수 있습니다.

그렇게 말하면 HSV (RGB와 반대)는 내가 아는 두 가지 이유로 컴퓨터 비전에 사용됩니다.

  1. 시각화 . 이미지에 방향 정보가 풍부 할 때마다 HSV는 시각화에 적합한 색상 공간입니다. 이미지에 작은 벡터를 플로팅하는 대신 (모든 것을 어수선하게), 방향 벡터를 H (벡터 각도) 및 S (벡터 크기)에 매핑하여 HSV로 색상을 플롯 할 수 있습니다. 이렇게하면 원하는 값에 따라 다양한 방법으로 값 구성 요소를 설정할 수 있습니다. 미들 버리 광 흐름 데이터 세트에서 아래 예를 참조하십시오. HSV는 방향을 조밀하게 표시하는 데 사용됩니다.

광학 흐름에 관한 미들 버리 DB의 예

  1. 다른 답변에서 설명한 것처럼 형상 추출 및 조명 불변성 .

0

다른 사람들이 언급했듯이 루마와 크로마를 분리하는 것이 좋습니다. 루마는 물체에서 떨어지는 빛의 양에 따라 장면에서 크게 다릅니다. 반면에, 크로마는 물체의 본질적인 특성과 더 잘 상관되며, 화이트 밸런스가 적절히 조정 된 이미지는 거의 변하지 않습니다.

그러나 HSV, HSL 또는 크로마 평면의 극성 매개 변수가있는 모든 색상 공간은 그 목적에 적합하지 않은 선택이라고 덧붙이고 싶습니다. 그레이 라인에 특이점 (회색은 어떤 색조입니까?)을 도입하여 노이즈와 화이트 밸런스에 매우 민감하기 때문입니다. 또한 극좌표 시스템에서 두 색상을 비교하는 것은 간단하지 않습니다. 또한 HSV의 값이나 HSL의 밝기는 사람이 인식 한 밝기 나 다른 물리적 에너지 측정 값과 일치하지 않습니다.

선형성을 유지하면서 (YCbCr, YUV) 또는 사람의 시력을 올바르게 (LUV, LAB) 유지하면서 동일한 루마-크로마 분리를 제공하는 선형 색상 공간이 많이 있습니다. 이것들을 사용하면 색도에 유클리드 L2 표준을 사용하여 두 가지 색상을 비교할 수있어 전체적으로보다 강력한 알고리즘을 얻을 수 있습니다.

그렇다면 왜 HSV / HSL이 자주 사용됩니까? 객관적인 답변을하기가 어렵습니다. 내 경험상 그것은 무지와 RGB-> HSV 변환 루틴의 가용성 때문입니다. 저자가 다른 색 공간은 물론 감마 수정을 이해하지 못하는 코드로 작업해야했습니다. RGB를 HSV로 변환 한 코드는 색조를 기준으로 이미지를 분할하여 모듈 수량이라는 사실을 무시했습니다. 우리는 그 결정이 어떤 이유로 든 의식적인 결정이 아니라는 것에 동의 할 수 있다고 생각합니다.


-1

HSV 색상 모델은 RGB, YUV, Lab 등과 비교하여 사람이 색상 객체를 보는 방식과 더 관련이 있습니다.

물체의 색 (Hue), 채도 (채도) 및 백색광 (Intesity)의 양을 볼 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.