더북(TheBook)

[히스토그램 스트레칭]과 [히스토그램 균등화] 메뉴 항목이 [히스토그램] 팝업 메뉴 오른편에 나타나도록 편집하였지만, 이는 어디까지나 UI만 조금 달라졌을 뿐이며 메뉴 이벤트 처리기를 추가하는 방법은 동일하다. 표 6-17을 참조하여 CImageToolDoc 클래스에 두 개의 메뉴 이벤트 처리 함수를 추가하자.

표 6-17 [히스토그램 스트레칭], [히스토그램 균등화] 메뉴 이벤트 처리기 정보

명령 이름(ID)

처리 클래스

메시지 형식

처리기 이름

ID_HISTO_STRETCHING

CImageToolDoc

COMMAND

OnHistoStretching

ID_HISTO_EQUALIZATION

CImageToolDoc

COMMAND

OnHistoEqualization

OnHistogramStretchingOnHistogramEqualization 함수의 구현은 소스 6-23에 함께 나타내었다.

소스 6-23 [히스토그램 스트레칭]과 [히스토그램 균등화] 메뉴 이벤트 처리 함수(ImageTolDoc.cpp)
void CImageToolDoc::OnHistoStretching()
{
    CONVERT_DIB_TO_BYTEIMAGE(m_Dib, img)
    IppHistogramStretching(img);
    CONVERT_IMAGE_TO_DIB(img, dib)

    AfxPrintInfo(_T("[히스토그램 스트레칭] 입력 영상: %s"), GetTitle());
    AfxNewBitmap(dib);
}

void CImageToolDoc::OnHistoEqualization()
{
    CONVERT_DIB_TO_BYTEIMAGE(m_Dib, img)
    IppHistogramEqualization(img);
    CONVERT_IMAGE_TO_DIB(img, dib)

    AfxPrintInfo(_T("[히스토그램 균등화] 입력 영상: %s"), GetTitle());
    AfxNewBitmap(dib);
}

그림 6-40은 ImageTool 프로그램에서 실제로 [히스토그램 스트레칭]과 [히스토그램 균등화]를 수행한 결과 화면이다. 가장 왼쪽의 차일드 프레임 윈도우 영상이 입력 영상인 chaewon.bmp 파일이다. 그리고 가운데 영상은 히스토그램 스트레칭 결과이고, 오른쪽은 히스토그램 균등화 결과이다. 원본 영상이 다소 명암비가 낮아 탁해 보이는 반면 히스토그램 스트레칭과 히스토그램 균등화 수행 결과는 좀 더 명암비가 높아진 결과를 보여주는 것을 확인할 수 있다.

그림 6-40 ImageTool 프로그램에서 히스토그램 스트레칭과 히스토그램 균등화 실행 화면
Note | 프로젝트 출력 파일 지정

기본적으로 Visual Studio에서 MFC 응용 프로그램을 만들 때, 출력 파일의 이름은 프로젝트 이름을 그대로 따른다. 예를 들어 ImageTool 프로젝트의 출력 파일의 이름은 ImageTool.exe가 되는 것이 정상이다. 그러나 이 책에서는 각 장에서 만드는 출력 파일의 이름에 각 장의 번호를 매겨서 관리하려고 한다. 프로젝트 출력 파일 이름을 변경하려면 프로젝트 속성을 변경해야 한다. Visual Studio에서 [프로젝트] > [속성] 메뉴를 선택하여 ImageTool 속성 페이지 대화 상자를 띄우고, 그림 6-41과 같이 왼쪽의 트리 구조에서 [구성 속성] > [일반] 항목을 선택하자. 그리고 오른쪽 [대상 이름] 항목을 아래와 같이 변경하자.

• 변경 전: $(ProjectName)

• 변경 후: $(ProjectName)_ch06

이와 같이 변경하면 실제 생성되는 프로그램 이름은 ImageTool_ch06.exe로 결정된다. ch06에서 ch는 chapter를 의미하며, 06은 6장에서 만든 프로그램이라는 의미이다. 만약 Release 모드에서의 출력 파일 이름도 변경하고자 한다면 좌측 상단 구성 항목을 Debug에서 Release로 바꾸어 [대상 이름]을 동일하게 변경해야 한다.

그림 6-41 프로젝트 속성 중 출력 파일 이름 지정
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.