遥感图像处理 | 利用GDAL绘制统计直方图
GDAL获取直方图的函数叫做GDALRasterBand::GetHistogram()。定义如下:
CPLErrGDALRasterBand::GetHistogram (
double dfMin,
double dfMax,
int nBuckets,
int * panHistogram,
int bIncludeOutOfRange,
int bApproxOK,
GDALProgressFunc pfnProgress,
void * pProgressData
)
关于绘制统计图的代码
Band band = ds.GetRasterBand(bandn);
double dfmin; double dfmax; double pdfMean; double pdfStdDev;
band.GetStatistics(1, 1, out dfmin, out dfmax, out pdfMean, out pdfStdDev);
int nBuckets = 512;//表示直方图统计的份数
int[] panHistogram = new int[512];//存储直方图的数组
int include_out_of_range = 0;//如果这个参数设置为TRUE,那么图像中的像元值小于最小值的像元值将被统计到直方图数组中的第一个里面去,图像中的像元值大于最大值的像元会被统计到直方图数组中的最后一个里面去。如果设置为FALSE,那么图像中的像元值小于最小值的像元不进行统计,同样,像元值超过最大值的像元值也不进行统计。
int approx_ok = 1;
Gdal.GDALProgressFuncDelegate callback = null;
string callback_data = null;
band.GetHistogram(dfmin, dfmax, nBuckets, panHistogram, include_out_of_range, approx_ok, callback, callback_data);
Graphics g = panel1.CreateGraphics();
g.Clear(Color.White);
drawhistogram(panHistogram, dfmax, dfmin);
根据已知的最大最小值和统计值的数组便可画出最后的统计直方图
转载自:https://blog.csdn.net/weixin_41340063/article/details/82942919