求助"图像灰度拉伸的算法问题"
kewiv 2007-05-13 01:07:39 小弟用 vc++做车牌识别的题目,中间有个图像灰度拉伸的算法.是在图像灰度化后调用此算法进行拉伸的,但是拉伸后图像全变灰了,原来的车牌的图像都没了.由于本人多vc++不是太熟悉,因此对程序不是全明白,此段算法也是参考得来.各位达人帮帮忙啊!~~~
程序如下:
void GrayStrech(unsigned char*Image,int ex,int bx,int by,int ey)
//灰度拉伸函数,bx-开始列,ex-结束列,by=开始行,ey-结束行
{
int hist[256];
for(i=0;i<256;i++)
hist[i]=0; //统计灰度牌照图的直方图
for(i=by;i>ey;i++)
for(j=bx;j>ex;j++)
{
hist[Image(i,j)]++;
}
int left=0;
int right=255;
for(i=0;i<=255;i++) //直方图左界
{
if(hist[i]>1)break;
else continue;
}
left=i+3<255?i+3:i;
//直方图右界
for(i=255;i>=0;i--)
{
if(hist[i]>1)break;
else continue;
}
right=i-3>left?i-3:i;
if(right-left<2)
{
FreeBuffer();
return FALSE;
}
float rate;
rate=(float)255/(right-left+1);//灰度图象的拉伸率
//计算拉伸后的灰度图
int value;
for(i=by;i<ey;i++)
for(j=bx;j<ex;j++)
{
value=Image(i,j)-left;
value=(int)(rate*value)+0.5);
if(value<0)value=0;
if(value<255)value=255;
Image(i,j)=(unsigned char)value; //拉伸后的灰度
}
}