[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: 16 bits grayscale images



> Another popular choice is to walk the edges of an RGB cube in a loop.
> So you have a red -> magenta gradient, then magenta -> blue, then blue
> -> yellow etc. This makes for strong colour differences, but it's not
> obvious from looking at the image which parts are hot or cold. So I
> prefer heatmaps.

Yes I believe using the hue component of the HSV is equivalent to
walking the edge of the color cube.
I use the following snipped to convert transform values from 0.0-180.0
to the the RGB equivalent (obviously you can scale appropriately to
convert 8bpp images or as I do you can use this to translate to 24bit
true color on the fly. -eh
 --------- <snippet> ---------
/* hue ranges from 0.0 to 180.0 degrees */
void hsv2rgb( float hue, int *rgb )
{
	int p, sector;
	static const int sector_data[][3]=
		{{0,2,1}, {1,2,0}, {1,0,2}, {2,0,1}, {2,1,0}, {0,1,2}};

	hue = max( 0.0f, hue );
	hue = min( 180.0f, hue );
	hue *= 0.033333333333333333333333333333333f;
	sector = (cvFloor(hue))%6;
	p = cvRound(255*(hue - sector));
	p ^= sector & 1 ? 255 : 0;

	rgb[sector_data[sector][0]] = 255;
	rgb[sector_data[sector][1]] = 0;
	rgb[sector_data[sector][2]] = p;
}
 --------- </snippet> ---------


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]