一个关于图像处理的问题
我编了一个跟踪二值化后的图像边缘的程序(采用8-邻域有非零即跟踪的方式)子程序(已在主函数前声明过)如下:
image指向待处理的图像;
buf_link指向标志指针,在主程序中初始化全0;
图像大小为:长=xsize,宽=ysize
(i,j)为当前开始跟踪的起始点.
选择的初始点是非0点.
其中,在主程序中给出了图像数据.
double **link(int i, int j, unsigned char **image, long **buf_link, short xsize, short ysize)
{
int k;
int l;
int i_inc=i+1;
int i_dec=i-1;
int j_inc=j+1;
int j_dec=j-1;
if(i==xsize-1) i_inc=xsize-1;
if(i==0) i_dec=0;
if(i==ysize-1) j_inc=ysize-1;
if(j==0) j_dec=0;
for(k=i_dec;k<=i_inc;k++)
{
for(l=j_dec;l<=j_inc;l++)
{
if(image[k][l] != 0 && buf_link[k][l]==0)
{
image[k][l] = 0;
buf_link[k][l]=1;
buf_link= link(k,l,image,buf_link,xsize,ysize);
}
}
}
return buf_link;
}
问题是:我可以将图像中的任何一条线跟踪出来,但不是从这条线上每个点开始都可以的.
出现的问题是可以成功编译,但如果一开始选的起始点不对(理论上应该是从哪个点开始都可以),就没有结果,但也不提示什么地方有错误.
我检查了是不是内存管理出问题了,但我把可能出问题的几个因素最后都排除了.
实在找不到是哪点问题了.
恳请赐教!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[此贴子已经被作者于2006-4-24 22:50:02编辑过]