求助"图像灰度拉伸的算法问题"
小弟用 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; //拉伸后的灰度
}
}
程序如下:
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; //拉伸后的灰度
}
}
...全文
相关推荐
MATLAB灰度图像拉伸
I=imread('chez.jpg'); J=rgb2gray(I); %输入图像转化为灰度图像 %如果输入的图像已经是灰度图像,则不需要此步骤 subplot(2,2,1),imshow(J) title('原始灰度图') subplot(2,2,2),imhist(J) title('原始灰度直方图') K=imadjust(J); %灰度拉伸,使用函数imadjust %K=imadjust(I,[low_in high_in],[low_out high_out]) subplot(2,2,3),imshow(K) title('灰度拉伸效果图') subplot(2,2,4),imhist(K) title('灰度拉伸后图像直方图')
对灰度图像进行非线性拉伸
这段程序是对灰度图像进行非线性拉伸,即讲灰度图像的灰度分段,分为三段,低灰度级,中灰度级,高灰度级,把三段灰度级进行灰度压缩,使得亮的地方更亮,暗的地方更暗,这样可以增加灰度的对比度,便于目标跟踪。
图像处理C语言(读入图像,直方图均衡化,灰度线性变化,灰度拉伸)
用C语言写的图像处理程序,包括读入8位图像,对图像进行直方图均衡化,灰度线性变化和灰度线性拉伸。
matlab 数字图像对比度拉伸算法
运用本函数,可以使图像的对比度拉伸,效果比直接使用imadjust,此函数是冈萨雷斯 数字图像处理 上面的
灰度拉伸算法
该算法主要是在图像处理过程中对图像灰度进行拉伸处理。


图形处理/算法
