더북(TheBook)

9.4.2 상하 대칭

영상의 상하 대칭 변환은 영상의 위 아래를 서로 뒤바꾸는 변환이다. 영상의 상하 대칭 변환에서도 결과 영상의 크기는 입력 영상의 크기와 동일하다. 입력 영상의 좌표 (x, y)는 다음과 같은 수식의 형태로 결과 영상에서의 좌표 (x´, y´)에 매핑된다.

위 식에서 h는 입력 영상의 세로 크기를 나타낸다.

그림 9-28은 실제 영상에 대하여 상하 대칭 변환을 수행한 결과를 보여준다. 그림 9-28(a)는 입력 영상인 child.bmp 파일이고, 그림 9-28(b)는 상하 대칭 변환을 수행한 결과 영상이다. 그림 9-28(b)는 얼핏 보면 9.3절에서 배운 180° 회전 변환과 유사해 보이지만, 180° 회전 변환한 결과 영상과는 좌우 대칭의 상태임을 인지하기 바란다.

그림 9-28 영상의 상하 대칭 실행 결과 예
(a)
(b)

소스 9-14는 상하 대칭 변환을 구현한 IppFlip 함수의 전체 코드를 보여준다. 이 함수는 입력 영상 imgSrc에 대해 상하 대칭 변환을 수행한 결과를 imgDst에 저장한다. IppFlip 함수의 선언은 IppGeometry.h 파일에 여러분이 스스로 입력하기 바란다.

소스 9-14 상하 대칭 변환 구현 함수(IppGeometry.cpp)
void IppFlip(IppByteImage& imgSrc, IppByteImage& imgDst)
{
    int w = imgSrc.GetWidth();
    int h = imgSrc.GetHeight();

    imgDst.CreateImage(w, h);

    BYTE** pSrc = imgSrc.GetPixels2D();
    BYTE** pDst = imgDst.GetPixels2D();

    int i, j;
    for (j = 0; j < h; j++)
    for (i = 0; i < w; i++)
    {
        pDst[j][i] = pSrc[h - 1 - j][i];
    }
}
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.