登录论坛

查看完整版本 : [MATLAB图像处理] 轮廓提取逐行扫描的算法


chen_012
2009-05-14, 21:12
void lunkuotiqu()
{h=0;k=0;flagl:;flag2=1;
for(int i:0;i<m_pBIH->biHeight;i++)
{na :l;
for(int j=0;j<m_pBIH->biWidth;j++) //逐行从左扫描,找到左起第一个黑像素点

{p=pw+(SrcBufSize-LineBytes-i LineBytes)+j;
if(*P==0)
{flag3=0;
if(flagl= =1){h=i;flagl:0;{
a[i][0]=j;break;
}
{
if(flag3= =0)
for(int k=m_pB1H->biWidth-1;k>=O;k--) //逐行从右扫描,找到右起第一个黑像素点

{p=pw+(SrcBufSize-LineBytes-i*LineBytes)+k;
if(*p==O){a[i][1]=k;break;}
}
if(flag3==O)&&(h>0){k=i;nag2=O;}
if(flag2==0)break;
{
{

该段代码中主要变量的作用足:a[i][0]存放第i行左起
第一个黑像素点的纵坐标;n[i][1]存放第i行右起第一个黑
像素点的纵坐标; 用来标志逐行扫描出现的第一个黑像素点
所在的行标; 用来标志逐行扫描出现的最后一个黑像素点所
在的行标;flagl、flag2分别用来标志逐行扫描到的黑像素点是
否第一个黑像素点和最后一个黑像素点;flag3用来标志从左
扫描有无黑像素点出现,如果无就没有必要再从右扫描。

我是新手,哪位老师能帮我把上述程序写成matlab程序,万分感谢