1、摘 要人脸辨认技术(FRT)是当今模式辨认和人工智能领域一种重要研究方向。虽然人脸辨认研究已有很长历史,各种人脸辨认技术也诸多,但由于人脸属于复杂模式并且容易受表情、肤色和衣着影响, 当前还没有一种人脸辨认技术是公认迅速有效本文重要讨论了人脸辨认技术某些惯用办法,对既有人脸检测与定位、人脸特性提取、人脸辨认办法进行分析和讨论,最后对人脸辨认将来发展和应用做了展望。核心字:人脸辨认,特性定位,特性提取ABSTRACTNowadays the face recognition technology (FRT) is a hot issue in the field of pattern recog
2、nition and artificial intelligenceAlthough this research already has a long history and many different recognition methods are proposed,there is still no effective method with low cost an d high precisionHuman face is a complex pattern an d is easily affected by the expression,complexion and clothes
3、In this paper,some general research are discussed,including methods of face detection and location,features abstraction,and face recognitionThen we analyze and forecast the face recognitions application and its prospectsKeywords:Face Recognition Technology,Face location,Features abstraction第1章 绪 论所谓
4、人脸辨认,是指对输入人脸图像或者视频判断其中与否存在人脸,如果存在人脸,则进一步给出每张人脸位置、大小和各个重要面部器官位置信息。并且根据这些信息,进一步提取每张人脸蕴含身份特性,并将其与已知人脸库中人脸进行对比,从而辨认每张人脸身份。人脸辨认研究涉及范畴广泛,内容涉及模式辨认、计算机视觉、图像解决、人工智能等方面。人脸辨认还涉及到神经网络等学科, 也和人脑结识限度紧密有关。 这诸多因素使得人脸辨认成为一项极富挑战性课题。1.1人脸辨认技术研究意义人脸辨认是机器视觉和模式辨认领域最富有挑战性课题之一,同步也具备较为广泛应用意义。人脸辨认技术是一种非常活跃研究领域,它覆盖了数字图像解决、模式辨认
5、、计算机视觉、神经网络、心理学、生理学、数学等诸多学科内容。如今,虽然在这方面研究已获得了某些可喜成果,但是FRT在实用应用中仍面临着很严峻问题,由于人脸五官分布是非常相似,并且人脸自身又是一种柔性物体,表情、姿态或发型、化妆千变万化都给对的辨认带来了相称大麻烦。如何能对的辨认大量人并满足实时性规定是迫切需要解决问题。1.2国内外研究现状 人脸辨认系统当前在大多数领域中起到举足轻重作用,特别是用在机关单位安全和考勤、网络安全、银行、海关边检、物业管理、军队安全、智能身份证、智能门禁、司机驾照验证、计算机登录系统。国内在这方面也获得了较好成就,国家863项目“面像检测与辨认核心技术”通过成果鉴定
6、并初步应用,就标志着国内在人脸辨认这一当今热点科研领域掌握了一定核心技术。北京科瑞奇技术开发股份有限公司在开发了一种人脸鉴别系统,对人脸图像进行解决,消除了照相机影响,再对图像进行特性提取和辨认。这对于人脸鉴别特别有价值,由于人脸鉴别普通使用正面照,要鉴别人脸图像是不同步期拍摄,使用照相机不同样。系统可以接受时间间隔较长照片,并能达到较高辨认率,在计算机中库藏2300人正面照片,每人一张照片,使用相距1-7年、差别比较大照片去查询,首选率可以达到50%,前20 张输出照片中包具有与输入照片为同一人照片概率可达70%。美国陆军实验室也是运用vc+开发,通过软件实现,并且FAR为49%。在美国进行
7、公开测试中,FAR,为53%。美国国防部高档研究项目署,运用半自动和全自动算法。这种算法需要人工或自动指出图像中人两眼中心坐标,然后进行辨认。在机场开展测试中,系统发出错误警报太多,国外某些高校(卡内基梅隆大学(Carnegie Mellon University)为首,麻省理工大学(Massachusetts Institute of Technology )等,英国雷丁大学(University of Reading)和公司(Visionics 公司Facelt 人脸辨认系统、Viiage FaceFINDER 身份验证系统、Lau Tech 公司Hunter系统、德国BioID 系统等)
8、工程研究工作也重要放在公安、刑事方面,在考实验证系统实现方面进一步研究并不多。1.3本系统研究内容本系统重要对人脸检测与定位做了进一步研究。在人脸检测某些重要是对图像进行获取和预解决。图像获取重要是获取图像基本信息,以便对图像像素进行解决。预解决涉及对图像灰度化,中值滤波,对比度变化以及边沿提取。人脸预解决过程是计算机人脸辨认中一种重要过程。人脸图像预解决好坏对整个系统至关重要,对人脸预解决研究具备非常重要意义。特性定位是人脸辨认目是拟定单张人脸在图像中位置,它通过标记人脸区域 来拟定和计算人脸各器官定位。人脸特性检测是检测人脸特性有无和位置,例如说眼睛、鼻子、鼻孔、嘴巴、嘴唇等有无和位置。值
9、得指出是,人脸检测涉及办法种类繁多(据报告可知,用于人脸检测办法有150各种),且涉及知识点较深,并各有特点,因此咱们小组将人脸检测与人脸辨认区别开来,由于后者只是前者一种简朴问题。同步,咱们把注意力集中在人脸检测办法上,而没有实现与数据库中人脸匹配问题。1.4当前研究中存在问题虽然人类人脸辨认能力很强,,可以记住并辨别上千张不同人脸,可是计算机则困难多了。其体当前:人脸表情丰富;人脸随年龄增长而变化;人脸所成图像受光照、成像角度及成像距离等影响;并且从二维图象重建三维人脸是病态( ill2po sed) 过程,当前尚没有较好描述人脸三维模型。此外,人脸辨认还涉及到图象解决、计算机视觉、模式辨
10、认以及神经网络等学科,也和人脑结识限度紧密有关。这诸多因素使得人脸辨认成为一项极富挑战性课题。第2章 系统需求分析2.1 系统功能需求系统功能重要环绕人脸检测和人脸特性定位进行设计,一方面该系统会对图像进行人脸检测,人脸检测重要是对图像进行预解决过程,预解决这个模块在整个人脸辨认系统开发过程中占有很重要地位。该系统重要是将解决后人脸图片进行定位,将眼睛、鼻子、嘴巴标记出来。2.1.1功能划分及描述图像解决办法诸多,咱们可以依照需要,有选取地使用各种办法。在拟定脸部区域上,普通用法有肤色提取。肤色提取,则对脸部区域获取则比较精确,成功率达到95%以上,并且速度快,减少诸多工作。图像获取模块:该模
11、块重要是从图片库中获取图片,获取后图片可以在软件界面中显示出来以便进行辨认。图像预解决模块:图像预解决就是对获获得来图像进行恰当解决,使它具备特性可以在图像中明显体现出来。该模块中子模块有如下几种,下面对它们进行概述:中值滤波:在图像采集过程中,由于各种因素影响,图像中往往会浮现某些不规则随机噪声,如数据在传播、存储时发生数据丢失和损坏等,这些都会影响图像质量,因而需要将图片进行平滑操作以此来消除噪声。灰度化:图像灰度化过程就是把彩色图像转换为灰度图像过程,彩色图像包括较多人脸特性信息,但是直接作为解决对象会使过程复杂化相比之下灰度图像在保存了人脸重要特性信息基本上,减少了总信息量。Sobel
12、提取(边沿提取):采用梯度微分锐化图像,使噪声、条纹等得到增强;对图像中随机噪声也有一定平滑作用;标记人脸边沿,使其边沿显得粗而亮。对比度增强:对比度增强,就是对图像进一步解决,将对比度再一次拉开。它针对原始图像每一种像素直接对其灰度进行解决,其解决过程重要是通过增强函数对像素灰度级进行运算并将运算成果作为该像素新灰度值来实现。通过变化选用增强函数解析表达式就可以得到不同解决效果。相似度计算:相似度计算是为了鉴别两对象相似限度而设定算法,例如文字、指纹、人脸等。为了便于二值化阈值拟定,肤色相似度计算意义是通过计算出与人脸肤色相近像素点,拟定人脸区域,用灰度图象显示出来,并为二值化提供一种可计算
13、出阈值比较值。二值化:通过某些算法,通过一种阈值变化图像中像素颜色,令整幅图像画面内仅有黑白二值,该图像普通由黑色区域和白色区域构成,可以用一种比特表达一种像素,“1”表达黑色,“0”表达白色,以便有助于咱们对特性提取。直方图:直方图是图象解决中一种十分重要图象分析工具,它描述了一幅图像灰度级内容,任何一幅直方图都包括了丰富信息。从数学上来说图像直方图是图像各个灰度值记录特性与图像灰度值函数,它记录了一幅图像中各个灰度级浮现次数和概率。2.1.2 开发环境l 硬件环境硬件配备原则:具备可靠性,可用性和安全性,具备完善技术支持。可以满足个人学习和设计需要。运营本软件所需硬件资源:CPU: 800
14、M及以上;内存: 128M及以上l 软件环境系统软件配备原则可以满足该软件可靠性,可用性和安全性规定系统软件配备方案 配备有持续工作能力、高稳定性、高度可集成开放式原则操作系统,如Windows,Windows NT,UNIX,Linux等。 配备符合ANSI/ISO原则高档程序设计语言解决软件。如:Visual C+ 6.0。 熟悉C+高档程序设计语言。2.1.3 运营环境(1)硬件环境CPU:800M以上;内存:128 M及以上。(2)软件环境可以运营在微软公司近年来所出各种操作系统。如Windows 98、Windows Me、Windows 、Windows NT等。2.2 可行性分析
15、在开发该人脸辨认软件之前,咱们查询了前人所写过诸多论文以及源程序,在开发之时,结合了资料中算法并揉进了自己某些思想,使程序可以对人脸图片进行简易辨认。2.2.1操作可行性该人脸辨认软件需要如下运营环境:CPU:800M及以上;内存:128 M及以上。安装有Windows 98、Windows Me、Windows 、Windows NT等操作系统中其中一种。因而,从操作可行性来看,只要系统顾客硬件软件设备满足以上条件,即可用该人脸辨认软件进行人脸辨认。 2.2.2 技术可行性图像解决办法诸多,咱们可以依照需要,有选取地使用各种办法。在拟定脸部区域上,普通用法有肤色提取。肤色提取,则对脸部区域获
16、取则比较精确,成功率达到95%以上,并且速度快,减少诸多工作。人脸自身变化挑战:同一种人人脸图像由于表情、精神状态、健康状况、姿态、整容、年龄变化、意外损伤、化妆、眼镜帽子、头发胡须等变化而发生巨大变化;外部环境挑战:光照环境条件、摄像设备、人与摄像设备距离角度、图像存储质量等,都会使人脸图像发生教大变化。面队这些就规定咱们进一步研究基于人脸肤色提取算法,提高辨认精度,提高辨认速度,提高系统合用性。2.3 预解决方案选取2.3.1设计方案原则选取本应用程序设计方案原则如下:采用较为先进技术力量,保证应用程序在技术上具备一定优势。采用成熟技术,保证应用程序安全性和可靠性。应用程序便于扩展和维护,
17、易于技术更新。应用程序充分运用既有资源,尽量减少不必要再投资。编写代码必要严谨易读,代码解释必要清晰明白,为应用程序再开发提供应尽责任。2.3.2 图像文献格式选取 图像采集是在Windows操作系统下开发,需要理解在此环境下图像存储、显示等方面机制。在Windows操作系统中,任何图像格式(如.jpeg格式,.gif格式)在系统中显示之前最后必要转化为位图格式。BMP图像文献格式(位图格式)是微软公司为其Windows环境设立原则图像格式,在设计过程中,为了定位和特性提取以便,咱们采用是BMP格式图像。 2.3.3开发工具选取本次设计所用开发工具是Microsoft Visual C+ 6.
18、0。 Visual C+ 6.0是Microsoft公司推出一种可视化编程工具。它支持多平台和交叉平台开发,将各种编程工具如编辑器、连接器、调试器等巧妙结合在一起,构成一种完美可视化开发环境。顾客无需通过繁杂编程操作,即可完毕Windows下应用程序编辑、编译、测试和细化等工作。2.3.4算法选取分析本文重要研究对象是图像预解决模块,该模块分为中值滤波、图像灰度化、相似度计算、二值化每个小模块实现均有许多相应算法。下面将本系统采用算法进行简介:中值滤波:在图像采集过程中,由于各种因素影响,图像中往往会浮现某些不规则随机噪声,如数据在传播、存储时发生数据丢失和损坏等,这些都会影响图像质量,因而需
19、要将图片进行平滑操作以此来消除噪声。但是如果平滑不当,就会使图像自身细节如边界轮廓、线条等变模糊不清,为了既平滑掉噪声有尽量保持图像细节,本系统采用中值滤波算法解决。图像灰度化:图像灰度化是将图像变成灰色,本系统中采用加权平均值法来实现图像灰度化,这样可以获得最合理灰度图像。肤色相似度计算:相似度计算是为了鉴别两对象相似限度而设定算法,例如文字、指纹、人脸等。为了便于二值化阈值拟定,肤色相似度计算意义是通过计算出与人脸肤色相近像素点,拟定人脸区域,用灰度图象显示出来,并为二值化提供一种可计算出阈值比较值。二值化:通过某些算法,通过一种阈值变化图像中像素颜色,令整幅图像画面内仅有黑白二值,该图像
20、普通由黑色区域和白色区域构成,可以用一种比特表达一种像素,“1”表达黑色,“0”表达白色,以便有助于咱们对特性提取。第3章 系统概要设计本章重要简介系统构造设计流程以及系统各模块功能及有关原理。应用程序总体构造设计流程图如图31所示:图31总体构造设计流程图图像预解决层次图如图3-2所示: 图3-2 预解决层次图人脸定位层次图如图3-3所示: 图3-3 人脸定位层次图3.1 各模块功能概述以上是该系统总体构造设计图以及图像预解决模块层次图。下面简介系统中各模块详细功能。3.1.1图像获取模块该模块重要是从图片库中获取,获取后图片可以在软件界面中显示出来以便进行辨认。3.1.2人脸区域获取该系统
21、中图像里人脸区域获取,重要是依照肤色来进行获取,通过肤色非线形分段色彩变换来实现。这一非线性分段色彩变换得到肤色模型属于色彩空间中聚类模型,这一类肤色模型建立一方面要选用一种适当色彩空间。3.1.3图像预解决模块图像预解决就是对获获得来图像进行恰当解决,使它具备特性可以在图像中明显体现出来。该模块中子模块有如下几种,下面对它们进行概述: 中值滤波中值滤波将对图像进行平滑解决,在图像采集过程中,由于各种因素影响,图像往往会浮现某些不规则噪声,入图像在传播、存储等均有也许产生数据丢失。从而影响图像质量。解决噪声过程称为滤波。滤波可以减少图像视觉噪声。 灰度化图像灰度化过程就是把彩色图像转换为灰度图
22、像过程,彩色图像包括较多人脸特性信息,但是直接作为解决对象会使过程复杂化相比之下灰度图像在保存了人脸重要特性信息基本上,减少了总信息量。 对比度增强对比度增强,就是对图像进一步解决,将对比度再一次拉开。使图象原本模糊边沿变得清晰。 Sobel边沿提取Sobel提取长处:采用梯度微分锐化图像,同样使噪声、条纹等得到增强,Soble算子则在一定限度上克服了这个问题:由于引入了平均因素,因而对图像中随机噪声有一定平滑作用;由于它是相隔两行或两列之差分,故边沿两侧之元素得到了增强,故边沿显得粗而亮。 相似度计算相似度计算是为了鉴别两对象相似限度而设定算法,例如文字、指纹、人脸等。为了便于二值化阈值拟定
23、,肤色相似度计算意义是通过计算出与人脸肤色相近像素点,拟定人脸区域,用灰度图象显示出来,并为二值化提供一种可计算出阈值比较值。 二值化二值化目是将采集获得多层次灰度图像解决成二值图像,以便于分析理解和辨认并减少计算量。二值化就是通过某些算法,通过一种阈值变化图像中像素颜色,令整幅图像画面内仅有黑白二值,该图像普通由黑色区域和白色区域构成,可以用一种比特表达一种像素,“1”表达黑色,“0”表达白色,固然也可以倒过来表达,这种图像称之为二值图像。这便有助于咱们对特性提取。该设计中采用组内方差和组外方差来实现二值化。3.1.4图像模块定位对候选特性进行筛选时,一方面割据颜色信息提出那些伪特性。然后用
24、PCA模板和几何特性拟定眼睛和嘴巴。 颜色筛选无论是眼睛还是嘴巴,都位于人脸非肤色区域。并且眼睛颜色是黑暗分明,运用这些懂得可以裁减诸多候选,减少PCA验证承担。 双眼定位把筛选过特性区域两两配对,再用PCA模扳进行严整,就可以得到真正双眼大使,PCA严整有时候难以区别眉毛与眼睛,因此还要用某些几何特性进一步筛选,由于假定姿态是正,双眼必然位于人脸上半某些,她们连线是近似水平,并且她们中心比眉毛低,运用这些判据,可以区别眉毛和眼睛。 鼻子定位在拟定了眼睛位置后来,鼻子位置基本拟定,以眼睛瞳距为1来计算,鼻子到两眼中心距离为0.7到1。在这附近搜索颜色较深区域,大体能得到鼻孔位置(有侧面图一种鼻
25、孔基本不可见,也就无法检测出来了)。然后在两鼻孔上访一定范畴内(鼻孔距离1/2左右)找亮度最高点作为鼻尖。 嘴巴定位找到双眼之后,可以在它们下方搜索候选特性区域,寻找非肤色面积较大、近似位于双眼对称候选作为嘴巴。然后依照先验知识调节嘴巴大小。第4章 系统详细设计本章重要对图像解决这一模块进行详细简介,对其子模块所用到算法及详细实现进行详细讲述。4.1 系统运营流程图l 对图片进行光线补偿、将图片变成灰色、实现图片对比度增强,二值化变换等一系列预解决。l 将解决好人脸图片进行定位,标出眼睛、鼻尖和嘴巴。 启动本系统,进入人脸辨认系统界面。 点击打开图象,选用所需要图片图4-1 系统流程图4.2
26、图像解决详细设计4.2.1图像灰度化彩色图像包括较多人脸特性信息,但是直接作为解决对象会使过程复杂化。相比之下灰度图像在保存了人脸重要特性信息基本上,减少了总信息量。(1) 算法思想 灰度化解决办法重要有3种: 最大值法:使RGB值等于3值中最大一值,即, 式(4.1)最大值法会完毕亮度很高灰度。 平均值法:取R,G,B平均值,即, 式(4.2)平均值法会完毕比较柔和灰度。 加权平均值法:依照重要性或其她指标给R,G,B赋予不同权值,并使RGB加权值平均,即, 式(4.3)其中,分别为R,G,B权值。实验和理论推导证明当 时,即当, 式(4.4) 式(4.5)时,能得到最合理灰度图像。(2)
27、详细实现灰度化功能 在明白了灰度化原理之后,就可进行编码来实现该功能。在编辑界面中添加一种按钮控件,将其命名为灰度化,并其ID号设为IDC_BTHD,相应文献CFaceDetectDlgCpp中函数OnBthd()实现. 现该模块核心代码如下:/编写就算像素点灰度值函数int CPreProcess:CalGray1(int blue,int green,int red)/运用灰度计算公式int ColorGray=(int)(green * 59 + red * 30 + blue * 11) / 100);/将像素值限制在0到255if (ColorGray255)ColorGray=25
28、5;return ColorGray;/编写OnBtGray()函数/获取红色分量int ColorRed=m_tOriPixelArrayij.rgbRed;/获取绿色分量int ColorGreen=m_tOriPixelArrayij.rgbGreen;/获取蓝色分量 int ColorBlue=m_tOriPixelArrayij.rgbBlue;/调用函数,计算灰度值int cgray=method3-CalGray1(ColorBlue ,ColorGreen ,ColorRed ) ;/显示灰度图像m_tResPixelArrayij.rgbBlue = m_tResPixelA
29、rrayij.rgbGreen = m_tResPixelArrayij.rgbRed =cgray;/重置位图MakeBitMap( );/method3是定义一种函数指针,定义如下:CPreProcess *method3;/初始化如下method3 = new CPreProcess(m_tOriPixelArray,m_nWndWidth,m_nWndHeight); 图像灰度化效果: 图4-2 图像灰度化4.2.2 灰度变换按照一定规律修改像素灰度值,使图像亮度或者对比度发生变化,使之更易于辨别,达到更好视觉效果。(1) 详细实现功能进行编码来实现该功能:在编辑界面中添加一种滑动条控
30、件和文本编辑器,将其命名为灰度化变换,并其ID号分别设为IDC_SLIDER1,IDC_EDIT1,相应文献CFaceDetectDlgCpp中函数OnReleasedcaptureSlider1()和OnChangeEdit1()实现。打开ClassWizardMember Variables标签,给每个控件添加所需成员变量,参数如下:表4.1 空间ID号变量类型变量名范畴和大小IDC_SLIDER1CSliderCtrlm_SliderIDC_EDIT1intm_Gray0255在滑动条消息解决函数OnReleasedcaptureSlider1()中设立滑动条值使它等于文本编辑框初始值。
31、代码为:/设立滑动条初始值m_Slider.SetPos(m_Gray); /刷新界面UpdateData(true); 在滑动条消息解决函数OnReleasedcaptureSlider1()中进行灰度化变换,将滑动条值赋给灰度,并将其控制在【0,255】之间。代码为:cgray+=m_Gray; if (cgray255) cgray=255; m_tResPixelArrayij.rgbBlue = m_tResPixelArrayij.rgbGreen =m_tResPixelArrayij.rgbRed =cgray; MakeBitMap();/重置位图MakeBitMap();重
32、要代码 CClientDC ClientDC(pDCShow-GetWindow();if(m_pResMap!=NULL) delete m_pResMap;m_pResMap=new CBitmap();m_pResMap-CreateCompatibleBitmap(&ClientDC,m_nWndWidth,m_nWndHeight);CDC dc;dc.CreateCompatibleDC(&ClientDC);dc.SelectObject(m_pResMap);for(int i=0;im_nWndHeight;i+)for(int j=0;jCalSobel(col,row);
33、 式(4.9)/对计算值进行限制 if (temp255) temp=255; /重置像素 m_tResPixelArrayij.rgbBlue = m_tResPixelArrayij.rgbGreen = m_tResPixelArrayij.rgbRed =temp; MakeBitMap();CClientDC ClientDC(pDCShow-GetWindow();if(m_pResMap!=NULL) delete m_pResMap;m_pResMap=new CBitmap();m_pResMap-CreateCompatibleBitmap(&ClientDC,m_nWnd
34、Width,m_nWndHeight);CDC dc;dc.CreateCompatibleDC(&ClientDC);dc.SelectObject(m_pResMap);for(int i=0;im_nWndHeight;i+)for(int j=0;jm_nWndWidth;j+)dc.SetPixelV(j,i,RGB(m_tResPixelArrayij.rgbRed,m_tResPixelArrayij.rgbGreen,m_tResPixelArrayij.rgbBlue);dc.DeleteDC();MyDraw();(2) 效果图 图4-5 sobel边沿提取4.2.4 对比
35、度增强(1)进行编码来实现该功能:在编辑界面中添加一种滑动条控件和文本编辑器,将其命名为灰度化变换,并其ID号分别设为IDC_SLIDER2,IDC_EDIT2,相应文献CFaceDetectDlgCpp中函数OnReleasedcaptureSlider2()和OnChangeEdit2()实现。打开ClassWizardMember Variables标签,给每个控件添加所需成员变量,参数如下:表4.2空间ID号变量类型变量名范畴和大小IDC_SLIDER1CSliderCtrlm_Slider2IDC_EDIT1intm_Degree0255 在滑动条消息解决函数OnReleasedca
36、ptureSlider2()中设立滑动条值使它等于文本编辑框初始值。代码为:for (int i=0;im_nWndHeight;i+) for (int j=0;j127)r+=red;else r-=red;if (g127)g+=green;else g-=green;if (b127)b+=blue;elseb-=blue; if (r 255) r = 255; if (r 255) g = 255; if (g 255) b = 255; if (b 0) b = 0; m_tResPixelArrayij.rgbRed=r;m_tResPixelArrayij.rgbGreen=
37、g;m_tResPixelArrayij.rgbBlue=b; MakeBitMap(); UpdateData(true);(2) 效果图图4-6 原图像图4-6 对比度增强后效果图第5章 系统综合与测试5.1 系统综合人脸辨认应用程序采用Visual C6.0作为开发工具,运用MFC采用面向对象办法,用C+语言编写程序。将面向对象编程技术直接应用于图像解决知识,并按功能进行细化,建立通用类,从而减少了繁琐性,增长代码可重用性和可移植性,提高了效率。本设计中建立多层次类构造都是可以修改和维护。所有类都是开放,可以向其中添加新办法以支持新功能,而不会对原有功能构成任何威胁。本设计中建立多层次类
38、构造都是可以修改和维护。所有类都是开放,可以向其中添加新办法以支持新功能,而不会对原有功能构成任何威胁。5.2 构造设计图像预解决设计: 表5.1函 数功 能OnBtGray()图象灰度化CalGray1(int,int,int)计算图象灰度值OnChangeEdit1( )设立滑动条初始值OnReleasedcaptureSlider( )变化灰度变化MakeBitMap( )重置位图SetRange()设立滑动条范畴GetPos( )得到滑动条值SetPos()设立滑动条值OnBUTTONSobel( )实现Sobel边沿提取OnCustomdrawSlider1( )将滑动条消息映射给文本框各成员函数解析函数名称 : OnBtGray参数 : CSliderCtrl m_Slider - 灰度滑动条值 int m_Gray - 编辑框值返回值 : void阐明 : 该函数将编辑框值映射给滑动条函数名称 : CalGray1参数 : int Blue - 待求点像素蓝色值 int Green - 待求点像素绿色值int Red - 待求点像素红色值返回值 : int - 待求点灰度值阐明 : 该函数计算某像素点灰度值函数名称 : OnChangeEdit1参数 : CSliderCtrl m_Slider - 灰度滑动条值 in