Portfolio[UWM] Techniki Multimedialne / PIRO

Moduł gradientu opisanego macierzą

Zadanie
Zaimplementować funkcję konwertującą wartość RGB na HSV

Czym jest HSV ? Ładnie przedstawia to Wikipedia

Struktura :
typedef struct HSV
{
	int H;
	int S;
	int V;
} HSV;

Funkcja :
HSV RGBtoHSV(Pix _Pix)
{
	HSV oHSV;
	oHSV.H = 0;
	oHSV.S = 0;
	oHSV.V = 0;
	int Min = min(_Pix.Blue,min(_Pix.Green,_Pix.Red));
	int Max = max(_Pix.Blue,max(_Pix.Green,_Pix.Red));
	if(Min == Max)
		oHSV.H = 0;
	else if(_Pix.Red == Max)
		oHSV.H = 0 + ( _Pix.Green - _Pix.Blue ) * 60 / ( Max - Min );
	else if(_Pix.Green == Max)
		oHSV.H = 120 + ( _Pix.Blue - _Pix.Red ) * 60 / ( Max - Min );
	else if(_Pix.Blue == Max)
		oHSV.H = 240 + ( _Pix.Red - _Pix.Green ) * 60 / ( Max - Min );

	if( oHSV.H < 0 )
		oHSV.H += 360;

	if( Max == 0 )
		oHSV.S = 0;
	else
		oHSV.S = ( Max - Min ) * 100 / Max;

	oHSV.V = ( 100 * Max ) / 255;
   return oHSV;
}

  • Administracja