void calHist(int imageDataMatGray[][MAX_IMAGE_WIDTH], int height, int width, int histData[], int len) { //初始化直方图数据数组 for(int i=0; i<len; i++) { histData[i] = 0; } //计算每个灰度等级像素的百分比并存储在直方图数据数组中 for(int i=0; i<height; i++) { for(int j=0; j<width; j++) { int grayLevel = imageDataMatGray[i][j] * len / 256; //计算像素灰度等级 histData[grayLevel]++; //对应灰度等级像素数量加1 } } //将像素数量转化为百分比(向上取整) for(int i=0; i<len; i++) { histData[i] = (histData[i] * 100 + height * width / 2) / (height * width); //向上取整 }

编写一个函数计算直方图数据并存储在一维数组中。系统将根据上述数据绘制相应的直方图。原理解释图像直方图描述的是图像各个灰度级的统计特性他表示图像每一灰度级与该灰度级出现频率的对应关系。图像的灰度区间为0255考虑len个灰度等级则任意像素灰度值Y所属的灰度等级为Y−1255len。据此可以统计各灰度等级像素的百分比本关卡百分比向上取整。从直方图分布可以大致推断图像的质量。比如:本关卡测试说明中的直方

原文地址: https://www.cveoy.top/t/topic/hj5Q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录