더북(TheBook)

4.4.2 IppDib와 IppImage 클래스의 상호 변환 구현

IppDibIppImage 클래스 간의 상호 변환 기능을 제공하기 위해 일단 두 개의 새 파일을 추가해보자. Visual Studio에서 [프로젝트] > [새 항목 추가...] 메뉴를 선택하여 IppConvert.h 파일과 IppConvert.cpp 파일을 각각 추가하자. 그리고 IppConvert.h 파일에 소스 4-15과 같이 다섯 개의 변환 함수 선언을 추가하자.

소스 4-15 IppDib와 IppImage 클래스 상호 변환 함수 선언(IppConvert.h)
#pragma once

#include "IppImage.h"
#include "IppDib.h"

void IppDibToImage(IppDib& dib, IppByteImage& img);
void IppDibToImage(IppDib& dib, IppRgbImage& img);
void IppImageToDib(IppByteImage& img, IppDib& dib);
void IppImageToDib(IppFloatImage& img, IppDib& dib);
void IppImageToDib(IppRgbImage& img, IppDib& dib);

이름에서 알 수 있듯이 IppDibToImage 함수는 IppDib 클래스를 IppImage 클래스로 변환하고, IppImageToDib 함수는 IppImage 클래스를 IppDib 클래스로 변환한다. IppDibToImage 함수는 IppDib 타입을 IppByteImage 또는 IppRgbImage 타입의 영상으로 변환한다. IppDib 객체가 품고 있는 DIB 영상이 그레이스케일 영상이면 IppByteImage 타입을 사용하고, 트루컬러 영상이면 IppRgbImage 타입을 사용하면 된다. 반대로 IppImageToDib 함수는 IppImage 타입을 IppDib 타입으로 변환한다. IppImageToDib 함수는 원본 영상 타입으로 IppFloatImage 타입을 추가로 지원하도록 하였다. 이는 영상 처리 알고리즘 중에서 정밀한 연산을 수행할 필요가 있을 때, 결과 영상이 정수형이 아닌 실수형 영상으로 생성되는 경우가 있기 때문이다. 실수형 영상을 화면에 출력할 경우에도 DIB 형식으로 변환해야 한다.

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