그러면 이제 영상의 차이 연산을 수행하는 함수를 작성해보자. 함수의 이름은 IppDiff를 사용하기로 하고, IppEnhance.h 파일에 아래와 같이 함수 선언을 추가하자.
bool IppDiff(IppByteImage& img1, IppByteImage& img2, IppByteImage& img3);
IppDiff 함수도 IppByteImage 클래스의 참조형 인자 세 개를 갖는다. img1과 img2는 차이 연산의 입력 영상이며, img3은 차이 연산을 수행한 결과가 저장될 영상이다. IppDiff 함수의 구현은 소스 7-4에 나타내었다. IppDiff 함수의 for 루프에서는 C/C++ 문법 중 조건 연산자를 이용하여 절댓값을 계산하는 것을 볼 수 있다.
bool IppDiff(IppByteImage& img1, IppByteImage& img2, IppByteImage& img3) { int w = img1.GetWidth(); int h = img1.GetHeight(); if (w != img2.GetWidth() || h != img2.GetHeight()) return false; img3.CreateImage(w, h); int size = img3.GetSize(); BYTE* p1 = img1.GetPixels(); BYTE* p2 = img2.GetPixels(); BYTE* p3 = img3.GetPixels(); int diff; for (int i = 0; i < size; i++) { diff = p1[i] - p2[i]; p3[i] = static_cast<BYTE>((diff >= 0) ? diff : -diff); } return true; }