Цветовая сегментация изображений

Технология цветовой сегментации известна достаточно давно и описана во всех учебниках. Рассмотрим на примере метода «чистого» цвета, описанного здесь. Для того, чтобы делать сегментацию – построим карту цветов. Поскольку используем только два цвета, а яркость в расчет не берем, то у нас получается двумерная карта цвета, которую можно представить, например, в виде изображения 256 на 256 пикселей. Карту цвета построим таким образом:
for(i=0;i<img->height;i++)
	  for(j=0;j<img->width;j++)
	  {
		   k=(ptr[i*img->widthStep+j*3]+ptr[i*img->widthStep+j*3+1]+ptr[i*img->widthStep+j*3+2]);
		   if (k!=0) Color1_=int((double)256*ptr[i*img->widthStep+j*3]/k);
		   else Color1_ = 0;
		   if (Color1_>255) Color1_=255;			   
		   if (k!=0) Color2_=int((double)256*ptr[i*img->widthStep+j*3+1]/k);
		   else Color2_ = 0;
		   if (Color2_>255) Color2_=255;
		   m[Color2_+Color1_*256]++;
	  }

И выведем все это на изображение.
for(i=0;i<256;i++)
	  for(j=0;j<256;j++)
	  {
		   k=int((double)256*sqrt(sqrt((double)m[i*256+j]/max)));
		   if (k>255) k=255;
		   //if (m[i*256+j]>0) k = 255;
		   ptr2[i*Gray->widthStep+j]=k;
	  }



( Читать дальше )

Выделение цвета кожи человека

Прочитал статью «A Real-Time Face Tracker» (http://www-prima.inrialpes.fr/perso/Tran/Documents/Articles/Divers/RTFaceTracker.pdf).
Вообще статья посвящена трекингу лица, однако меня она заинтересовала по другой причине – в ней представлена модель описания цвета кожи. Поэтому я опишу смысл этой модели.

Основная идея в том, что человек адаптируется к яркости изображения, и для того, чтобы распознать необходимо отбросить информацию о яркости. Используется понятие «чистого» цвета (хроматический), описанного в работе [G. Wyszecki and W.S. Styles. Color Science: Concepts and Methods, Quantitative Data and Formulae, Second Edition, John Wiley & Sons, New York, 1982].

«Чистый» цвет получается следующим образом:
r = R / (R + G + B),
g = G / (R + G + B).
Синий цвет лишний, поскольку после нормализации r+g+b =1.

При этом в данной работе было показано, что при использовании «чистого» цвета было определено, что кожа людей даже разной национальности находится в очень небольшом диапазоне по сравнению с ненормализованным цветом.


( Читать дальше )