遥感图像每个通道的灰度值通常采用8bit存储,雷达影像则是用16bit进行存储。只有把16bit的灰度值(0-65535)转为8bit(0-255),才可以在屏幕上正常显示。直接映射对于灰度值在灰度范围内分布均匀图像的显示效果较好,但往往这样会使图像很暗,有时甚至分一片漆黑。借用了photoshop中的调整自动色阶的原理,将分布不均匀的图像色阶柱状图的两边切掉一些太黑或太白像素,可以显示较为清晰的图像,并使得对比度增强,图像明显由暗到亮。
/*uc_gray 8bit数据;us_gray 16bit数据;dCutRate两边切掉的像素占图像的百分比;nXSize,nYSize表示图像的行数和列数*/
void CImageObject::UShort2UChar(unsigned char *uc_gray, unsigned short * us_gray, double dCutRate, long nXSize, long nYSize)
{
//求有效色阶范围
int i;
short max, min, scan;
max = us_gray[0];
min = max;
for(i=0; i<nXSize * nYSize; i++)
{
if(us_gray[i] > max)
max = us_gray[i];
if(us_gray[i] < min)
min = us_gray[i];
}
scan = max - min;
//求色阶数组
unsigned sho