- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验四 区域填充算法的实现
班级 08信计二 学号 64 姓名 刘辉 分数
一、实验目的和要求:
理解区域的表示和类型;
能够正确区分四连通、八连通的区域;
了解填充函数、区域填充的实现原理;
了解掌握区域填充的各种算法(种子填充算法、扫描线算法、边填充算法等),并实现种子填充算法和扫描线算法;
用种子填充算法实现四连同区域和八连通区域的填充,并观察他们之间的区别;
分析对比种子填充算法和扫描线算法实现的像素逼近效果和程序执行速度;
二、实验原理:
用点阵方法表示的多边形区域,如果其内部像素具有同一种颜色,而边界像素具有另一种颜色,可以使用种子填充算法和扫描线算法等填充。
种子填充算法是从区域内任一个种子像素位置(x,y)开始,由内向外将填充色扩散到整个多边形区域的填充过程;扫描线填充算法是当给定种子点(x,y)时,首先填充种子点所在扫描线上位于给定区域的一个区段,然后确定与这一段相连通的上、下两条扫描线上位于给定区域内的区段,并依次保存下来的过程。
三、实验内容及步骤:
3.1、实验内容:
利用种子算法实现内点表示的四连通区域的填充。如:设(x,y)为内点表示的四连通区域内的一点,oldcolor为区域的原色,要将整个区域填充为新的颜色newcolor;
利用扫描线算法实现以上区域的填充。如:填充以下图案,圆中填充蓝色,三角形中填充红色;
3.2、实验步骤:
种子填充算法的步骤:
种子入栈;
当栈非空时,进行下面的操作,否则结束;
栈顶元素出栈,如果是未填充的内部点,则将其填充,继续考察与其连通的点,若是为填充的内部点,则该点入栈,返回2步。
扫描线填充算法的步骤:
初始化,置栈为空,将种子点(x,y)入栈。
出栈,若栈空则结束;否则取栈顶元素(x,y),以y作为扫描线。
填充并确定种子点所在区段,从种子点(x,y)出发,沿当前扫描线向左、右两个方向填充,直到边界。
确定新的种子点,在以上确定的边界中检查与当前扫描线y上、下相邻的两条扫描线上的像素。若存在非边界、未填充的像素,则把每一区间的最右像素作为种子点压入堆栈,返回2步。
四、程序代码
(1)、内点表示的四连通区域的种子递归填充算法(基于TurboC):
#includegraphics.h
void floodfill4(int x,int y,int oldcolor,int newcolor)
{
if(getpixel(x,y)==oldcolor)
{
putpixel(x,y,newcolor);
delay(2000);
floodfill4(x,y+1,oldcolor,newcolor);
floodfill4(x,y-1,oldcolor,newcolor);
floodfill4(x-1,y,oldcolor,newcolor);
floodfill4(x+1,y,oldcolor,newcolor);
}
}
main()
{
int a,b,c,d,i,j;
int graphdriver=DETECT;
int graphmode=0;
initgraph(graphdriver,graphmode, );
cleardevice();
setcolor(14);
rectangle(250,250,300,300);
for(i=251;i300;i++)
for(j=251;j300;j++)
{
putpixel(i,j,4);
delay(1000);
}
a=257;
b=270;
c=4;
d=2;
floodfill4(a,b,c,d);
getch();
closegraph();
}
(2)、内点表示的八连通区域的种子递归填充算法的调用函数:
void floodfill8(int x,int y,int oldcolor,int newcolor)
{
if(getpixel(x,y)==oldcolor)
{
putpixel(x,y,newcolor);
delay(2000);
floodfill8(x,y+1,oldcolor,newcolor);
floodfill8(x,y-1,oldcolor,newcolor);
floodfill8(x-1,y,oldcolor,newcolor);
floodfill8(x+1,y,oldcolor,newcolor);
floodfill8(x+1,y+1,oldcolor,newcolor);
floodfill8(x+1,y-1,oldcolor
您可能关注的文档
- 毕业答辩--LDPE气象本体聚合.ppt
- 毕业答辩--传感器原理与应用.ppt
- 毕业答辩--短链全氟磺酸(CnF2n +1SO3H,n=4~8)UV—VIS光谱的TD—DFT计算.ppt
- 毕业答辩--工业氯化铵含量的测定.ppt
- 毕业答辩--谷朊粉水解物螯合锌的制备工艺研究.ppt
- 毕业答辩--化工分离过程.ppt
- 基于因子分析法钢铁业上市公司财务分析.doc
- 基于因子和聚类分析山东各市物流发展水平评价(修改稿).doc
- 基于域多层结构P2P应用层多播协议模型RLP2P.pdf
- 基于暂态电压稳定指标动态无功优化配置方法.pdf
- 2022-2023学年江苏省常州市溧阳市四年级下学期期中数学真题及答案.pdf
- 2022-2023学年江苏盐城建湖县五年级上册语文期末试卷及答案.pdf
- 2021-2022学年河南省卫辉市人教版三年级上册期末考试数学试卷及答案.pdf
- 2022-2023学年浙江杭州萧山区五年级下册语文期中试卷及答案.pdf
- 2022-2023学年江苏省淮安市二年级下学期数学月考试题及答案.pdf
- 2021年山西公务员申论考试真题及答案-乡镇.pdf
- 2021年普通话考试内容题库最新版.pdf
- 2021-2022年江苏苏州太仓市六年级上册期中语文试卷及答案(部编版).pdf
- 2022-2023学年山东省滨州市博兴县四年级下学期期末数学真题及答案.pdf
- 2021年四川内江小升初语文真题及答案.pdf
文档评论(0)