Portfolio[UWM] Techniki Multimedialne / PIRO

Potęgowanie bitmapy

Zadanie
Zaimplementować funkcję potęgującą bitmapę

Obrazu wynikowym będzie z potęgowana bitmapa, mocno ściemnione, rozjaśniona itp

ma parametry funkcji:
  • _BitMap źródło obrazka,
  • _Power stała potęgowa,
BitMap power(BitMap _BitMap, float _Power)
{
	// utworzenie tablicy LUT
	// aby uniknąć niepotrzebnego liczenia.
	int oLUT[256], oTemp;
	for(int i = 0; i < 256; i++)
		oLUT[i] = ((oTemp = (int)(pow((float)(i/255.0), _Power)*255)) > 255) ? 255 : (oTemp < 0) ? 0 : oTemp;
	
	// utworzenie kopii bitmapy
	BitMap oNew = _BitMap; 
	oNew.Pixels = Clone(_BitMap);

	// proces przetwarzania 
	for(int y = 0; y < _BitMap.Height; y++)
		for(int x = 0; x < _BitMap.Width; x++)
		{
			Pix oPix = Get_PIX(x,y,_BitMap);
			oPix.Light = oLUT[oPix.Light];
			oPix.Red = oLUT[oPix.Red];
			oPix.Green = oLUT[oPix.Green];
			oPix.Blue = oLUT[oPix.Blue];
			Set_PIX(x,y,oPix,oNew);
		}
	return oNew;
}

  • Administracja