더북(TheBook)

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픽셀보다 짧은 길이의 직선으로 표현됩니다.

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