函数名称 : ReadDIBFile
参数 : HANDLE hFile —— 要读取的文件hFile
返回值 : HDIB —— 成功返回DIB的句柄,否则返回NULL
说明 : 该函数拷贝指定的内存区域,返回复制后的新内存区域,出错时返回NULL
函数名称 : PixelOffset
参数 : int i,j
WORD wBytePerLine —— 图像每行的字节数
返回值 : long —— 图像像素数据的偏移
说明 : 该函数计算图像像素数据的偏移
函数名称 : GetHeight
参数 : 无
返回值 : long —— 图片高度
说明 : 该函数返回图像的高度
函数名称 : GetBitBitCount
参数 : 无
返回值 : int —— 图片字节数
说明 : 该函数返回图片字节数
第辣章 测试
测试是为了找出程序的错误。正如测试的规则所确定的一样:测试是为了发现程序中的错误而执行程序的过程;好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;成功的测试是发现了迄今为止尚未发现的错误的测试。
第一节 测试的原则
1、应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。
2、测试用例应由测试输入数据和与之对应的预期输出结果两部分组成。 3、程序员应避免检查自己的程序。(注意不是指对程序的调试)
4、在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题异变的输入条件。
5、充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中以发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。
6、严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的组装方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。
7、应当对每一个测试结果做全面的检查。
8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为文护提供方便。
知道了测试的目的和测试的原则之后,现在进行软件的具体测试,对软件的功能实现进行详细的测试。
第二节 测试方案
本系统主要由图像处理、人脸定位、特征提取、识别四个部分组成,而图像处理对于后面的工作结果好坏起着至关重要的作用,因此从软件开发的最初阶段我们就要对软件进行不断的测试,对图像处理模块中的各个子模块进行测试以便检测经过处理后的图像效果是否达到预期的效果。下面对图像处理模块的测试过程进行描述:
图像处理模块 :该 模块分为光线补偿、图像变成灰色、均衡直方图、实现图像对比度增强、二值化处理。对该模块进行测试的方法是:采用多张24位的彩色图像来进行逐一测试,看这些图片经过处理后是否达到预期的效果,如光线补偿模块,则检测所测图片的亮度是否变强;图像灰度化模块的检测则需看所测的彩色图片是否变成灰色;高斯平滑的实现采用了模板操作,因此模板参数的选择对其十分重要,先用图片进行测试来检测平滑效果,如果效果不理想则继续选择模板参数,直至效果理想为止;图像对比度增强是为了将图像的特征一步一步显现出来,在测试的过程中,用含人脸的图片进行检测看是否图像的特征显示出来的是否足够明显。
经过测试之后,光线补偿模块将图像的像素亮度增强,并使图片中的光线达到平衡;图像灰度化模块达到了预期的效果,将图片转变为灰色;高斯平滑模块能有效的消除图像噪音,提高了图像质量;而增强图像对比度模块能够较好的把图像特征表现出来。
结束语
一 应用程序特点
1、人脸识别应用程序采用Visual C++6.0作为开发工具,利用MFC采用面向对象的方法,用C++语言编写程序。
2、应用程序的的各个类具有相同的编程模式,且都是一次性制作的,代码简洁,编程效率高。
3、将面向对象的编程技术直接应用于图像处理知识,并按功能进行细化,建立通用的类,从而减少了繁琐性,增加代码的可重用性和可移植性,提高了效率。
4、本设计中建立的多层次类结构都是可以修改和文护的。所有的类都是开放的,可以向其中添加新方法以支持新功能,而不会对原有功能构成任何威胁。
5、使用操作界面友好,提示信息清晰,用户操作简便。可以用菜单、对话框选择不同的处理算法。
<< 上一页 [11] [12] [13] [14] [15] 下一页