定義圖像的灰度級直方圖的二階矩(方差)描述紋理複雜度:
其中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;