2014-12-15 5 views
0

이미지의 오브젝트 색상을 결정하고 싶습니다. 나는 물체의 마스크를 결정할 수 있었고 마스크를 사용하여 이미지의 HSV 막대 그래프를 생성했다.
HSV 히스토그램에서 색상 결정

cvtColor(Frame, hsv_base, CV_BGR2HSV); 
int h_bins = 50; 
int s_bins = 32; 
int v_bins = 10; 
int histSize[] = { h_bins, s_bins, v_bins }; 

float h_ranges[] = { 0, 180 }; 
float s_ranges[] = { 0, 256 }; 
float v_ranges[] = { 0, 256 }; 

const float* ranges[] = { h_ranges, s_ranges, v_ranges }; 
int channels[] = { 0, 1, 2}; 
calcHist(&hsv_base, 1, channels, mask, hist_base, 3, histSize, ranges, true, false); //mask is the mask of the object 


모두 so.Can 사람이 나에게 히스토그램에서 색상을 결정하는 간단한 방법을 이야기 할 수있는 다른 방법을 보여줍니다?

+0

[this] (http://en.wikipedia.org/wiki/HSL_and_HSV#HSV_.28Hue_Saturation_Value.29)가 도움이 될 것이라고 생각합니다. – sop

+0

나는 [this] (http://mkweb.bcgsc.ca)도 발견했습니다./color_summarizer /? faq)를 참조하십시오. – sop

답변

0

히스토그램을 플로팅 할 때 X 축은 "빈"역할을합니다. 256 개의 bin으로 히스토그램을 구성하면 각 픽셀 값의 횟수가 효과적으로 계산됩니다.

대조적으로 2 개 (등 간격) 빈을 사용하는 경우 픽셀이 [0, 128] 또는 [128, 255] 범위에있는 횟수를 계산합니다. X 축 값으로 비닝 된 픽셀 수는 Y 축에 그려집니다.

따라서 가장 일반적인 색상을 얻으려면 256 개 (256 비트 이미지 용)가 필요하고 항목 수를 계산하십시오.

+0

[0,128]에 이르는 두 개의 bin 값만 사용해야한다는 것을 의미합니까? – lenna

+0

귀하가 실제로 달성하고자하는 것에 대해 귀하의 질문에 대해 명확하지 않습니다. "색상을 결정하라"는 의미는 상당히 많을 수도 있습니다. – GPPK

+1

색상과 가장 관련이 깊은 것은 색상 및 채도 채널입니다. 당신이 "동일/비슷한 색상"을 정의하는 방법에 따라 당신은 크기 또는 빈을 선택할 것입니다. – Micka

관련 문제