더북(TheBook)
소스 8-7 [평균 값 필터], [가중 평균 값 필터], [가우시안 필터] 메뉴 항목들에 대한 이벤트 처리 함수(ImageToolDoc.cpp)
#include "IppImage\IppFilter.h"
#include "GaussianDlg.h"


void CImageToolDoc::OnFilterMean()
{
    CONVERT_DIB_TO_BYTEIMAGE(m_Dib, imgSrc)
    IppByteImage imgDst;
    IppFilterMean(imgSrc, imgDst);
    CONVERT_IMAGE_TO_DIB(imgDst, dib)

    AfxPrintInfo(_T("[평균 값 필터] 입력 영상: %s"), GetTitle());
    AfxNewBitmap(dib);
}

void CImageToolDoc::OnFilterWeightedMean()
{
    CONVERT_DIB_TO_BYTEIMAGE(m_Dib, imgSrc)
    IppByteImage imgDst;
    IppFilterWeightedMean(imgSrc, imgDst);
    CONVERT_IMAGE_TO_DIB(imgDst, dib)

    AfxPrintInfo(_T("[가중 평균 값 필터] 입력 영상: %s"), GetTitle());
    AfxNewBitmap(dib);
}

void CImageToolDoc::OnFilterGaussian()
{
    CGaussianDlg dlg;
    if (dlg.DoModal() == IDOK)
    {
        CONVERT_DIB_TO_BYTEIMAGE(m_Dib, imgSrc)
        IppFloatImage imgDst;
        IppFilterGaussian(imgSrc, imgDst, dlg.m_fSigma);
        CONVERT_IMAGE_TO_DIB(imgDst, dib)

        AfxPrintInfo(_T("[가우시안 필터] 입력 영상: %s, Sigma: %4.2f"), GetTitle(), dlg.m_fSigma);
        AfxNewBitmap(dib);
    }
}

소스 8-7의 OnFilterMean, OnFilterWeightedMean, OnFilterGaussian 이벤트 처리 함수들에서는 각각 IppFilterMean, IppFilterWeightedMean, IppFilterGaussian 함수를 호출하여 영상을 부드럽게 만들고, 필터링 결과 영상은 AfxNewImage 함수를 이용하여 새 창으로 나타난다. OnFilterGaussian 함수에서는 가우시안 필터 대화 상자를 띄워서, 사용자로부터 표준 편차 값을 입력받아 필터링을 수행한다. ImageToolDoc.cpp 파일의 상단에는 필터링 관련 함수들을 호출하기 한 IppFilter.h 파일과 가우시안 필터 대화 상자 사용을 위한 GaussianDLG.h 파일을 각각 포함(#include)하였다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.