물체의 색상을 결정하는 가장 정확한 방법은 무엇입니까?


33

컴퓨터 비전 (Gaussian Blur, thresholding, Hough-Transform 등)에 대한 몇 가지 표준 기술을 사용하여 정적 이미지 (.jpeg, .png 등)에서 동전을 감지 할 수있는 컴퓨터 프로그램을 작성했습니다. 주어진 이미지에서 가져온 동전의 비율을 사용하여 어떤 동전이 어느 것인지 확실하게 알 수 있습니다. 그러나 신뢰 수준을 높이고 유형 A로 추정되는 동전 (반지름 비율에서)이 올바른 색상인지 확인합니다. 문제는 영국 동전 등의 경우입니다. (구리,은, 금), 각각의 색상 (구리에서 금으로)은 매우 유사합니다.

RedGreenBlue (RGB) '색 공간'과 관련하여 주어진 동전의 평균 색상을 추출하는 루틴 과이 색상을 HueSaturationBrightness (HSB 또는 HSV) '색 공간'으로 변환하는 루틴이 있습니다.

RGB는 세 가지 코인 색상을 구별하려는 시도에 적합하지 않습니다 (예를 들어 첨부 된 [기본] 이미지 참조). 다른 코인 유형의 색상에 대해 다음 범위와 일반적인 값이 있습니다.

참고 : 여기서 일반적인 값은 실제 이미지의 '픽셀 단위'평균을 사용하여 선택한 값입니다.

**Copper RGB/HSB:** typicalRGB = (153, 117, 89)/(26, 0.42, 0.60).

**Silver RGB/HSB:** typicalRGB = (174, 176, 180)/(220, 0.03, 0.71).

**Gold RGB/HSB:** typicalRGB = (220, 205, 160)/(45, 0.27, 0.86) 

먼저 주어진 평균 코인 색상 (RGB 사용)과 RGB 값을 벡터로 취급하여 위에서 주어진 각 코인 유형에 대한 일반적인 값 사이의 '유클리드 거리'를 사용하려고 시도했습니다. 구리의 경우 :

Dcopper=((RtypeRcopper)2+(GtypeGcopper)2+(BtypeBcopper)2)

차이의 가장 작은 값 ( D )은 주어진 동전이 가장 가능성이 높은 유형을 알려줍니다. 이 방법은 매우 정확하지 않은 것으로 나타났습니다.

나는 또한 동전의 색조를 위에 제공된 유형의 전형적인 값과 비교하려고 시도했습니다. 이론적으로 이것은 이미지의 다양한 밝기 및 채도 수준을 처리하기 위해 훨씬 더 나은 '색 공간'을 제공하지만 충분히 정확하지는 않습니다.

질문 : 정적 이미지에서 색상을 기준으로 코인 유형을 결정하는 가장 좋은 방법은 무엇입니까?

시간 내 주셔서 감사합니다.

전형적인 코인 색상

편집 1

참고 : 아래에서 논의 한 모든 아이디어를 시도했지만 아무것도 얻지 못했습니다. 조명 조건의 변화 (동일한 이미지 내에서도)는이 문제를 매우 어렵게 만들고 고려해야합니다.

편집 2 (결과 요약)

답변 주셔서 감사합니다. 내 자신에 대한 추가 연구 (응답 및 의견 포함)는 임의의 조명, 임의의 카메라 (모바일 장치), 동전 색의 변동 (동일한 종 / 유형에서도)의 일반적인 경우 에서이 문제를 다루기가 얼마나 힘든지를 강조했습니다. 나는 처음에 피부색 인식 (매우 활발한 연구 분야)을 출발점으로 보았으며, 백인들만 피부색을 인식하는 데에도 여전히 많은 문제가있다 ( 현재의 기술에 대한 검토를 위해이 논문 참조 ). 이 문제에는 연속적이고 다양한 색도를 가질 수있는 세 가지 뚜렷한 색 물체가 포함되어 있다는 사실로 인해 컴퓨터 비전 주제를 분류하고 처리하기가 매우 어렵습니다 (실제로 박사 학위를받을 수 있음) !).

아래 DW 의 매우 유용한 게시물 에서 Gamut Constraint Method를 살펴 보았습니다 . 이것은 처음에는 이미지와 별도의 코인 오브젝트를 조명 조건과 무관 한 색상으로 변환하는 전처리 단계로 매우 유망했습니다. 그러나이 기술조차 완벽하게 작동하지 않으며 (내가 원하지 않는 매핑을위한 이미지 / 히스토그램 라이브러리가 포함되어 있음) 훨씬 복잡한 신경망 아키텍처 방법론도 아닙니다. 실제로이 백서는 다음과 같이 요약합니다.

"current machine colour constancy algorithms are not good enough for colour-based 
 object recognition.".

즉,이 주제에 대한 최신 논문이 많지 않다는 것을 알 수는 없지만 찾을 수 없으며 현재로서는 매우 활발한 연구 분야가 아닌 것 같습니다.

AVB 의 답변 도 도움이되었으며 L A B *를 간단히 살펴 보았습니다.

"The nonlinear relations for L*, a*, and b* are intended to mimic the nonlinear
response of the eye. Furthermore, uniform changes of components in the L*a*b* colour
space aim to correspond to uniform changes in perceived colour, so the relative 
perceptual differences between any two colours in L*a*b* can be approximated by 
treating each colour as a point in a three dimensional space."

내가 읽은 것부터, 장치 의존적 이미지를위한이 색 공간으로의 변환은 까다로울 것입니다. 그러나 조금 더 시간이있을 때 (어떤 종류의 구현을 볼 수 있도록) 이것을 자세히 살펴볼 것입니다.

나는이 문제에 대한 구체적인 해결책을 위해 숨을 쉬지 않고 L A B *로 시도한 후 코인 색상을 무시하고 현재의 기하학적 감지 알고리즘 (정확한 Elliptic Hough Transform 등)을 확인하려고합니다.

모두 감사합니다. 그리고이 질문에 대한 최종 메모로, 여기에는 색상 인식이없는 새로운 기하학적 감지 알고리즘이있는 동일한 이미지가 있습니다.

여기에 이미지 설명을 입력하십시오


1
이미지의 색상 배경은 항상 동일합니까? 또는 이미지에 다른 '컬러 표준'객체를 도입 할 수 있습니까? 그렇다면 다양한 조명에 맞게 조정할 수 있습니다. 그렇지 않다면 어려울 수 있습니다.
onestop

2
그것은 명백하게 색깔의 빛이 아닙니다. 나는 햇빛, 형광등 및 백열등이 HSB 색상 일치를 망칠 정도로 다른 색상을 가지고 있다고 확신합니다. 심지어 눈이 어떻게 바뀌어 색상이 변하는 것을 인식하지 못하도록 조정됩니다.
Peter Shor 2019

2
(+1)이 질문은 흥미롭고 도전적입니다. 좋은 답변을 얻을 수있는 좋은 기회가 되려면 약간의 개선이 필요하다고 생각합니다. 현재 언급했듯이, 그것은 잘못된 자세로 접하고 있습니다. 실용적인 솔루션을 위해서는이 분류를 수행 할 수있는 환경 범위에 대한 자세한 내용을 제공해야합니다. 어떤 색 배경이 가능합니까? 항상 같은 수의 동전? 항상 컬러 이미지가 있습니까? 주변 조명이 좋습니까? 이러한 종류의 특성을 알면 솔루션에 대한 지침을 제공 할 수 있습니다.
추기경

2
나는 당신이 직면하고있는 문제는 "색상 불변성"의 문제라고 생각합니다. 다른 검색어는 "광원을 할인"또는 "배경을 할인"입니다. 비전 과학에서 해결되지 않은 문제입니다.
caracal

1
멋진 후속 조치를 위해 다시 +1 할 수 있기를 바랍니다! 매우 흥미로운 것들.
Matt Parker

답변:


6

초보자를위한 두 가지.

하나는 RGB에서 확실히 작동하지 않습니다. 기본값은 Lab (일명 CIE L * a * b *) 색상 공간이어야합니다. 버리십시오 L. 등의 이미지에서 보이는 a좌표는 당신에게 대부분의 정보를 제공하지만, 당신은 아마에 주성분 분석을해야 a하고 b바로 일을 간단하게 유지하기 위해, 첫 번째 (가장 중요한) 구성 요소에 따라 작업. 그래도 문제가 해결되지 않으면 2D 모델로 전환 해보십시오.

그것을 느끼기 위해, a3 개의 노란 동전에서 STD가 6 미만이며 137 ( "골드"), 154 및 162의 수단이 구별되어야합니다.

둘째, 조명 문제. 여기서 문제를 신중하게 정의해야합니다. 어떤 조명이나 어떤 상황에서도 가까운 색상을 구별하고 싶다면 어쨌든 그렇게 할 수는 없습니다. 밝기의 국소적인 변화 만 걱정하면 Lab에서 대부분 처리합니다. 일광 및 백열등 모두에서 작업 할 수 있도록하려면 이미지 예와 같이 균일 한 흰색 배경을 보장 할 수 있습니까? 일반적으로 조명 상태는 어떻습니까?

또한 이미지는 외관상 상당히 저렴한 카메라로 촬영했습니다. 아마도 자동 화이트 밸런스 기능이있을 수 있습니다.이 기능은 색상을 상당히 나쁘게 만듭니다. 가능한 경우 끄십시오. 또한 이미지가 어느 시점에서 YCbCr로 코딩되었거나 (비디오 카메라 인 경우에는 많이 발생 함) JPG의 비슷한 변형으로 보입니다. 색상 정보가 심각하게 부족합니다. 귀하의 경우에는 실제로 좋을 수도 있습니다. 즉, 카메라가 컬러 채널에서 일부 노이즈 제거를 수행했음을 의미합니다. 반면에, 그것은 어떤 시점에서 색상 정보가 밝기보다 더 강력하게 양자화되었음을 의미합니다. 여기서 가장 중요한 것은 카메라가 중요하며 사용하려는 카메라에 따라 수행해야 할 작업이 달라집니다.

여기에 의미가없는 경우 의견을 남겨주십시오.


답변 주셔서 감사합니다. 위의 내용 중 어느 것도 보장 할 수 없습니다. 이것은 버튼 클릭으로 동전 (임의의 동전)을 계산하는 모바일 응용 프로그램을위한 것입니다 (매우 빠릅니다!). 따라서 조명은 크게 다를 수 있으며 배경도 일정하지 않습니다. 나는 이런 식으로 (당신이 지적한대로) 색상을 통해 동전 유형을 분류하는 것은 불가능하다고 생각합니다. 그러나 나는 당신이 L A B * 를 사용하는 것에 대한 답변을 좋아 하며 그것이 가장 좋은 답변이라고 믿습니다. 이것에 비추어 당신은 답과 현상금을 가지고 있습니다. 다시 감사합니다.
MoonKnight

6

브레인 스토밍 정신에서 시도해 볼 수있는 몇 가지 아이디어를 알려 드리겠습니다.

  1. 색조를 더 시도 하시겠습니까? Hue는 은색과 구리 / 금 사이에 꽤 좋은 차별자를 줬지만 적어도 여기에서 보여준 단일 예에서는 구리와 금 사이에는 그렇지 않습니다. 은을 구리 / 금과 구별 할 수있는 기능인지 여부를 확인하기 위해 Hue를 더 자세히 살펴 보았습니까?

    수동으로 레이블이 붙은 많은 예제 이미지를 수집하고 각 이미지에서 각 동전의 색조를 계산하는 것으로 시작할 수 있습니다. 그런 다음 색조를 식별하는 타당한 방법처럼 보이는지 확인하기 위해 히스토그램을 시도 할 수 있습니다. 또한 각 동전의 평균 색조를 살펴보고 여기에 제시 한 것과 같은 몇 가지 예를 살펴볼 수도 있습니다. 채도도 도움이 될 것 같으므로 채도를 시도 할 수도 있습니다.

    이것이 실패하면, 당신이 시도한 것을 보여주기 위해 질문을 편집하고 이것이 왜 어려운지 또는 어디에서 실패 하는지를 간결하게 설명하기위한 몇 가지 예를 제시 할 수 있습니다.

  2. 다른 색 공간? 마찬가지로 rg 색도로 변환 한 다음 결과를 사용 하여은 을 구리 / 금과 구별하는 데 도움이되는지 실험 해 볼 수 있습니다. 이것이 조명 변화를 조정하는 데 도움이 될 수 있으므로 시도해 볼 가치가 있습니다.

  3. nnn

    npnnonp,oToT(p)oiT(pi)TT(x)=x+c(mod360)c

  4. CRRC

    CθRθRθC(x,y)D(x,y)=Rθ(x,y)C(x,y)RθCL2(x,y)D(x,y)2θ0.25θ

    22아르 자형기음

    견고성을 위해 각 코인 (실제로 각 코인의 각면)에 대해 여러 개의 서로 다른 참조 이미지가있을 수 있으며 모든 참조 이미지를 사용하여 가장 일치하는 것을 찾으십시오.

    기음아르 자형

  5. 에프에프(아르 자형)아르 자형에프기음기음에프아르 자형아르 자형

    에프(아르 자형)=에프(아르 자형)μμ기음아르 자형

    에프

    에프기음

    기음기음에프

  6. 색 불변성에 대한 비전 알고리즘을 살펴보십시오. 컴퓨터 비전 커뮤니티는 색 불변성 , 알려지지 않은 조명 원을 교정하는 문제를 연구했습니다 . 예를 들어이 개요를 참조하십시오 . 이 문제에 대해 파생 된 일부 알고리즘을 탐색 할 수 있습니다. 그들은 조명 원을 유추 한 다음 수정하여 참조 조명 원으로 사진을 촬영했을 때 얻은 이미지를 도출합니다.

  7. 기음아르 자형기음

이것들 중 어느 것이 효과가 있는지는 모르겠지만 시도해 볼 수있는 아이디어입니다.


3

재미있는 문제와 좋은 일.

평균이 아닌 중간 색 값을 사용해보십시오. 밝기 및 채도로 인해 특이 값에 비해 더욱 강력합니다. 세 가지 대신 RGB 구성 요소 중 하나만 사용하십시오. 색상을 가장 잘 구분하는 구성 요소를 선택하십시오. 픽셀 분포의 속성에 대한 아이디어를 제공하기 위해 픽셀 값의 히스토그램 (예 : RGB 구성 요소 중 하나)을 플로팅 할 수 있습니다. 이것은 즉시 명백하지 않은 해결책을 제안 할 수 있습니다. RGB 구성 요소를 3D 공간에 플로팅하여 패턴을 따르는 지 확인하십시오. 예를 들어 RGB 구성 요소의 선형 조합이 개별 구성 요소보다 더 나은 분류 기일 수 있음을 나타내는 선에 가까이있을 수 있습니다.


중간 값으로 좋은 소리를 지르십시오. 실제로이 코드를 코딩했으며 올바른 색상을 설정하는 데 있어서도 좋지 않습니다. 히스토그램 방식을 사용하면 계산 비용을 알고 있습니다. 2D에서 픽셀을 반복하기 시작하면 요금이 부과됩니다! 그럼에도 불구하고 상관 관계를 설정하기 위해 이와 같은 것을 넣을 가치가 있습니다. RGB 구성 요소에 대한 모든 종류의 플롯을 생성했으며 다양한 조명 조건 (다른 위치에서 사진을 촬영 한 결과)으로 인해 RGB 값이 세 가지 동전 유형 모두에 대해 크게 겹칠 수 있습니다.
MoonKnight

또한 특정 코인 유형에 속하는 색 공간 포인트의 사후 확률을 추정하기 위해 모델을 피팅하는 방법을 살펴 보았습니다. 또한 가우시안 혼합 모델링도 살펴 보았지만 아직까지는 그리 멀지 않았습니다. 또한 다른 (어떤 임의적이지만 간단한) 접근 방식에 대한 정보를 얻었으며 가장 가까운 이웃 보간과 같은 것을 사용하는 것입니다. 시간 내 줘서 고마워.
MoonKnight

1
완전히 다른 트랙에서 동전의 또 다른 차이점은 앞면 / 뒷면의 디자인입니다 (일부는 같은 디자인을 가질 수 있지만) 디자인 패턴 세트를 코인 픽셀과 상호 상관 관계 (또는 상호 정보 사용) 당신이보고있는 동전을 결정하는 데 도움이됩니다. 비율, 픽셀 색상 및이 디자인 일치의 조합을 사용하면 잘못된 발견 속도를 줄일 수 있습니다.
martino

나는 이것을 생각했다-그러나 이것은 현재 인식 소프트웨어를 너무 많이 요구하고 있으며 처음부터 작성하는 거대한 일이 될 것이다 (OCR ??). 또한 그러한 구현의 유지 보수를 악몽으로 만드는 그러한 동전의 그래픽에는 큰 변형이 있습니다. 나는 나중에 놀이를 할 예정이다-나는 내가 찾은 것을보고 할 것이다. 다시 감사합니다.
MoonKnight

왜 공감해야합니까? 답변에 문제가 있다면 그것을 지적하는 것이 도움이 될 것입니다-나는 그것을 볼 수 없습니다
martino
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.