더북(TheBook)

만약 norm_type 인자가 NORM_MINMAX인 경우에는 src 행렬의 최솟값이 alpha, 최댓값이 beta가 되도록 모든 원소 값 크기를 조절합니다. 많은 OpenCV 예제 코드에서 NORM_MINMAX 타입으로 normalize() 함수를 사용하고 있으며, 특히 실수로 구성된 행렬을 그레이스케일 영상 형태로 변환하고자 할 때 normalize() 함수를 사용하면 유용합니다.

예를 들어 -1에서 1 사이의 실수로 구성된 1×5 행렬을 0부터 255 사이의 정수 행렬로 변환하려면 다음과 같이 코드를 작성합니다.

Mat src = Mat_<float>({ 1, 5 }, { -1.f, -0.5f, 0.f, 0.5f, 1.f });
 
Mat dst;
normalize(src, dst, 0, 255, NORM_MINMAX, CV_8UC1);
 
cout << "src: " << src << endl;
cout << "dst: " << dst << endl;

앞 예제 코드는 주어진 행렬의 최솟값은 0, 최댓값은 255가 되도록 크기를 조정하고, 결과 행렬의 타입이 CV_8UC1이 되도록 변경합니다. src 행렬의 최솟값이 -1이고, 최댓값이 1이므로 -1부터 1까지의 범위가 0부터 255까지의 범위가 되도록 src 원소 값을 선형 변환합니다. 앞 코드의 실행 결과는 다음과 같습니다.

src: [-1, -0.5, 0, 0.5, 1]
dst: [  0,  64, 128, 191, 255]
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.