规则图形的识别系统Word格式.docx
- 文档编号:17846206
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:15
- 大小:235.75KB
规则图形的识别系统Word格式.docx
《规则图形的识别系统Word格式.docx》由会员分享,可在线阅读,更多相关《规则图形的识别系统Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
Keywords:
geometricfigurerecognition;
pixel;
algorithm;
目录
1项目的开发背景1
2开发用到的理论1
2.1图形分析法1
2.2规则图形的构成2
2.3图像分析2
2.4规则图形的识别结果如图2:
5
3开发环境8
3.1系统调研与可行性分析8
3.2VisualC++6.0特点8
3.3MFC的简介8
4概要设计9
4.1系统总体结构9
4.2系统流程图9
5.1用户登录界面11
5.2系统管理主界面11
5.3各功能实现界面12
1项目的开发背景
计算机图形学是伴随着电子计算机及其外围设备而产生和发展起来的。
它是近代计算机科学与CAD、电视及图像处理技术的发展汇合而产生的硕果。
在造船、航空航天、汽车、电子、机械、土建工程、影视广告、地理信息、轻纺化工等领域中的广泛应用,推动了这门学科的不断发展,而不断解决应用中提出的各类新课题,又进一步充实和丰富了这门学科的内容。
目前几乎所有的计算机的实际应用都不同程度地使用了图形技术。
所以计算机图形技术同计算机网络,人工智能及图像处理等技术一样是目前计算机领域的研究热点之一。
计算机辅助教学(ComputerAidedInstruction)是利用计算机图形学技术展示抽象原理好、或不可见过程的一种新的教学方法在多媒体教室,教师使用集图、文、声、像为一体的多媒体课件,形象、生动地进行教学,有组于学生理解和接受深奥枯燥的理论。
同时在网络化学习(E-Learning)时代,网络多媒体课件使得受教育者不必进入传统的课堂也能接受到优质的培训,分享全世界范围内的优质教育资源。
加强学习理解计算机图形学究显得非常重要啦。
计算机图形基本元素识别系统就是针对学生理解和学习的好工具。
内容包括图形基本元素的算法实现和插入简单图片的识别有哪些基本元素构成。
2开发用到的理论
2.1图形分析法
在几何学科中,根据问题的条件和结论,分析并找到组成这个几何问题的一个或若干个基本图形,再应用这些基本图形的性质,使问题得到解决的几何分析方法,就是基本图形分析法。
图形,是几何学科的研究对象,平面图形,是平面几何的研究对象。
所以任何离开对图形、图形性质的研究的分析方法,要揭示几何问题思考方法、分析方法的规律性都是十分困难的。
一道几何问题,都会以一个图形以及这个图形所具有的各种性质为研究对象。
而出现在几何问题中的每一个几何图形,无论是怎样的简单还是怎样的复杂,经过观察和分析,都一定可以发现这样一个事实;
即它是由一个或者若干个最简单、最基本也是最重要的图形组合而成的。
基本图形分析法,就是一种建立在对图形和图形的性质的认识、分析、应用基础上的思考方法和分析方法。
任何一个几何图形,都是由一个或若干个基本图形组合而成的,当若干个基本图形组合而成为一个几何问题的时候,许多图形的性质就隐去了,所以几何问题的分析和思考过程实质上就是要将这一综合过程逆过来进行,也就是要剖析并找到这些基本图形,并应用这些基本图形的性质,使问题得到解决,基本图形分析法就是在这样的基础上诞生的。
在几何问题的分析中,组成一个几何问题的图形的最简单、最重要、最基本的,但又是具有特定的性质,能明确地阐明应用条件和应用方法的图形,称为基本图形。
在对数以千计的几何问题进行图形剖析后,就会发现几何学科中的基本图形的数量并不很多,但就是这些数量不多的基本图形却演绎出一部能显现无穷变化的平面几何学。
对这数量不多的基本图形再进行分类,就可以分成:
平行线、等腰三角形、与圆有关的角、全等三角形、相似三角形、特殊角三角形、与面积方法有关的三角形等七个部分。
基本图形分析法的独创之处,就在于详尽地、完整地介绍、剖析了每一个几何问题的思维过程,全面地介绍了每一个几何问题是怎样一步一步想出来的,基本图形也是随着分析过程的进行逐个逐个发现出来的,辅助线也是随着分析过程的进行、基本图形的发现而一条一条添出来的。
2.2规则图形的构成
图形通常由点、线、面、体等几何元素和灰度、色彩、线型、线宽等非几何属性组成。
从处理技术看,图形主要分为两类:
一类基于线条信息表示,如工程图、曲面的线框图等;
另一类是明暗图,也就是通常所说的真实感图形。
计算机图形学的一个主要目的就是要利用计算机产生令人赏心悦目的真实感图形。
事实上,图形学也把可用于表示几何场景的曲线曲面造型技术和实体造型技术做为其主要的研究内容。
本文所论述的规则几何图形图像的识别,不仅要识别出图像中的几何图形,还要对所识别出的几何图形中的像素进行分析和理解。
2.3图像分析
一般来说从客观景物得到的图像是二维的,可以用一个二维数组f(x,y)来表示,这里x与y表示二维空间中一个坐标点的位置,而f(x,y)则代表图像在点(x,y)的某种性质的数值[1]。
为了能用计算机对图像进行加工,需要把连续的图像在坐标空间(x,y)和性质空间F都离散化,这种离散化的图像是数字图像,可以用I(x,c)来表示。
I(x,c)代表离散后的f(x,y),为了方便,我们仍用f(x,y)代表数字图像,图像中每个基本单元叫做图像元素,简称像素[2,3]。
一幅图像必须在空间和灰度上都离散化才能被计算机处理。
空间坐标的离散化叫做空间采样,而灰度的离散化叫做灰度量化。
假设用一个m@n数组中等距的采样来近似表示一幅连续图像f(x,y),即:
f(x,y)=
f(0,0)f(0,1)f(0,2),f(0,m-1)
f(1,0)f(1,1)f(1,2),f(1,m-1)
sssss
f(n-1,0)f(n-1,1)f(n-1,2),f(n-1,m-1)
其中每个元素是一个离散变量,上式的右边代表的是数字图像,数组的每个元素即对应像素。
1.2图像处理分析一个基本的图像处理分析系统如图1所示。
图像分析主要是对图像中感兴趣的目标进行检测和测量,以获得他们的客观信息,从而建立对图像的描述。
如果说图像处理是从一个图像到一个图像的过程,则图像分析是一个图像到数据的过程。
这里数据可以是针对目标特定检测的结果或是基于测量的符号的表示[3~5],它们描述了图像中目标的特点和性质。
图像处理和分析一般是用算法的形式描述,也就是用程序和软件。
图形的识别就是将采集的图像(图形)数字化,再进行各种加工、提取特征,最后分类。
lpNewDIBBits[*iWlidth+j]=0;
nw=lpDIBBits[(i-1)*Wlidth+j-
1];
n=lpDIBBits[(i-1)*Wlidth+j];
ne=lpDIBBits[(i-1)*Wlidth+j+1];
w=lpDIBBits[*iWlidth+j-1];
e=lpDIBBits[*iWlidth+j+1];
sw=lpDIBBits[(i+1)*Wlidth+j-1];
s=lpDIBBits[(i+1)*Wlidth+j];
se=lpDIBBits[(i+1)*Wlidth+j+1];
if(nw+n+ne+w+e+sw+s+se==0)
lpNewDIBBits[i*Wlidth+j]=(un-
signedchar)255;
}
}
for(i=2;
i<
Hleight-2;
i++)
{
for(j=2;
j<
Wlidth-2;
j++)
{
if(lpDIBBits[*iWlidth+j]==0)
lArea++;
if(lpNewDIBBits[*iWlidth+j]==0)
lLength++;
dRatio=(double)(lLength*lLength)/lArea;
LocalUnlock(hNewDIBBits);
LocalFree(hNewDIBBits);
if((dRatio>
28.5)&
&
(dRatio<
32))
lType=3;
//str.Format(/三角形!
\n面积=%d,周长=%d0,
lArea,lLength);
//AfxMessageBox(str);
elseif((dRatio>
14)&
(dRatio<
16))
lType=4;
//str.Format(/四边形!
22.5)&
24))
lType=5;
//str.Format(/五边形!
}elseif((dRatio>
19)&
22))
lType=6;
//str.Format(/六边形!
35)&
100))
lType=7;
//str.Format(/圆形或未知图形!
\n面积=%d,周
长=%d0,lArea,lLength);
else
lType=0;
//str.Format(/未知图形!
\n面积=%d,周长=%
d0,lArea,lLength);
returnTRUE;
通过以上几个典型的例子可得出以下结论:
此图形的算法能够识别出简单的规则几何图形而且计算迅
速,能够准确的识别出图形的面积和周长并且能够快速的识别出是那种图形。
但是此算法也存在缺点:
它的
识别对象是几种简单的规则几何图形,无法识别复杂的几何图形。
规则图形的识别
对于规则图形的识别,可先利用边缘提取算法进行边缘提取,用边缘跟踪算法判断图形的连通性,然后将图形进行阈值分割成为二值图像,使几何图形的内部不存在洞或孔,使之成为实心图形。
此实心图形的边缘轮廓几乎包含了该物体几何形状的所有信息。
因为这里考虑的是规则图形的识别,在规则图形中其周长与面积有固定的比例关系,采用比例公式l2/s,其中l为周长,即为实心图形的周边像素和,S为图形面积,即为
实心图形包含的所有像素之和,并结合不变矩的图形识别算法,可判断出图形的形状。
在算法中数值化的二值图像用坐标(x,y)表示像素点的位置,值0表示空白像素点,值为1表示图像经过的像素点,在实际的识别过程中像素点是一个灰度值,通过灰度值判别是否为像素点.对于每个像素点利用八邻域的方法进行跟踪。
当进行完判断以后,其为8位位图而且为BMP格式时,再进行图形的识别工作,基于像素周长与面积的比率的图形辨别算法为[6]:
(1)从上到下,从左到右,对读入的二值图像进行逐点扫描,当遇到访问的黑色像素点时其可能是边缘点也可能是图形内部的点,需要对其8个邻域进行识别,同时记录下访问的像素点。
(2)在第一步的基础上如果其遇到的黑色像素点不是边缘点,则其一定是图形内部的点,则记录其所有的内部黑色像素点,其所有黑色像素点个数即为其面积。
据
(1)、
(2)所求的图形的周长与面积的比值,确定其为何种规则图形。
根据以上相关的算法,我们很容易得到一个8位位图边缘的像素点和整体部分像素点的个数总和,根据它们像素点的比值,结合不变矩识别方法可以很容易的确定其为那种图形。
图形识别过程:
采集图像y图像分析:
找出边缘点同时记录下像素坐标y求图像面积:
所有内部点的个数y求周长:
图像所有边缘点的个数y求周长与面积的比值确定属于哪种图形。
识别算法实现源码:
BOOLWINAPIDistinguish(LPSTRlpDIBBits,LONG
Wlidth,LONGHleigh,t
LONG&
lType,
LONG&
lArea,LONG
lLength)
//lpDIBBits为指向输入图像数据区的指针
//指向缓存图像数据区的指针
LPSTRlpNewDIBBits;
HLOCALhNewDIBBits;
//8领域轮廓提取时的中间变量
unsignedcharn,e,s,w,ne,se,nw,sw;
//循环变量
LONG;
i
j
//比率
doubledRatio=0;
//CStringstr;
//中间变量
unsignedcharpixe;
l
hNewDIBBits=LocalAlloc(LHND,Wlidth*
Hleight);
if(hNewDIBBits==NULL)
returnFALSE;
lpNewDIBBits=(char*)LocalLock(hNewDIB-
Bits);
memset(lpNewDIBBits,255,Wlidth*Hleight);
//每行
for(i=1;
i<
Hleight-1;
//每列
for(j=1;
j<
Wlidth-1;
pixel=lpDIBBits[*iWlidth+j];
//如果中心点为黑,且其8领域也为0,则
该中心点可置为白色
if(pixel==0)
113第4期李海军,宁玉富,郭长友:
规则几何图形的识别分析与算法实现2图形识别方法在这里采用基于不变矩的图形识别方法。
设一幅图像为f(x,y),其中(x,y)表示象素点的位置,f表示该点的灰度级.则其矩可由下式表述[6,7]:
Mpq=Q
+]
-]Q
-]
xpyqyf(x,y)dxdy,p,q=0,1,2,,
物体形心可表述为某些矩的函数
x=m10m00,y=m01m00
物体形心可用于中心矩的定义:
Lpq=Q
(x-x)qf(x,y)dxdy,p,q=0,1,2,,
对于离散图像,矩可按下式计算:
mpq=EiEjipjqf(i,j)
Lpq=EiEj(i-x)p(j-y)q
对于二值图像,当(i,j)为物体内部点时,f(i,j)=1,对其它点f(i,j)=0.矩m00表示该二值图像中物体的面积。
中心矩可以组合成一系列不变特征量,称之为不变特征矩。
如下式中的U1、,、U7由二阶与三阶中心矩经代数运算组合而成:
U1=L20+L02,U2=(L20-L02)2+4L211,U3=(L30-3L12)2+(3L21-L03)2,U4=(L30+L12)2+(L21
+L03)2,U5=(L30-3L12)(L30+L12)[(L30+L12)2-3(L21+L03)2]+(3L21-L03)(L21+L03)[3(L12+L30)2
-(L21+L03)2],U6=(L20-L02)[(L30+L12)2-(L21+L03)2]+4L11(L30+L12)(L21+L03),U7=(3L21
-L03)(L30+L12)[(L30+L12)2-3(L21+L03)2]-(L30-L12)(L21+L03)[3(L30+L12)2-(L21+L03)2]
可证这些特征矩具有旋转、平移、大小不变性,由它们组成的特征量标识物体,可达到识别与分类的目的。
3开发环境
3.1系统调研与可行性分析
基于VC课程的学生信息管理系统的设计与开发,主要是利用VisualC++6.0
本系统的设计主要从以下几方面做起:
系统的开发环境、系统需求分析、系统的页面设计等。
做这些工作需了解VisualC++6.0的使用和图形的基本组成元素相关知识。
(1)技术可行性:
本系统主要是用VisualC++6.0作为网站的开发工具。
虽然本次开发使用的工具和技术是目前比较旧的,但是微软出的产品最大的好处就是快速入门、益于上手,所以从这方面来看,技术上是可行的。
(2)经济可行性:
现在各大教育单位有了自己的管理系统,这样就需要在管理中提供一个简单易操作可行性高的系统,也就是本项目所要开发的管理系统。
并且开发一个小型的管理系统的成本也不高,是完全可以承受的。
从这一方面来看,经济上是可行的。
3.2VisualC++6.0特点
VisualC++6.0是功能最为强大的可视化开发工具之一,它不仅支持传统的软件开发方法,更重要的是它能支持面向对象、可视化的开发风格。
因此VisualC++6.0又称作是一个集成开发工具,它提供了软件代码自动生成和可视化的资源编辑功能。
VisualC++具有多种优点:
它提供了面向对象的应用程序框架MFC(MicrosoftFoundationClass),简化了程序员的编程工作,提高了模块的可重用性;
提供了基于CASE技术的可视化软件的自动生成和维护工具AppWizard、ClassWizard、VisualStudio、WizardBar等,实现了直观、可视的程序设计风格,方便地编辑和管理各种类,维护程序的源代码;
封装了Windows的API函数、USER、KERNEL、GDI函数,简化了编程时创建、维护窗口的许多复杂的工作。
3.3MFC的简介
MFC的英文全称是MicrosoftFoundationClassLibrary,MFC中的各种类结合起来构成了一个应用程序框架,它的目的就是让程序员在此基础上来建立Windows下的应用程序,这是一种相对SDK来说更为简单的方法。
因为总体上,MFC框架定义了应用程序的轮廓,并提供了用户接口的标准实现方法,程序员所要做的就是通过预定义的接口把具体应用程序特有的东西填入这个轮廓。
MicrosoftVisualC++提供了相应的工具来完成这个工作:
AppWizard可以用来生成初步的框架文件(代码和资源等);
资源编辑器用于帮助直观地设计用户接口;
ClassWizard用来协助添加代码到框架文件;
最后,编译,则通过类库实现了应用程序特定的逻辑。
4概要设计
在正式设计程序之前,先要作一个概要设计,概要设计目的主要是为程序系统的设计考虑,包括程序系统的总体结构,整个系统的流程,模块划分、功能分配等,为系统的详细设计、程序的具体实现打好基础。
本章将主要介绍概要设计说明书。
4.1系统总体结构
本论坛系统共划分为五个模块,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 规则 图形 识别 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)