求助"图像灰度拉伸的算法问题"

kewiv kewiv 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
小弟用 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; //拉伸后的灰度
}
}


...全文

相关推荐

评论 11
收藏 已收藏
分享
返回顶部
kewiv
图形处理/算法 19,463 成员 50,678 内容