[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를 사용하여 이미지를 불러와 히스토그램을 계산하고 시각화하는 간단한 예시를 보여줍니다. 히스토그램 분석을 통해 이미지의 밝기 분포 및 대비를 시각적으로 확인할 수 있습니다.

히스토그램 분석에 대한 자세한 내용은 아래 참고 문헌을 참고하시기 바랍니다.