• 3~4행 getGrayHistImage() 함수의 인자로 전달된 hist 행렬이 256개의 빈으로 구성된 히스토그램 행렬인지 검사합니다.
• 6~7행 hist 행렬 원소의 최댓값을 histMax 변수에 저장합니다.
• 9행 흰색으로 초기화된 256×100 크기의 새 영상 imgHist를 생성합니다.
• 10~13행 for 반복문과 line() 함수를 이용하여 각각의 빈에 대한 히스토그램 그래프를 그립니다.
• 15행 hist 행렬로부터 구한 256×100 크기의 히스토그램 영상 imgHist를 반환합니다.
코드 5-8의 7행에서 hist 행렬 원소의 최댓값을 찾기 위해 minMaxLoc() 함수를 사용했습니다. 이때 hist 행렬의 최솟값은 관심이 없으므로 minMaxLoc() 함수의 두 번째 인자는 0으로 설정하였습니다. 히스토그램 행렬의 최댓값 histMax는 이후 12행에서 히스토그램 막대그래프를 그릴 때 사용합니다.
line(imgHist, Point(i, 100), Point(i, 100 - cvRound(hist.at<float>(i, 0)*100/histMax)), Scalar(0));
앞 코드에 의해 그려지는 히스토그램 막대그래프의 최대 길이는 100픽셀로 설정됩니다. 즉, 히스토그램 행렬의 최댓값 위치에서 100픽셀에 해당하는 검은색 직선을 그리고, 나머지 히스토그램 막대그래프는 100픽셀보다 짧은 길이의 직선으로 표현됩니다.