2013-08-16 6 views
2

인물 사진의 머리카락을 감지하고 캡슐화하는 알곡 (alghoritm)이 올바르게 작동한다고 가정 해 보겠습니다.인물 이미지에서 머리카락 색 감지하기

어떻게 색을 구분할 수 있습니까?

나는 간단하게 보입니다. 그러나 주된 문제는 사진을 찍은 환경의 조명 조건이나 (적은 경우) 포스트 효과 프로세싱, "금발", "검은 색", " 잘못된 "긍정적 인"과 "정확한"것을 탐지하지 못하면 "갈색"과 "적색"이 많이 바뀝니다. (금발의 검은 예를 들어 보임).

opencv (또는 이미 머리카락이 있기 때문에 다른 도구 사용)는 어떤 종류의 사전 처리 알고리즘을 적용해야 이러한 종류의 문제를 "정상화"하고 오류를 최소화 할 수 있습니까?

고마워요.

+0

색을 구분하려면 HSV 색 공간을 사용하는 것이 좋습니다. 색조를 직접 얻을 수 있기 때문입니다. – ChronoTrigger

+0

문제가 해결 되었습니까? – Suisse

답변

1

색상 분류를 위해 기계 학습 방법을 사용할 수 있다고 생각합니다. 색상 샘플 (입력 벡터로 색상 막대 그래프를 사용할 수 있음) 및 일부 클래스 (색상 이름)를 들으면서 분류 자 ​​(예 : SVM 또는 신경망)를 학습하십시오. 가벼운 변화, 노이즈, 그림자 등을 다루는 좋은 방법이 될 것이라고 생각합니다. 그리고 나는 좀 더 진보 된 색 공간 L * a * b * 또는 HSV를 사용하는 것이 더 좋을 것이라고 생각합니다.

조명 벡터에 대한 참조 기록을 일부 포함해야 할 수도 있습니다 (조명 조건에 대한 데이터를 얻으려면). 예를 들어 얼굴에서 가져올 수 있습니다 (최선의 해결책은 아님).

+0

고마워, 나는 조금 더 읽고, 실제로 나는 YCbCr을 사용하여 (생략 가능) Y를 생략해야한다. 머리카락 색상 범위의 일부 샘플을 가져 와서 YCbCr 공간에서 샘플링 한 다음 격리 된 YCbCr) 각 그림의 머리카락. 맞습니까? 감사합니다. – voskyc

+0

아니요, 예를 들어 : 색상 히스토그램 벡터 {1,2,3,42,4,2,6}을 사용하고 레이블을 지정합니다. 예 : "노랑". 당신은 그런 쌍을 많이 가지고 있습니다. 그런 다음이 데이터를 사용하여 분류자를 훈련 할 수 있습니다. 그리고 훈련 후에 그것은 히스토그램 벡터에서 얻을 것이고 당신에게 색 이름을 줄 것입니다. –

+0

비슷한 문제에서 ML 사용에 대한 내용은 다음에서 볼 수 있습니다. http://lear.inrialpes.fr/pubs/2009/VSVL09/verbeek09tip.pdf –

1

머리카락을 사용하여 사전 처리를 할 수 있다고 생각하지 않습니다. 나는 직감으로 이것을 말하고있다.

다음은 아이디어입니다. 히스토그램 평형화는 조명 효과를 어느 정도 극복하는 유명한 전처리 방법입니다. 따라서 이미지를 색상 채널로 분리하고 각 채널에 히스토그램 등화를 적용한 다음 채널을 결합하여 히스토그램 평등화 된 이미지를 얻습니다. 나는 그것이 유용 할 것이라고 생각한다.

나는 이것을 Matlab에서 구현했으며, Lena에서 시도했다. here에서 다운로드 할 수 있습니다.

+0

코드를 다시 공유 할 수 있습니까? 고마워 – Suisse