定义图像的灰度级直方图的二阶矩(方差)描述纹理复杂度:
其中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;

本文介绍了如何利用图像灰度级直方图的二阶矩(方差)来描述纹理复杂度,该方法通过计算均值m和不同灰度级z的分布来评估。提供了C++代码实现这一计算过程。
294





