《Java课程设计--连通问题.docx》由会员分享,可在线阅读,更多相关《Java课程设计--连通问题.docx(16页珍藏版)》请在优知文库上搜索。
1、第1章课题概述11.1 课题的目的11.2 课题的要求11.2 .1输入输出的要求11.3 .2程序实现的功能要求1第2章概要设计22.1 整个程序的模块结构及流程22.2 bmp图片信息分析22.3 连通的判断3第3章程序功能的实现53.1读取图片信息53.2判断连通7第4章调试及发现问题的解决H第5章程序测试及分析12第6章总结14参考文献15第1章课题概述本次数据结构课程设计的题目是设计并实现位深度为1的bmp图片的联通问题。1.1 课题的目的位深度为1的bmp图片是只有黑白两种颜色的图片,信息比较容易读取。连通:两个点距离如果小于2个像素,则认为这两个点连通。也就是说以一个点为中心的九
2、宫格中,围绕它的8个点与它都是连通的。这个课题的目的是分析给出的黑白bmp图片中所有独立连通的群体,输出每个连通群体的面积。所谓面积,就是它含有的像素的个数。1.2 课题的要求1.2.1 输入输出的要求(1)程序运行后应首先弹出一个窗口,窗口提供一个输入图片名称的输入框和确定按钮。(2)输入名称,点击确定后,弹出新的窗口,并在窗口中输出各个连通区域的面积,每一行输出一个。1.2.2 程序实现的功能要求(1) bmp图片的信息储存在图片中,需要用流来读取图片的信息,并加以处理,使程序可以适用于任何像素的bmp图片。(2)输入格式有错误要给出合适的提示。第2章概要设计2.1 整个程序的模块根据课题
3、要求,整个程序可大致分为三个模块,读取图片信息,处理图片信息,计算连通。此外,还具有窗口,及简短的说明提示等。程序各功能模块的划分,及主要流程如图2-1所示。图2-1整个程序模块2.2 bmp图片信息分析图像数据真正开始的位置。 位图的宽度,单位是像素。 位图的高度,单位是像素。偏移:10字节,长度4字节偏移:18字节,长度4字节偏移:22字节,长度4字节Windows规定图像文件中一个扫描行所占的字节数必须是4字节的倍数,不足的位均以0填充。因此在编写程序时要注意两点:(1)从图片中读取的数据为4个字节,且将其倒置后,才是图片的真正数据。(2)读取的图片像素的宽若不是4字节的倍数,补0后会产
4、生多余的数据,需要经过处理来跳过它们。2.3 连通的判断bmp图片中像素黑色为0,白色为U遍历数组,遇到某连通区域的第一个黑色的点时,改变其值为2,接着判断后面的像素周围是否存在黑色的像素,若存在,改变其值为除0,1之外最小的数,否则,将该像素的值改为3,依次递增Io当周围有两种或以上不同连通区域的像素时,例如2,3o将其值改为2后,要将二维数组中所有的3改为2。当遍历一次后,数出二维数组中除了0,1之外相同数字的个数,即连通区域的面积。例如题目中的tl.bmp:这张图的连通区域有9个,8个面积为1和一个面积为11。下面三张图片说明了改变像素值,并输出不同数字个数的过程。为了方便观察,用A来代
5、替10,B来代替11,依次类推。111111111111111111111111111111111111111111111111111IllllIllllIllll11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 0 1 0 0 0 1 10 1110 111111111111111111111111111111111111111111111111111111111TT 1 1 1 511111111111111111111111111111111111
6、111T111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111Illl111116 17 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111VH-1111111111111111111111111111111111111
7、11111111111111111111111111111111111111111111111111111111111111111111111111111111111图2.3.1改变某连通区域第一个像素值111111111111111111111111111111111111111IlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIllllIllllIllllIllll11111111111111111111111111121111111111111141111115IlllllIlllllIlllllIlllllIlllllIlllllI
8、lllll11111111111111111111111118111111111111111111111111111111111111111111111111111131111111111111111111161711111111111111111111191111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111IlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIllll
9、lIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllllIlllll图2.3.2像素周围有大于1的数的情况后面的像素与前面几个像素修改方法相同。111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
10、111111111111111111111111111111111111111111111111111111IllllIllllIllll11112Illll15111IllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIllllIlllIlllIlllIlll1141IlllIlllIlll1811IlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlll1311Illl1617IlllIlllIlllIlllIlllIlll1911IlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIlllIl