[c++] 히스토그램 분석
히스토그램 분석을 위해 OpenCV 라이브러리를 사용할 수 있습니다. 아래는 OpenCV를 사용하여 이미지의 히스토그램을 분석하는 간단한 C++ 코드 예시입니다.
#include <opencv2/opencv.hpp>
int main() {
// 이미지 불러오기
cv::Mat image = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
// 히스토그램 계산
int histSize = 256;
float range[] = { 0, 256 };
const float* histRange = { range };
cv::Mat hist;
cv::calcHist(&image, 1, 0, cv::Mat(), hist, 1, &histSize, &histRange, true, false);
// 히스토그램 시각화
int hist_w = 512; int hist_h = 400;
int bin_w = cvRound( (double) hist_w/histSize );
cv::Mat histImage( hist_h, hist_w, CV_8UC1, cv::Scalar( 0, 0, 0) );
normalize(hist, hist, 0, histImage.rows, cv::NORM_MINMAX, -1, cv::Mat());
for (int i = 1; i < histSize; i++) {
line(histImage, cv::Point(bin_w*(i-1), hist_h - cvRound(hist.at<float>(i-1))),
cv::Point(bin_w*(i), hist_h - cvRound(hist.at<float>(i))),
cv::Scalar( 255, 0, 0), 2, 8, 0);
}
// 결과 출력
cv::imshow("Image", image);
cv::imshow("Histogram", histImage);
cv::waitKey();
return 0;
}
이 코드는 OpenCV를 사용하여 이미지를 불러와 히스토그램을 계산하고 시각화하는 간단한 예시를 보여줍니다. 히스토그램 분석을 통해 이미지의 밝기 분포 및 대비를 시각적으로 확인할 수 있습니다.
히스토그램 분석에 대한 자세한 내용은 아래 참고 문헌을 참고하시기 바랍니다.
- 참고 문헌:
- OpenCV Documentation: https://docs.opencv.org/master/
- Digital Image Processing by Gonzalez and Woods