使用したライブラリ
Q.24. ガンマ補正
imori_gamma.jpgに対してガンマ補正(c=1, g=2.2)を実行せよ。
こういう処理はなじみがあります。簡単ですね。
int main()
{
PPM ppm("imori_gamma.pnm");
int width = ppm.Get_width();
int height = ppm.Get_height();
double c = 1., g = 2.2;
auto carib = [&](double v)
{
return pow(v / c, 1. / g);
};
PPM ppm2(width, height);
for(int j=0; j<height; j++)
for (int i = 0; i < width; i++)
{
ppm2(i,j,'r') = carib(ppm(i,j,'r')/255.)*255;
ppm2(i, j, 'g') = carib(ppm(i, j, 'g')/255.)*255;
ppm2(i, j, 'b') = carib(ppm(i, j, 'b')/255.)*255;
}
ppm2.Flush("out.ppm");
return 0;
}