6-种子填充算法_第1页
6-种子填充算法_第2页
6-种子填充算法_第3页
6-种子填充算法_第4页
6-种子填充算法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1区域的种子填充算法内容大纲1区域类型2简单种子填充算法思想3简单种子填充算法步骤4扫描线种子填充算法简介1区域类型四连通区域:从区内任一点出发,可通过四个方向到达区内任一像素。八连通区域:从区内任一点出发,可通过八个方向到达区内任一像素。边界定义区域:区域边界像素有特定颜色,区内像素不取这特定值,区外像素颜色不限。填充填充2简单种子填充算法思想已知四连通边界区域内一个像素坐标(种子像素),对其填充,如果其四邻域有在区域内的像素,填充后再对该像素的四邻域进行同样操作,直到区域内所有像素全部填充完毕为止

。这是一个递归过程。voidFull_DG(CDC*pDC,intx,inty,COLORREFColor){pDC->SetPixel(x,y,Color); //像素填色

if(pDC->GetPixel(x-1,y)!=Color)//左邻域pDC->SetPixel(x-1,y,Color),Full_DG(pDC,x-1,y,Color);if(pDC->GetPixel(x,y+1)!=Color)//上邻域pDC->SetPixel(x,y+1,Color),Full_DG(pDC,x,y+1,Color);if(pDC->GetPixel(x+1,y)!=Color)//右邻域pDC->SetPixel(x+1,y,Color),Full_DG(pDC,x+1,y,Color);if(pDC->GetPixel(x,y-1)!=Color)//下邻域pDC->SetPixel(x,y-1,Color),Full_DG(pDC,x,y-1,Color);}程序设计(填充为区域边界颜色)2简单种子填充算法思想2简单种子填充算法思想

2)当栈非空时,取出栈顶像素坐标;栈空时结束。3)检查出栈像素的左上右下4个相邻像素,如不在边界或未置区内颜色,将其坐标入栈并置色,重复2),3)。改进型的简单种子填充算法步骤:3简单种子填充算法步骤1)种子像素坐标入栈并置色。3简单种子填充算法步骤0123454321(3,2)(2,2)(3,3)(4,2)(3,1)(2,1)(4,1)(2,3)(1,2)入栈次数?

程序设计voidFull_JD(CDC*pDC,intxz,intyz,COLORREFInColor,COLORREFEdgeColor){intz[5000][2],top=0;//定义栈空间z[top][0]=xz,z[top][1]=yz; //种子像素坐标入栈pDC->SetPixel(xz,yz,InColor); //种子像素填色while(top>=0)//栈非空{xz=z[top][0],yz=z[top][1],top--;

//出栈像素坐标

if(pDC->GetPixel(xz-1,yz)!=InColor&&pDC->GetPixel(xz-1,yz)!=EdgeColor){pDC->SetPixel(xz-1,yz,InColor);top++,z[top][0]=xz-1,z[top][1]=yz;

}//左像素入栈

if(pDC->GetPixel(xz,yz+1)!=InColor&&pDC->GetPixel(xz,yz+1)!=EdgeColor){pDC->SetPixel(xz,yz+1,InColor);top++,z[top][0]=xz,z[top][1]=yz+1;}//上像素入栈

if(pDC->GetPixel(xz+1,yz)!=InColor&&pDC->GetPixel(xz+1,yz)!=EdgeColor){pDC->SetPixel(xz+1,yz,InColor);top++,z[top][0]=xz+1,z[top][1]=yz;

}//右像素入栈

if(pDC->GetPixel(xz,yz-1)!=InColor&&pDC->GetPixel(xz,yz-1)!=EdgeColor){pDC->SetPixel(xz,yz-1,InColor);top++,z[top][0]=xz,z[top][1]=yz-1;

}//下像素入栈

}}3简单种子填充算法步骤4扫描线种子填充算法简介

简单种子填充算法孤立地对单个像素进行测试,未考虑像素间的连贯性。如果一个像素在区域内,其左右像素也可能在区域内,直到遇到边界像素为止。所以在一连贯水平区段内只入栈一个像素点即可。4扫描线种子填充算法简介算法步骤:1)种子像素入栈。2)当栈非空时,栈顶像素出栈,否则结束。3)沿扫描线对出栈像素及左边和右边像素填充,直到遇到

左(记为XL)、右(记为XR)边界为止。4)在(XL,XR)区间内检查与当前扫描线相临的上下两条扫

描线是否为边界或已填充,如果不是,则将每一区间的

最右边的像素取作种子入栈。转到2)。4扫描线种子填充算法简介4扫描线种子填充算法简介【应用案例】交通标志的绘制禁止机动车调头的标志绘制两个圆并填充绘制禁止斜线标志绘制调头标志填充调头标志4扫描线种子填充算法简介【应用案例】奥运五环的绘制

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论