圖像紋理複雜度計算

定義圖像的灰度級直方圖的二階矩(方差)描述紋理複雜度:這裏寫圖片描述

其中z表示灰度,p(zi)爲相應的直方圖,其中L是不同灰度級的數量。m是z的均值:
這裏寫圖片描述

C++實現如下:

    cv::Mat img = cv::imread("test.bmp");
    int height = img.rows;
    int width = img.cols;
    double mean = 0.0;
    double variance = 0.0;
    int temp = 0;

    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            mean += img.at<cv::Vec3b>(y, x)[0];
        }
    }
    mean /= double(height*width);

    //variance(texture complexity紋理複雜度)
    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            temp = img.at<cv::Vec3b>(y, x)[0] - mean;
            variance += (temp*temp);
        }
    }
    variance /= double(height*width);
    variance = int(variance / 100);
    std::cout << "variance:" << variance;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章