使用したライブラリ
Q.3. 二値化
画像を二値化せよ。 二値化とは、画像を黒と白の二値で表現する方法である。 ここでは、グレースケールにおいて閾値を128に設定し、下式で二値化する。
y = { 0 (if y < 128)
255 (else)
まだ簡単!
int main()
{
PPM ppm("imori.pnm");
int width = ppm.Get_width();
int height = ppm.Get_height();
PPM ppm2(width, height);
for(int j=0; j<height; j++)
for (int i = 0; i < width; i++)
{
int r = ppm(i, j, 'r');
int g = ppm(i, j, 'g');
int b = ppm(i, j, 'b');
int y = (std::round)(0.2126 * r + 0.7152 * g + 0.0722 * b);
y = (y < 128 ? 0 : 255);
ppm2(i, j, 'r') = y;
ppm2(i, j, 'g') = y;
ppm2(i, j, 'b') = y;
}
ppm2.Flush("out.ppm");
return 0;
}