추적, 사람 감지 등을 위해 HSV 색 공간이 사방에 사용되는 것을 볼 수 있습니다. 궁금합니다. 왜 그런가요? RGB를 사용하는 것보다이 색 공간이 더 좋은 이유는 무엇입니까?
추적, 사람 감지 등을 위해 HSV 색 공간이 사방에 사용되는 것을 볼 수 있습니다. 궁금합니다. 왜 그런가요? RGB를 사용하는 것보다이 색 공간이 더 좋은 이유는 무엇입니까?
답변:
간단히 말하면 달리이다 RGB , HSV가 분리 루마 에서, 또는 이미지 세기를 색도 또는 색 정보. 이것은 많은 응용 프로그램에서 매우 유용합니다. 예를 들어, 컬러 이미지의 히스토그램 이퀄라이제이션을 수행하려면 강도 구성 요소에서만이를 수행하고 색상 구성 요소는 그대로 두십시오. 그렇지 않으면 매우 이상한 색상이 나타납니다.
컴퓨터 비전에서는 견고성, 조명 변경 또는 그림자 제거와 같은 다양한 이유로 색상 구성 요소를 강도와 분리하려고합니다.
그러나 HSV는 색상과 강도를 구분하는 많은 색상 공간 중 하나입니다 (YCbCr, Lab 등 참조). HSV는 RGB와 HSV 간의 변환을위한 코드가 널리 사용 가능하고 쉽게 구현 될 수 있기 때문에 종종 사용됩니다. 예를 들어, MATLAB에 대한 이미지 처리 도구 상자는 기능이 포함되어 rgb2hsv
와 hsv2rgb
.
색상 정보는 일반적으로 HSV 정보보다 훨씬 시끄 럽습니다.
예를 들어 보겠습니다. 저와 일부 친구는 실제 장면 비디오 (소음, 그림자 및 때때로 폐색)에서 교통 신호 인식을 다루는 프로젝트에 참여했습니다. 이 프로젝트는 더 큰 프로젝트의 일부 였으므로이 특정 문제에 대한 다양한 접근 방식을 시도해 볼 수있었습니다 (구식 접근 방식을 재사용). 색상 기반 접근 방식을 직접 시도하지는 않았지만 흥미로운 정보를 기억합니다. _STOP 표시의 주요 RGB 구성 요소는 종종 빨간색 이 아니 었습니다 ! (주로 그림자로 인해)
일반적으로 HSV 색 공간에서 더 나은 정보를 얻을 수 있습니다 . 다시 한 번 개인 경험을 해보도록하겠습니다. 그림자가있는 단색 평면 이미지가 있다고 상상해보십시오. RGB 색상 공간에서 그림자 부분은 그림자가없는 부분과 매우 다른 특성을 가질 것입니다. HSV 색 공간으로, 색상 그늘은 주로 영향 것 모두 패치 요소는 유사하기 쉽다 값 , 또는 어쩌면 satuation의 그동안, 성분 색상 은 백색에 의해 휘도 및 희석 다움이다없이 (주 "색상"을 나타내는 / black)은 크게 바뀌지 않아야합니다.
이 설명이 직관적이지 않은 경우 다음을 제안합니다.
이러한 종류의 색상 표현이 개발 된 이유를 시도해보십시오. 색상에 대한 인간의 해석에 대한 관점에 근거하여 항상 어떤 방식 으로든
예를 들어, 아이들은 실제로 매우 싫어 색 == 평가 객체, 그들은 매우 선호 satuated 색상이 강렬하고 비 희석되는 개체, 개체를
이것을 이해하고 직관을 개발 한 후에는 이미지를 가지고 놀아야합니다. RGB 및 HSV 구성 요소에서 다양한 이미지를 분해 해보십시오.
당신의 목표는 그림자, 강한 조명, 빛의 반사를 포함하는 이미지에 대한 이러한 분해의 차이 를보고 이해 하는 것입니다.
재생하고 싶은 특정 유형의 이미지가있는 경우 이미지를 분해 해보십시오. 누가 알겠습니까, 아마도 RGB가 HSV보다 사용자의 요구에 더 적합 할 수 있습니다. :)
내가 알 수있는 가장 좋은 대답은 RGB가 RGB가 색상을 표시하는 방식과 관련하여 "구현 세부 사항"과 관련이 있고 HSV는 "실제 색상"구성 요소와 관련이 있다는 것입니다. 이것이 RGB라고 말하는 또 다른 방법은 컴퓨터가 색상을 처리하는 방식이며 HSV는 인간 이 색상을 인식 하는 방식의 구성 요소를 캡처하려고 시도합니다 .
내가 자세히 설명하겠습니다.
색상은 전자기파에 기반한 인식입니다. 이 파동의 자연적 특성은 예를 들어 강도와 주파수입니다. 적외선에서 자외선으로 광파의 주파수를 스윕하면 무지개 색상을 따라 색상 변화를 시각적으로 감지합니다. 무지개 색은 단일 주파수 파로 표현되기 때문에 "순수한 색"으로 간주 될 수 있습니다.
이제 인간의 눈은 놀랍게도 빨강, 녹색 및 파랑이 아닌 세 가지 주요 광 주파수에만 반응하거나 "공명"할 수 있습니다. 사실이 반응은 비선형이기 때문에, 망막은 세 가지 색 성분 의 결합 된 반응에 의해 주어진 순수한 색 (그리고 암시 적으로 "주파수")을 구별 할 수 있습니다 .
RGB 색상 공간은 망막의 내부 동작을 모방하기 위해 존재하기 때문에 픽셀 당 24 비트 색상의 편리한 (컴퓨터 관점에서) 수단으로 컴퓨터 디스플레이에서 대부분의 색상을 표현할 수 있습니다 코딩. RGB 색상 공간은 자연 색상 속성과 사람의 색상 해석에 본질적인 관계가 없습니다.
예를 들어 RGB 공간에서 채널 단위로 수행되는 모든 산술 연산 (예 : 색상 그라디언트 생성)은 매우 조잡하거나 심지어 "잘못된"결과를 제공합니다. 그렇기 때문에 색상 정지 점을 RGB에서 다른 색상 공간 (HLS, Lab 등)으로 변환하고 보간을 수행 한 다음 보간 된 값을 다시 RGB로 변환하여 컬러 맵을 만드는 것이 좋습니다.
도움이 되었기를 바랍니다!
나는 당신에게 이해의 예를 줄 것입니다. 우리의 손처럼 많은 부분이 손바닥, 뒷 손바닥 및 그 아래에 있습니다. 이러한 영역에서 다른 색상 변화를 볼 수 있지만 이러한 모든 영역의 색조는 크게 다르지 않으므로 색조 값은 수동 분할에 유용 할 수 있습니다.
YUV 또는 LAB와 비교할 때 HSV를 사용하면 피처 추출 및 조명 불변 또는 시각화에 더 좋을 것입니다. HSV는 규칙과 연속성으로 인해 가장 일반적으로 사용되는 것으로 생각됩니다. 동일한 색상 공간을 사용하는 경우 결과를 쉽게 비교하고 서로 통신 할 수 있습니다.
그렇게 말하면 HSV (RGB와 반대)는 내가 아는 두 가지 이유로 컴퓨터 비전에 사용됩니다.
다른 사람들이 언급했듯이 루마와 크로마를 분리하는 것이 좋습니다. 루마는 물체에서 떨어지는 빛의 양에 따라 장면에서 크게 다릅니다. 반면에, 크로마는 물체의 본질적인 특성과 더 잘 상관되며, 화이트 밸런스가 적절히 조정 된 이미지는 거의 변하지 않습니다.
그러나 HSV, HSL 또는 크로마 평면의 극성 매개 변수가있는 모든 색상 공간은 그 목적에 적합하지 않은 선택이라고 덧붙이고 싶습니다. 그레이 라인에 특이점 (회색은 어떤 색조입니까?)을 도입하여 노이즈와 화이트 밸런스에 매우 민감하기 때문입니다. 또한 극좌표 시스템에서 두 색상을 비교하는 것은 간단하지 않습니다. 또한 HSV의 값이나 HSL의 밝기는 사람이 인식 한 밝기 나 다른 물리적 에너지 측정 값과 일치하지 않습니다.
선형성을 유지하면서 (YCbCr, YUV) 또는 사람의 시력을 올바르게 (LUV, LAB) 유지하면서 동일한 루마-크로마 분리를 제공하는 선형 색상 공간이 많이 있습니다. 이것들을 사용하면 색도에 유클리드 L2 표준을 사용하여 두 가지 색상을 비교할 수있어 전체적으로보다 강력한 알고리즘을 얻을 수 있습니다.
그렇다면 왜 HSV / HSL이 자주 사용됩니까? 객관적인 답변을하기가 어렵습니다. 내 경험상 그것은 무지와 RGB-> HSV 변환 루틴의 가용성 때문입니다. 저자가 다른 색 공간은 물론 감마 수정을 이해하지 못하는 코드로 작업해야했습니다. RGB를 HSV로 변환 한 코드는 색조를 기준으로 이미지를 분할하여 모듈 수량이라는 사실을 무시했습니다. 우리는 그 결정이 어떤 이유로 든 의식적인 결정이 아니라는 것에 동의 할 수 있다고 생각합니다.