【화상 처리 100개 노크에 도전】Q.3. 2치화

5293 단어 C++이미지 처리

사용한 라이브러리



【화상 처리 100개 노크】 독자적인 화상 입출력 클래스를 만든다

Q.3. 이진화



이미지를 이진화하라. 2진화란, 화상을 흑백의 2치로 표현하는 방법이다. 여기서, 그레이 스케일에서 임계 값을 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;
}

좋은 웹페이지 즐겨찾기