文档库 最新最全的文档下载
当前位置:文档库 › Android平台上数字图像处理的研究之图像识别算法

Android平台上数字图像处理的研究之图像识别算法

Android平台上数字图像处理的研究之图像识别算法
Android平台上数字图像处理的研究之图像识别算法

Android平台上图像识别算法研究(卷终)

XXX XXX

1(江苏科技大学江苏镇江 212003)

摘要:由Android手机获取人脸图像,对人脸图像进行预处理(彩图灰度化、直方图均衡化、图像的平滑滤波等);再通过Java Native Interface(JNI)规则将Open CV平台与android平台实现类库共享,利用Principal Component Analysis(PCA)算法对人脸图像进行特征提取,获得特征向量(特征脸)完成训练阶段;最后,将待识别的人脸图像投影到特征向量,通过最邻近法得到与特征向量最近的人脸图像完成识别阶段,从而识别此人的身份。

关键词: Android;JNI;Open CV;图像预处理;面部识别;PCA

中图分类号:TP391文献标识码:A

Research on Image Recognition on the Android platform

XXX XXX

(Jiangsu University of science and technology, Zhenjiang 212003, Jiangsu, China)

Abstract:Firstly, getting the face images from the Andrews phone, and making a pretreatment to the face images, such as wallpapers graying, histogram equalization, smoothing filter of the images and so on; secondly, achieving the class library sharing of the Open CV platform and the Android platform through the rules of the Java Native Interface. And then using Principal Component Analysis method to pick up the features of the face images to obtain the eigenvectors which is the eigenvectors-face in order to finish the training stage; thirdly, making the face images which are to be identified project onto the eigenvectors and getting the face image which is the nearest to the eigenvectors with the method of the closest to finish the recognition phrase. Thus the person's identity is identified.

Keywords: Android; JNI; Open CV; Image preprocessing; Face recognition; PCA

1 引言

人脸识别,是一种基于人的脸部特征信息进行身份认证的生物特征识别技术。相比指纹识别技术,人脸识别具有非接触、识别速度快、准确率高等优点,因而深受欢迎并且应用广泛,特别是比起IC卡更具发展优势。

人脸识别技术从最初的单一的正面灰度图像的识别,经过对多姿态人脸识别研究,发展到能够实现动态识别,目前正在向三维人脸识别的方向发展。与其他的学科不同的是:人脸识别技术融合了数字图像处理、计算机图像学、模式识别、计算机视觉、人工神经网络和生物特征等多个学科的理论和方法。

2 Android操作系统

Android系统架构主要分为四个层次。如图1所示。处于底层的Linux内核层为系统提供了诸如进程管理、内存管理、设备驱动等基本功能;组件库和Dalvik虚拟机包含重要的C/C++库文件和Java运行环境,提供对应用框架层的支持;应用程序层提供了视图组件、内容提供器、资源管理器、活动管理器等一系列的系统服务,方便开发出交互性好的应用程序。Android应用程序使用Eclipse+ JDK+ Android SDK+ ADT插件方式开发。

图1 Android系统架构

Fig.1 System framework of Android

Android应用程序是以APK为单位运行的,可以通过ADB(Android Debug Bridge)动态下载、卸载指定的APK文件。新的APK下载成功后,包管理器(Package Manager)会对其进行分析、读取应用程序的相关信息,并将它加入到应用程序的列表中。

3 图像预处理

在人脸图像的产生、传输和变换上,往往由于多种因素使得图像产生变劣或是退化,劣变退化就是产生的图像与原始景物之间的某些差异,这些差异一般包括人脸图像对比度差、人脸边沿模糊、噪声较大等。这些退化对下一步的处理带来了困难和不便,因此这很有必要对人脸图像进行一些恰当的处理,改善图像的视觉效果,从而提高图像的清晰度,便于后期的图像识别提高识别率,这一过程就是图像的预处理。

人脸图像预处理的方法主要有:人脸图像的灰度化、人脸图像的二值化、人脸图像的几何校正、直方图均衡化、人脸图像的滤波、图像的锐化、像素平均法等。

3.1 彩图灰度化

人脸识别技术的研究一般是一灰度图像作为研究对象。彩色图像包含了人脸较多的信息,直接将彩色图像作为研究对象这样就是的处理的过程变得复杂化,不利于识别。而灰度图在保留了人脸信息量不丢失的情况下,加少了信息总量,为后期的识别算法提供了可行性。将彩色图像灰度化,通常采用以下经验公式:

=++ (1)

Gray R G B

0.390.500.11

彩色图像的灰度变换具体过程如图1 所示。

图1 彩色图像的灰度变换

Android程序实现的主要代码:

int color = pix_result[width * i + j];

int red=Color.red(color);

int green=Color.green(color);

int blue=Color.blue(color);

color = (int) ( (float)red*0.3 + (float)green*0.59 + (float)blue*0.11)&0xFF;

3.2 直方图均衡化

图像的灰度直方图是图像各个像素点灰度值的统计度量。运用直方图能很好的反应图像的大体概貌以及图像灰度值得大体分别情况。如图像中的目标、背景的分布情况,还可以计算图像中的最大最小灰度值、平均灰度值、对比度等。应用于图像的预处理上称其为直方图均衡化(也称直方图修正),其基本的思想是将各灰度级分量尽量平均分布在整个图像空间,在直方图上的表现为由密集的灰度分布变为均匀的分布,从而增强图像的对比度。此外,直方图均衡化还可以减少管线对图像的干扰、影响,使得对图像的特征提取更加的容易,同时

提高了图像的主观质量。实践证明,直方图的均衡化是一种有效的图像增强方法。

直方图均衡化就是要建立一个T 变换,对于连续的图像来说:用变量R 来代表待增强图像的灰度级。假设R 被归一化到区间[0, 1],且R=0代表黑色、R=1代表白色。之后用一个离散公式并允许像素值在区间[0,L-1]。这样建立变换:

()01S T R R =≤≤ (2)

在输入图像中,对于每个像素值R 产生一个灰度值S 。()T R 满足一下条件:

(1)()T R 在区间01R ≤≤上为单值且单调函数

(2)当01R ≤≤时,0()1T R ≤≤

这样就保证了()T R 的反变换存在,单调的条件就保证了输出图像是从黑到白的顺序,最后由S 到R 的反变换可表示为:

1()01R T S S -=≤≤ (3)

对于离散的数字图像,其方法可以表示为:

10.5(0,1,,1)i

k k L R n i L A =-=+=-∑ (4) 其中A 为图像面积,L 为图像灰度级,k n 表示灰度级为k 的像素点的总数[2]。

算法实现流程,如图2 直方图均衡化算法流程

图2 直方图均衡化算法流程

Android 中核心代码:

Gray=PixelsGray[i];

FrequenceGray[Gray]++;

SumGray[i]=SumGray[i-1]+FrequenceGray[i];

SumGray[i]=(int )(SumGray[i]*255/length);

PixelsGray[k] = SumGray[PixelsGray[k]];

return PixelsGray;

3.3 图像平滑滤波

人脸图像在采集过程中,受到各种干扰时不可避免的,并在获得的图像中留下了痕迹。为了避免噪声对图像的特征抽取的影响,需要消除图像的噪声。现在消除噪声的主要方法分为两类:一类是全局处理,包括Wiener 滤波、Kal-man 滤波等方法。二类是使用局部算子,如均值滤波、中值滤波、梯度倒数加权滤波等经典算法。本文就是运用的均值滤波方法对获得的人脸图像进行平滑滤波。

均值滤波就是对信号进行局部平均,以平均值来代表该像素点的灰度值,换言之,每一个像素值用其局部邻域内所有值得平均值来代替: 获取源图像

信息 统计个灰度级概率密度 源图像直方图均衡化 返回均衡化的像素点数

(,)1(,)(,)k l N

h i j f k l m ∈=∑ (5) 其中m 为邻域内像素点的总数。如在像素点(,)i j 处取3x3的邻域,这样得到公式如下: 1

111

1(,)(,)9j i k i l j h i j f k l ++=-=-=∑∑ (6) 其中值得注意的是邻域N 控制着滤波程度,对应大卷积模板的大尺度会加大滤波程度,但是这样会导致图像细节的损失。

在设计线性平滑滤波器的时候,选择滤波权值使得滤波器只有一个峰值,并且在水平和垂直方向上市对称的,下面就是程序中运用的一个典型3x3平滑滤波器的权值模板:

1111681611184811116

816?? ? ? ? ? ? ? ??? 线性平滑滤波器除去了高频成分和图像中的锐化细节。如把阶跃变化平滑成逐渐变化,使得精确定位的能力下降]。

程序中实现的核心代码如下:

average=(1/4*data[i*width+j]+

1/8*data[i*width+j-1]+ 1/8*data[i*width+j+1]+ 1/8*data[(i-1)*width+j]+

1/16*data[(i-1)*width+j-1]+ 1/16*data[(i-1)*width+j+1]+ 1/8*data[(i+1)*width+j]+

1/16*data[(i+1)*width+j-1]+ 1/16*data[(i+1)*width+j+1])/9;

filterData[i*width+j]=(int )(average)

filterData[i]=(filterData[i]-min)*255/(max-min);

3.4 边沿检测

图像的边缘是图像非常重要的特征之一。图像的边缘保留了原始图像中相当重要的部分信息,而又使得总的数据量得以减少,这为后续的算法,也就是特征提取的计算量得以大大的减少,这正是符合特征提取的要求。而用于图像识别的边缘提取比视觉效果增强的边缘提取要复杂一些。边缘对应于物体的边界,在灰度图像中灰度值变化剧烈的地方符合这一要,一般会以这个特征来提取图像的边缘。

灰度值得剧烈变化可以度量边缘,由此想到在数学上,最直观的方法就是微分。在此之前应该对输入图像进行噪声消除的处理,这样保证图像中的高频成分是原始图像中的。 经典的边缘检测是以原始图像为基础,对图像中的像素考察它的某个领域内的灰度阶跃变化,利用边缘邻近一阶或是二阶方向导数的变化规律进行边缘检测。比较经典的常用的算法有:查分边缘检测、Roberts 边缘检测算子、Sobel 边缘检测算子、Prewitt 边缘检测算子等。本文就是采用Sobel 算子进行图像的边缘检测。

对于数字图像而言,可以用一阶差分来代替一阶微分。对图像x, y 两个方向进行差分:

(,)(,)(1,)xf x y f x y f x y ?=-- (7)

(,)(,)(,1)yf x y f x y f x y ?=-- (8)

求梯度时,对平方和的开方运算,可以用两个分量的绝对值之和来表示。如下公式:

(,)(,)+(,)

Gf x y xf x y yf x y =?? (9)

Sobel 算子是一种梯度幅值的计算方法,通过对数字图像f(x ,y)的每一个像素的四邻域点的灰度值的加权差,与邻点的权值大小。其先做成加权平均,再微分,再求梯度。具体的算法表达如下: (,)(1,1)2(,1)(1,1)

(1,1)2(,1)(1,1)xf x y f x y f x y f x y f x y f x y f x y ?=-++++++------+- (10)

(,)(1,1)2(1,)(1,1)

(1,1)2(1,)(1,1)yf x y f x y f x y f x y f x y f x y f x y ?=--+-+-+-+--+-+- (11)

根据以上,定义Sobel 算子如下:

(,)(,)(,)s x y xf x y yf x y =?+? (12)

Sobel 算子的核心是两个3x3的卷积核,通过这两个模板在图像区域中移动,完成图像

中每个像素点与这两个卷积核的卷积运算[4]。

Sobel 算子卷积核如下:

101121202,

000101121x y S S -???? ? ?=-= ? ? ? ?----????

由于算法的复杂度本文采用Open CV 中的库函数实现图像的边缘检测,具体实现核心代码如下:

pImgSobelgray = cvCreateImage(cvGetSize(pImage),IPL_DEPTH_16S,1);

cvSobel(pImg8uSmooth,pImgSobelgray,0,1,3);

3.5 人脸部位提取

在用手机进行拍照时,拍下来的人脸图像含有背景,这就为后面的识别带来了误差。本文将通过Open CV 中目标检测函数,对人脸部位进行检测,并将人连部位保存为图像存储下来供后面识别,这样就减少了背景对识别的影响。

目标检测方法最初由Paul Viola 提出,并由Rainer Lienhart 对这一方法进行了改善. 首先,利用样本(的HARR 特征进行分类器训练,得到一个级联的boosted 分类器。训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本(例如人脸或汽车等),反例样本指其它任意图片,所有的样本图片都被归一化为同样的尺寸大小。

分类器训练完以后,就可以应用于输入图像中的感兴趣区域(与训练样本相同的尺寸)的检测。检测到目标区域(汽车或人脸)分类器输出为1,否则输出为0。为了检测整副图像,可以在图像中移动搜索窗口,检测每一个位置来确定可能的目标。 为了搜索不同大小的目标物体,分类器被设计为可以进行尺寸改变,这样比改变待检图像的尺寸大小更为有效。所以,为了在图像中检测未知大小的目标物体,扫描程序通常需要用不同比例大小的搜索窗口

对图片进行几次扫描[6]。

分类器中的“级联”是指最终的分类器是由几个简单分类器级联组成。在图像检测中,被检窗口依次通过每一级分类器, 这样在前面几层的检测中大部分的候选区域就被排除了,全部通过每一级分类器检测的区域即为目标区域。 目前支持这种分类器的boosting 技术有

四种:Discrete Adaboost ,Real Adaboost ,Gentle Adaboost and Logitboost ,"boosted" 即指级联分类器的每一层都可以从中选取一个boosting 算法(权重投票),并利用基础分类

器的自我训练得到。基础分类器是至少有两个叶结点的决策树分类器[11]。

主要过程分为两步:

(1)从文件中装载训练好的级联分类器或者从Open CV 中嵌入的分类器数据库中导入,利用库函数cvLoadHaarClassifierCascade(),函数原型如下:

CvHaarClassifierCascade* cvLoadHaarClassifierCascade(

constchar*directory,CvSize orig_window_size )

(2)检测图像中的目标,利用库函数vHaarDetectObjects(),函数原型如下:

CvSeq*cvHaarDetectObjects(constCvArr*image, CvHaarClassifierCascade* cascade, CvMemStorage* storage, double scale_factor=1.1,

int min_neighbors=3, int flags=0, CvSize min_size=cvSize(0,0) );

4 PCA 算法及实现

4.1 Android NDK 简介

Android NDK 的全称是Android Native Development Kit ,是一系列开发工具。允许程序开发人员在Android 应用程序中嵌入C/C++语言编写的非托管代码(unmanaged code) 在公共语言运行库的环境的外部由操作系统直接执行的代码,称之为非托管代码。非托管代码必须提供自己的垃圾回收、类型检查、安全支持等服务。

Android NDK 版本1.5集成了交叉编译,支持ARMv5TE 处理器指令集,JNI 接口和一些稳定的库文件。它提供了一系列的说明文档、示例代码和开发工具,指导程序员使用C/C++语言进行开发,并提供便捷工具将库文件打包到.apk 文件中。

在Windows 下Android NDK 编译环境的配置方法主要分为以下四步:

(1)下载Android NDK 的安装包

(2)下载并安装Cygwin

(3)配置Cygwin 的NDK 开发环境

(4)测试开发环境是否可以正常工作

4.2 PCA 算法原理分析

PCA 将图像看作具有一定分布的随机向量。由于人脸总体构型的相似性,人脸图像在其中的分布不是随机的,PCA 可以获得人脸图像分布的主成分方向,从而使用人脸图像的主成分来表达人脸。它使得图像数据在一个低维的空间进行处理,在保持了原有大部分信息量的基础上,大大的减少了运算量,这样有利于在移动设备上的开发使用。从本质上而言,这是一种基于统计分析的信息压缩算法。

PCA 算法运用于人脸识别主要分为两个阶段:训练阶段和识别阶段。

4.2.1 PCA 算法原理分析

设人脸图像(,)f x y 用N=width*height 维向量,人脸图像训练集可以看作是M N ?维的随机向量{}123,,,,m X X X X X =,其中m 是训练样本图像数目。则这m 幅图像的平均图像的向量表示为:

11m

i i X X m ==∑ (12)

每个人脸i X 与平均人脸图像X 的差值定义为i Φ:

(1,2,3,,)i i X X i m Φ=-= (13)

这样训练图像的协方差矩阵表示为:

1111()()m m T T i i i i i i X X X X m m ψ===--=ΦΦ∑∑ (14) 式中X 是N 维向量,则ψ就是N N ?维向量。

设i λ和i V 分别是协方差矩阵ψ的特征值和特征向量,其中1,2,3,,i m =,将特征值按从小到大顺序排列:

123m λλλλ≥≥≥≥。这样就很容易计算出协方差矩阵ψ的正交归一特征向量i ψ为:

1,2,3,,i i V i m ψ== (15)

进一步我们获得特征脸{}123,,,,m ω=ψψψψ

为了进一步减少计算量,我们提出特征值的贡献率(选取的特征值在总的特征值的和

比),选取前P 个最大特征值以及对应的特征向量[7]。

1190%i p i i i m i

i a a λ

δλ

=====≥>∑∑ (16) 这样每一幅人脸图像都可以投影到由i V 组成的子空间中,因此每一幅人脸图像对应于子空间中的一个点。同样子空间中的一个点也代表着一个人脸图像,由于这些点很想人脸图像,所以我们称之为“特征脸”。这样对于任意一个样本X ,它的主成分特征为:

12(,,,)T m y X =ψψψ (17)

4.2.2 识别阶段

识别阶段本文采用三阶邻近算法,对待测样本的主成分和每一训练样本的主成分求距离,将待测样本归类于最小距离的训练样本类别。具体算法过程如下:

(1)将每幅人脸图像与平均脸的差值脸矢量投影到“特征脸”空间,即:

()(1,2,3,,)T i i X X i m ωΩ=-= (18)

(2)将待识别的人脸图像X 与平均脸的差值脸投影到特征脸空间,得到其特征向量x Ω

()x T X X ωΩ=- (19)

(3)定义识别阈值θ

,1,1,2,3,,2max i j i j

i j m θ=Ω-Ω= (20) (4)采用欧氏距离来计算x Ω与每个人脸的距离i ε

22

1,2,3,,x i i i m ε=Ω-Ω= (21)

为了能区分人脸与非人脸,我们还需要计算待识别图像X 与由特征脸空间重建的图像之间的距离

f

x f X T X

εω=-=Ω+其中 T (22)

最后根据以下规则进行判断:

若:(1)εθ≥,则输入图像不是人脸图像 (2)εθ<, 1)且对i ?,i

εθ≥,则输入图像包含未知人脸 2)且对i ?,i εθ<,则输入人脸图像为人脸库中第i 个人脸

4.3 Open CV 实现PCA 算法

4.3.1 PCA 算法实现

Open CV 于1999年由Intel 建立,现在由Willow Garage 提供支持。Open CV 是一个基于BSD 许可证授权(开源)发行的跨平台计算机视觉库,可以运行在Linux 、Windows 和Mac OS 操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python 、Ruby 、MATLAB 等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。它具有三个重要的特性:

(1)Open CV 拥有包括 300 多个C 函数的跨平台的中、高层 API 。它不依赖于其它的外部库——尽管也可以使用某些外部库。

(2)Open CV 对非商业应用和商业应用都是免费(FREE )的。

(3)Open CV 为Intel? Integrated Performan ce Primitives (IPP) 提供了透明接口。

这意味着如果有为特定处理器优化的的 IPP 库,Open CV 将在运行时自动加载这些库[4]。

Open CV 可以应用于人机交互、物体识别、图像分割、人脸识别、动作识别、运动跟踪和机器人7大邻域。

4.3.2 PCA 算法实现

由上文对PCA 算法原理的阐述,几个重要的因素:待训练图像数据、平均图像、训练图像协方差矩阵、协方差矩阵的特征值特征向量、特征向量子空间、待识别图像的子空间投影。

以下为PCA 算法实现的过程图,如图5-1:PCA 算法实现过程。

图3 PCA算法实现过程

4.4.SO库文件编译

4.4.1 JNI规则

Java Native Interface简称JNI,中文为JAVA本地调用。从Java1.1开始,Java Native Interface (JNI) 标准成为Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他语言,只要调用约定受支持就可以了。

设计的主要目的在于标准的Java类库可能不支持你的程序所需的特性。或许你已经有了一个用其他语言写成的库或程序,而你希望在Java程序中使用它。简而言之就是在C/C++与Java搭建一个接口平台。JNI接口图如图4所示。

图4 JNI接口图

JNI最重要的好处是它没有对底层 Java 虚拟机的实现施加任何限制。因此,Java 虚拟机厂商可以在不影响虚拟机其它部分的情况下添加对 JNI 的支持。由于Android的应用层的类都是以Java写的,这些Java类编译为Dex形式的Bytecode之后,必须靠Dalvik 虚拟机(VM: Virtual Machine)来执行。所以VM在Android平台里扮演着很重要的角色。此外,在执行Java类的过程中,如果Java类需要与C组件沟通时,VM就会载入C组件,然后让Java的函数顺利的调用到C组建的函数。此时VM就成了Java与C/C++连接的纽带,让Java与C组件能通过标准的JNI界面而相互沟通。

Java的程式将通过System.loadLibrary(*.so的档案名)这一指令要求VM去载

入所指定的C组件。如程序实现:

public class LibImgFun {

static {

System.loadLibrary("ImgFun");

}

}

这就要求VM去载入Android的libImgFun.so档案,载入后Java与libImgFun.so档案就组合起来,一起执行。当Android的VM执行到System.loadLibrary()时首先会调用JNI_OnLoad()函数,这个函数将告诉VM此C组件使用的是哪一个JNI版本,所有C组件内的初期值皆由此函数进行初始化。而当VM释放C组件的时候就会调用JNI_UnLoad()来进行善后的清除动作。

接下来就是编辑.c/.cpp文件实现本地方法,编译.c/.cpp文件生成动态库。

4.4.2 库文件编译

在工程文件夹下建立jni文件夹,然后新建Application.mk和Android.mk。内容如下:

(1)Application.mk文件:

# Build both ARMv5TE and ARMv7-A machine code.

APP_OPTIM := debug

APP_STL:=gnustl_static

APP_CPPFLAGS:=-frtti –fexceptions

APP_ABI:=armeabi-v7a armeabi

(2)Android.mk文件:

NDK_USE_CYGPATH=1

LOCAL_PATH:=$(call my-dir)

include $(CLEAR_VARS)include ../includeOpenCV.mk

ifeq ("$(wildcard $(OPENCV_MK_PATH))","")

#try to load OpenCV.mk from default install location

include $(TOOLCHAIN_PREBUILT_ROOT)/user/share/OpenCV/OpenCV.mk

else

include $(OPENCV_MK_PATH)

endif

LOCAL_LDLIBS := -llog

LOCAL_MODULE:=ImgFun

LOCAL_SRC_FILES:=ImgFun.cpp

include $(BUILD_SHARED_LIBRARY)

(3)建立接口文件函数如下例子:

JNIEXPORT jint JNICALL Java_com_FaceIdentify_LibImgFun_Recognize(JNIEnv *env,jobject obj,jstring filename)

(4)利用Cygwin编译工具编译,键入$NDK/ndk-build命令开始编译,结果如图5所示

图5 生成库文件

5 研究结果及分析

组成人脸库:将摄像头拍摄下来的人脸图像进行大小统一、图像预处理、人脸提取和边缘检测,再将预处理后的图片进行保存在人脸库中。在程序中可以实现多对一的识别。当然,

也可以实现一对一识别(将人脸库里面的人脸图像全部存储为一个人的人脸图像)。程序中设置的是3个人,每人5张图片。

读取待训练的图片:将人脸库里面的图片数据读入图像矩阵,为了减少计算量,统一将图片的大小定为50x60。分待训练图像如图6所示。

图6 部分待训练图像

人脸图像的训练阶段:根据上述PCA算法,将待训练的人脸图像数据读入人脸数据矩阵中,求解训练图像的协方差矩阵、平均图像等。从而获取训练图像的主成分。由于训练样本对应的协方差矩阵的维数是50x60的平方,直接计算特征值和特征向量的计算量太大,不可实现。一次根据SVD理论求解特征值和特征向量。取总信息量的95%以上作为主要特征值。通过计算,主要特征值个数为14个,经过线性反变换,获得特征脸。

获取待识别人脸图像:利用程序拍照功能获取当前待识别人脸图像,进过相应处理获得待识别的人脸图像。

人脸分类:利用最邻近算法求解待识别人脸图像与训练图像的距离,将待识别人脸图像归类于距离最短的人脸类别,显示识别结果。

正是对图像的预处理,才能为后期算法奠定基础、提高识别率。也正是PCA算法减少了计算量,降低了应用程序对硬件的要求,从而减少了识别所用的时间。

通过研究结果表明:该应用程序能对人脸进行正确的识别。\

6 结语

本文对Android平台做了比较详细的阐述,从人脸图像的采集、人脸库数据的存取以及对人脸图像的预处理也做了比较详细的说明。其中,人脸图像预处理从彩图的灰度化、直方图均衡化、图像的平滑滤波、图像的边沿检测等都运用了数字图像处理中的相关知识。

本文对PCA算法的原理进行了详细的阐述。算法的实现是采用Open CV中的库函数,计算出协方差矩阵的特征值和特征向量,以及特征脸空间。最后由Android NDK、JNI规则将C++程序编译成.so库文件,实现Java、C/C++的跨平台编程,最后实现了对人脸面部的识别。这也体现出Android编程平台的灵活性和开放性。

6 参考文献

[1]罗其朝. 基于Android的图像识别客户端系统研究[D].海南大学,2014.

[2]吕伟. 基于Android平台的人脸检测与识别研究及实现[D].西南交通大学,2014.

[3]孙志. 基于OpenCV的人脸识别算法实验平台研究与实现[D].吉林大学,2014.

[4]高海燕. 基于二维PCA的人脸识别算法研究[D].大连海事大学,2013.

[5]姜浩. 基于Android平台的人脸特征点定位算法的研究与实现[D].北京交通大学,2013.

[6]焦峰. 人脸图像识别算法研究[D].中国科学院研究生院(计算技术研究所),2002.

[7]汪俊. 基于Android平台的远程人脸验证系统研究与实现[D].中南大学,2013.

[8]周桐. 基于PCA的人脸识别系统的设计与实现[D].哈尔滨工业大学,2007.

[9]覃南鑫. 基于OpenCV的人脸识别系统的研究与实现[D].武汉纺织大学,2012.

[10]朱兴统,习洋洋. 基于C++和OpenCV的人脸识别系统的设计与实现[J]. 自动化与仪器仪表,2014,08:127-128+131.

图像分割算法研究与实现

中北大学 课程设计说明书 学生姓名:梁一才学号:10050644X30 学院:信息商务学院 专业:电子信息工程 题目:信息处理综合实践: 图像分割算法研究与实现 指导教师:陈平职称: 副教授 2013 年 12 月 15 日

中北大学 课程设计任务书 13/14 学年第一学期 学院:信息商务学院 专业:电子信息工程 学生姓名:焦晶晶学号:10050644X07 学生姓名:郑晓峰学号:10050644X22 学生姓名:梁一才学号:10050644X30 课程设计题目:信息处理综合实践: 图像分割算法研究与实现 起迄日期:2013年12月16日~2013年12月27日课程设计地点:电子信息科学与技术专业实验室指导教师:陈平 系主任:王浩全 下达任务书日期: 2013 年12月15 日

课程设计任务书 1.设计目的: 1、通过本课程设计的学习,学生将复习所学的专业知识,使课堂学习的理论知识应用于实践,通过本课程设计的实践使学生具有一定的实践操作能力; 2、掌握Matlab使用方法,能熟练运用该软件设计并完成相应的信息处理; 3、通过图像处理实践的课程设计,掌握设计图像处理软件系统的思维方法和基本开发过程。 2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等): (1)编程实现分水岭算法的图像分割; (2)编程实现区域分裂合并法; (3)对比分析两种分割算法的分割效果; (4)要求每位学生进行查阅相关资料,并写出自己的报告。注意每个学生的报告要有所侧重,写出自己所做的内容。 3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕: 每个同学独立完成自己的任务,每人写一份设计报告,在课程设计论文中写明自己设计的部分,给出设计结果。

仪表显示的图像识别算法研究

仪表显示的图像识别算法研究 摘要:随着社会的逐渐发展,人类的生活越来越趋于智能化。本文根据当今社会对于图像识别研究的发展现状,针对目前人们生活中人工读表的弊端,提出了通过采集仪表显示的图像并进行图像识别算法处理来达到智能自动读表的方法。 为了能快速获得采集数据,减少人们生活中繁复的人工作业。本文通过多样的图像处理来代替人眼识别图像。只需要得到采集到的图像,就可以利用计算机来进行计算和识别,得出最后的数字。本文采用了一系列的图像处理方法,包括图像的去噪,二值化分割,边缘检测和基于数学形态学的膨胀腐蚀操作等。同时通过多种尝试和比较各种方法的优缺点得到了一套简易而又完善,快速的图像识别算法。 在进行多次测试试验后,本文采用数码相机来进行图像的采集,同时经过图像预处理、图像分割、图像识别等一系列流程得出了较为完善的图像采集和识别系统,为未来信息传递智能化提供了基础,对于促进工业发展或是改善生活水平都有重要的意义。 关键词:图像预处理、二值化、边缘检测、形态学、去噪、图像分割、图像匹配 The research of image recognition displayed by the instrument Abstract: With the continuous development of society, people's lives become more and more intelligent. Based on the current development in today's society for the study of image recognition, according to the present disadvantages of manual meter reading in peop le’s lives, this page proposed the way by collecting the instruments display image and then deals it with image recognizing algorithms to achieve intelligent automatic meter. In order to quickly gather data, reducing manual work in people’s lives complicated. The page uses a series of image processing to replace human eye image recognition. Just need the collected images, we can use a computer to calculate and identify, then we will arrive at a final figure. We used a variety of image processing methods, including image denoising, thresholding segmentation, expansion of edge-detection based on mathematical morphology and corrosion and so on. And

车辆牌照图像识别算法研究与实现本科毕设论文

Q260046902 专业做论文 西南科技大学 毕业设计(论文)题目名称:车辆牌照图像识别算法研究与实现

车辆牌照图像识别算法研究与实现 摘要:近年来随着国民经济的蓬勃发展,国内高速公路、城市道路、停车场建设越来越多,对交通控制、安全管理的要求也日益提高。因此,汽车牌照识别技术在公共安全及交通管理中具有特别重要的实际应用意义。本文对车牌识别系统中的车牌定位、字符分割和字符识别进行了初步研究。对车牌定位,本文采用投影法对车牌进行定位;在字符分割方面,本文使用阈值规则进行字符分割;针对车牌图像中数字字符识别的问题,本文采用了基于BP神经网络的识别方法。在学习并掌握了数字图像处理和模式识别的一些基本原理后,使用VC++6.0软件利用以上原理针对车牌识别任务进行编程。实现了对车牌的定位和车牌中数字字符的识别。 关键词:车牌定位;字符分割;BP神经网络;车牌识别;VC++

Research and Realization of License Plate Recognition Algorithm Abstract:In recent years, with the vigorous development of the national economy,there are more and more construct in the domestic expressway, urban road, and parking area. The requisition on the traffic control, safety management improves day by day. Therefore, license plate recognition technology has the particularly important practical application value in the public security and the traffic control. In the paper, a preliminary research was made on the license location, characters segment and characters recognition of the license plate recognition. On the license location,the projection was used to locate the license plate; On the characters segmentation, the liminal rule was used to divide the characters; In order to solve the problem of the digital characters recognition in the plate, BP nerve network was used to recognize the digital characters. After studying and mastering some basic principles of the digital image processing and pattern recognition, the task of license plate recognition was programmed with VC++ 6.0 using above principles. The license location and the digital characters recognition in the license plate were implemented. Keywords: license location, characters segmentation, BP nerve network, license plate recognition, VC++

森林防火系统中图像识别算法的研究

哈尔滨工业大学工学硕士学位论文 摘要 森林是陆地生态的主体,具有很高的生态效益和经济效益。鉴于目前我国森林防火的严峻形势,必须开发有效技术解决森林火灾的监测问题。传统火灾探测器多采用单一时刻的火灾参量作为判断标准,在外界干扰下易引起频繁误报或漏报。近年来提出的基于机器视觉的火灾报警系统,利用数字图像处理技术来实现火灾自动报警。 基于火焰和烟雾的图像特征,本文研究了一种识别自然环境下火灾的机器视觉方法。火灾发生过程中,主要的图像信息是燃烧时产生的烟雾和火焰,通过对烟雾和火焰的图像信息研究发现,烟雾和火焰本身具有一定的规律性,以此为依据设计有针对性的算法,从图像中识别出烟雾和火焰,判断火灾是否发生。 首先,论文阐述了森林防火技术及图像型火灾检测技术的发展和现状,并对图像分割和滤波方法中的关键技术进行了详细介绍,在此基础上,本文分别讨论了火焰和烟雾的分割与识别。 然后,对于火焰分割,针对不同情况下的火焰研究了三种不同的分割技术,实现了火焰区域的准确分割。对于火焰的特征检测,主要进行颜色和动态特征的分析,通过建立火焰颜色模型进行颜色识别,再进一步进行火焰的四个动态特征的识别。对于烟雾分割,由于烟雾颜色的复杂性,采取颜色提取法进行分割,并运用视觉一致性的聚类算法对其进行了改进。对于烟雾的特征检测,主要进行小波特征及动态特征的分析,通过对比烟雾图像与背景图像小波系数进行小波特征识别,再对识别结果进一步进行动态特征识别,包括烟雾的不规则性和扩散性,最终确定视频中是否存在烟雾。 最后,综合以上分析,给出了森林防火系统中火灾的识别的整体流程以及火焰和烟雾分别的识别流程。 实验证明,综合火焰和烟雾的静态特征及动态特征的火灾识别方法,识别率高。在火灾检测技术中,具有较好的发展前景。 关键词火焰识别;烟雾识别;图像分割;动态特征 - I -

图像处理之三种常见双立方插值算法

图像处理之三种常见双立方插值算法 图像处理之三种常见双立方插值算法双立方插值计算 涉及到16个像素点,其中(i’, j’)表示待计算像素点在源图像 中的包含小数部分的像素坐标,dx表示X方向的小数坐标,dy表示Y方向的小数坐标。具体可以看下图: 根据上述图示与双立方插值的数学表达式可以看出,双立方插值本质上图像16个像素点权重卷积之和作为新的像素值。其中R(x)表示插值表达式,可以根据需要选择的表达式不同。常见有基于三角取值、Bell分布表达、B样条曲线表达式。1. 基于三角形采样数学公式为 最简单的线性分布,代码实现如下:[java] view plain copy private double triangleInterpolation( double f ) { f = f / 2.0; if( f < 0.0 ) { return ( f + 1.0 ); } else { return ( 1.0 - f ); } } 2.基于Bell分布采样的数学公式如下: Bell分布采样数学公式基于三次卷积计算实现。代码实现如下:[java] view plain copy private double bellInterpolation( double x ) { double f = ( x / 2.0 ) * 1.5; if( f > -1.5 && f < -0.5 ) { return( 0.5 * Math.pow(f + 1.5, 2.0)); } else if( f > -0.5 && f < 0.5 )

基于Matlab的图像边缘检测算法的实现及应用汇总

目录 摘要 (1) 引言 (2) 第一章绪论 (3) 1.1 课程设计选题的背景及意义 (3) 1.2 图像边缘检测的发展现状 (4) 第二章边缘检测的基本原理 (5) 2.1 基于一阶导数的边缘检测 (8) 2.2 基于二阶导的边缘检测 (9) 第三章边缘检测算子 (10) 3.1 Canny算子 (10) 3.2 Roberts梯度算子 (11) 3.3 Prewitt算子 (12) 3.4 Sobel算子 (13) 3.5 Log算子 (14) 第四章MATLAB简介 (15) 4.1 基本功能 (15) 4.2 应用领域 (16) 第五章编程和调试 (17) 5.1 edge函数 (17) 5.2 边缘检测的编程实现 (17) 第六章总结与体会 (20) 参考文献 (21)

摘要 边缘是图像最基本的特征,包含图像中用于识别的有用信息,边缘检测是数字图像处理中基础而又重要的内容。该课程设计具体考察了5种经典常用的边缘检测算子,并运用Matlab进行图像处理结果比较。梯度算子简单有效,LOG 算法和Canny 边缘检测器能产生较细的边缘。 边缘检测的目的是标识数字图像中灰度变化明显的点,而导函数正好能反映图像灰度变化的显著程度,因而许多方法利用导数来检测边缘。在分析其算法思想和流程的基础上,利用MATLAB对这5种算法进行了仿真实验,分析了各自的性能和算法特点,比较边缘检测效果并给出了各自的适用范围。 关键词:边缘检测;图像处理;MATLAB仿真

引言 边缘检测在图像处理系统中占有重要的作用,其效果直接影响着后续图像处理效果的好坏。许多数字图像处理直接或间接地依靠边缘检测算法的性能,并且在模式识别、机器人视觉、图像分割、特征提取、图像压缩等方面都把边缘检测作为最基本的工具。但实际图像中的边缘往往是各种类型的边缘以及它们模糊化后结果的组合,并且在实际图像中存在着不同程度的噪声,各种类型的图像边缘检测算法不断涌现。早在1965 年就有人提出边缘检测算子,边缘检测的传统方法包括Kirsch,Prewitt,Sobel,Roberts,Robins,Mar-Hildreth 边缘检测方法以及Laplacian-Gaussian(LOG)算子方法和Canny 最优算子方法等。 本设计主要讨论其中5种边缘检测算法。在图像处理的过程需要大量的计算工作,我们利用MATLAB各种丰富的工具箱以及其强大的计算功能可以更加方便有效的完成图像边缘的检测。并对这些方法进行比较

数据隐藏课程设计论文——图像的信息隐藏检测算法和实现

中国科学技术大学继续教育学院课程设计 论文报告 论文题目:图像的信息隐藏检测算法和实现学员姓名:黄琳 学号:TB04202130 专业:计算机科学与技术 指导教师: 日期:2007年1月20日

图像的信息隐藏检测算法和实现 [摘要] Information hiding analysis is the art of detecting the message's existence or destroying the stega nographic cover in order to blockade the secret communication. And information Information hiding includes steganography and digital watermark. The application of steganography can be traced to ancient time, and it is also an n hiding detection is the very first step in information hiding analysis. Firstlly, architectonic analysis about information hiding detection is proposed, including the analysis of digital image characteristics, image based detecting algorithms and some problems in its realization. Secondly, many detecting algorithms are introduced with theoretical analyses and experimental results in details. Thirdly, two applications of detecting technology are put forward. Finally, a detecting model used in Internet is discussed [关键词]安全信息隐藏检测 1. 引言 数字图像的信息隐藏技术是数字图像处理领域中最具挑战性、最为活跃的研究课题之一。本文概述了数字图像的信息隐藏技术,并给出了一个新的基于彩色静止数字图像的信息隐藏算法。 数字图像可分为静止图像和动态图像两种,后者一般称为视频图像。视频图像的每一帧均可看作是一幅静止图像,但是这些静止图像之间并不是相互孤立的,而是存在时间轴上的相关性。静止图像是像素(Pixel)的集合,相邻像素点所对应的实际距离称为图像的空间分辨率。根据像素颜色信息的不同,数字图像可分为二值图像、灰度图像以及彩色图像。数字图像的最终感受者是人的眼睛,人眼感受到的两幅质量非常相同的数字图像的像素值可能存在很大的差别。这样,依赖于人的视觉系统(Human Visual System,HVS)的不完善性,就为数字图像的失真压缩和信息隐藏提供了非常巨大的施展空间。 信息隐藏与信息加密是不尽相同的,信息加密是隐藏信息的内容,而信息隐藏是隐藏信息的存在性,信息隐藏比信息加密更为安全,因为它不容易引起攻击者的注意。 2. 信息隐藏技术综述 2.1信息隐藏简介 信息隐藏(Information Hiding),也称作数据隐藏(Data Hiding),或称作数字水印(Digital Watermarking)。简单来讲,信息隐藏是指将某一信号(一般称之为签字信号,Signature Signal)嵌入(embedding)另一信号(一般称之为主信号,Host Signal,或称之为掩护媒体,cover-media)的过程,掩护媒体经嵌入信息后变成一个伪装媒体(stegano-media)。这一嵌入过程需要满足下列条件:

图像识别技术浅析

图像识别技术浅析 Analysis of Image Recognition Technology 刘峰伯软件学院2010544029 【摘要】:本文描述了图像识别系统的结构与工作原理,在对图像预处理、特征提取、分类、图像匹配算法进行深入研究和分析的基础上,分析和比较了各种算法的优缺点,并讨论了其中的关键技术。 【关键词】:图像识别;预处理;特征提取;匹配 【Abstract】This paper describes the structure and working principle of an image recognition system. The advantages and disadvantages of various a1gorithms are compared on the basis of in-depth analysis of the image pre-processing, feature extraction, classification and image matching algorithms, and discussed the key technology. 【Key Word】Image Recognition;Pre-Processing;Feature Extraction;Matchi ng. 一、引言 图像识别,是利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对像的技术。随着计算机技术与信息技术的发展,图像识别技术获得了越来越广泛的应用。例如医疗诊断中各种医学图片的分析与识别、天气预报中的卫星云图识别、遥感图片识别、指纹识别、脸谱识别等,图像识别技术越来越多地渗透到我们的日常生活中。 二、图像识别系统 1、概述 自动图像识别系统的过程分为五部分:图像输入、预处理、特征提取、分类和匹配,其中预处理又可分为图像分割、图像增强、二值化和细化等几个部分。 (1)图像输入 将图像采集下来输入计算机进行处理是图像识别的首要步骤。 (2)预处理 为了减少后续算法的复杂度和提高效率,图像的预处理是必不可少的。其中

常用算法简介

机器视觉中常用图像处理算法 机器视觉就是用机器代替人眼来做测量和判断。机器视觉系统是指通过机器视觉产品(即图像摄取装置,分CMOS 和CCD 两种)将被摄取目标转换成图像信号,传送给专用的图像处理系统,得到被摄目标的形态信息,根据像素分布和亮度、颜色等信息,转变成数字化信号;图像系统对这些信号进行各种运算来抽取目标的特征,进而根据判别的结果来控制现场的设备动作。机器视觉是使用计算机(也许是可移动式的)来模拟人的视觉,因此模拟才是计算机视觉领域的最终目标,而真正意义上的图像处理侧重在“处理”图像:如增强,还原,去噪,分割,等等,如常见的Photoshop就是功能强大的图像处理软件。大部分的机器视觉,都包含了图像处理的过程,只有图像处理过后,才能找到图像中需要的特征,从而更进一步的执行其它的指令动作。在我们实际工程应用中研究的一些图像算法,实际上是属于机器视觉,而不是纯粹的图像处理。总的来说,图像处理技术包括图像压缩,增强和复原,匹配、描述和识别3个部分,在实际工程中,这几块不是独立的,往往是环环相扣、相互辅助来达到实际效果。接下来简单介绍一下机器视觉中常用的图像处理算法。 一、滤波 滤波一般在图像预处理阶段中使用,改善图像信息,便于后续处理,当然,这不是绝对的,在图像算法过程中如果有需要,随时可以进行滤波操作。比较常用的滤波方法有以下三种: 1、均值滤波 均值滤波也称为线性滤波,其采用的主要方法为邻域平均法。线性滤波的基本原理是用均值代替原图像中的各个像素值,即对待处理的当前像素点(,) x y,选择一个模板,该模板由其近邻的若干像素组成,求模板中所有像素的均值,再把该均值赋予当前像素点(,) g x y,即 x y,作为处理后图像在该点上的灰度值(,) 波方法可以平滑图像,速度快,算法简单。但是无法去掉噪声,只能减弱噪声。 2、中值滤波

MATLAB中GUI在图像处理应用中的设计(包括各种算法)

用MATLAB 进行图像处理算法的界面设计

目录 1.设计目的 (3) 2.题目分析 (3) 3.总体设计 (3) 4.具体设计 (5) 5.结果分析 (34) 6.心得体会 (34) 7.附录代码 (36)

1、设计目的:综合运用MATLAB工具箱实现图像处理的GUI程序设计,利用MATLAB图像处理工具箱,设计和实现自己的Photoshop 。 2、题目分析 利用matlab的GUI程序设计一个简单实用的图像处理程序。该程序应具备图像处理的常用功能,以满足用户的使用。现设计程序有以下基本功能: 1)图像的读取和保存。 2)设计图形用户界面,让用户能够对图像进行任意的亮度和对比度变化调整,显示和对比变换前后的图像。 3)设计图形用户界面,让用户能够用鼠标选取图像感兴趣区域,显示和保存该选择区域。 4)编写程序通过最近邻插值和双线性插值等算法将用户所选取的图像区域进行放大和缩小整数倍的操作,并保存,比较几种插值的效果。 5)图像直方图统计和直方图均衡,要求显示直方图统计,比较直方图均衡后的效果。 6)能对图像加入各种噪声,并通过几种滤波算法实现去噪并显示结果。 7)额外功能。 3、总体设计

图一 软件的总体设计界面布局如上图所示,主要分为2个部分:显示区域与操作区域。显示区域:显示载入原图,以及通过处理后的图像。 操作区域:通过功能键实现对图像的各种处理。 在截图中可见,左部为一系列功能按键如“还原”、“撤销”、“截图”等等;界面正中部分为图片显示部分,界面中下方为系列功能切换选择组。 设计完成后运行的软件界面如下: 图二 与图一先比,运行后的界面更为简洁。 利用“编辑”菜单可调出相应的功能键。例如:

最新数字图像处理算法实现精编版

2020年数字图像处理算法实现精编版

数字图像处理算法实现 ------------编程心得(1) 2001414班朱伟 20014123 摘要: 关于空间域图像处理算法框架,直方图处理,空间域滤波器算法框架的编程心得,使用GDI+(C++) 一,图像文件的读取 初学数字图像处理时,图像文件的读取往往是一件麻烦的事情,我们要面对各种各样的图像文件格式,如果仅用C++的fstream库那就必须了解各种图像编码格式,这对于初学图像处理是不太现实的,需要一个能帮助轻松读取各类图像文件的库。在Win32平台上GDI+(C++)是不错的选择,不光使用上相对于Win32 GDI要容易得多,而且也容易移植到.Net平台上的GDI+。 Gdiplus::Bitmap类为我们提供了读取各类图像文件的接口, Bitmap::LockBits方法产生的BitmapData类也为我们提供了高速访问图像文件流的途径。这样我们就可以将精力集中于图像处理算法的实现,而不用关心各种图像编码。具体使用方式请参考MSDN中GDI+文档中关于Bitmap类和BitmapData类的说明。另外GDI+仅在Windows XP/2003上获得直接支持,对于Windows 2000必须安装相关DLL,或者安装有Office 2003,Visual Studio 2003 .Net等软件。 二,空间域图像处理算法框架 (1) 在空间域图像处理中,对于一个图像我们往往需要对其逐个像素的进行处理,对每个像素的处理使用相同的算法(或者是图像中的某个矩形部分)。即,对于图像f(x,y),其中0≤x≤M,0≤y≤N,图像为M*N大小,使用算法

常用图像处理算法

8种常用图像处理算法(函数)------以下所有函数均放在https://www.wendangku.net/doc/958712634.html,p下 1.图像镜像 void CCimageProcessingView::OnGeomTrpo() { //获取指向文档的指针 CCimageProcessingDoc* pDoc = GetDocument(); //指向DIB的指针 LPSTR lpDIB; //锁定DIB lpDIB = (LPSTR) ::GlobalLock((HGLOBAL) pDoc->GetHDIB()); //设置光标状态为等待状态 BeginWaitCursor(); //调用VertMirror函数镜像图象 if (VertMirror(lpDIB)) { //设置文档修改标记 pDoc->SetModifiedFlag(TRUE); //更新所有视图 pDoc->UpdateAllViews(NULL); } else { //提示信息 MessageBox("实现图象镜像失败!"); } //解除锁定 ::GlobalUnlock((HGLOBAL) pDoc->GetHDIB()); //结束光标等待状态 EndWaitCursor(); } * 函数名称: * * VertMirror() * * 参数: * * LPSTR lpDIB //指向源DIB图像指针 * * 返回值: * * BOOL //镜像成功返回TRUE,否则返回FALSE。 *

* 说明: * * 该函数用来实现DIB图像的垂直镜像。 * BOOL WINAPI VertMirror(LPSTR lpDIB) { //原图象宽度 LONG lWidth; //原图象高度 LONG lHeight; //原图象的颜色数 WORD wNumColors; //原图象的信息头结构指针 LPBITMAPINFOHEADER lpbmi; //指向原图象和目的图象的像素的指针 LPBYTE lpSrc,lpDst; //平移后剩余图像在源图像中的位置(矩形区域) CRect rectSrc; //指向原图像像素的指针 LPBYTE lpDIBBits; //指向复制图像像素的指针 LPBYTE lpNewDIBBits; //内存句柄 HLOCAL h; //循环变量 LONG i; //图像每行的字节数 LONG lLineBytes; //获取图象的信息头结构的指针 lpbmi=(LPBITMAPINFOHEADER)lpDIB; //找到图象的像素位置 lpDIBBits=(LPBYTE)::FindDIBBits(lpDIB); //获取图象的宽度 lWidth=::DIBWidth(lpDIB); //获取图象的高度 lHeight=::DIBHeight(lpDIB); //获取图象的颜色数 wNumColors=::DIBNumColors(lpDIB); //计算图像每行的字节数 lLineBytes = WIDTHBYTES(lWidth *(lpbmi->biBitCount)); // 暂时分配内存,以保存新图像 h= LocalAlloc(LHND, lLineBytes); // 分配内存失败,直接返回 if (!h)

智能图像处理算法结合分析

图像增强技术研究 1 图像增强概述 1.1 图像增强的定义 图像增强是指按特定的需要突出一幅图像中的某些信息,同时削弱或去除某些不需要的信息的处理方法,也是提高图像质量的过程。图像增强的目的是使图像的某些特性方面更加鲜明、突出,使处理后的图像更适合人眼视觉特性或机器分析,以便于实现对图像的更高级的处理和分析。图像增强的过程往往也是一个矛盾的过程:图像增强希望既去除噪声又增强边缘。但是,增强边缘的同时会同时增强噪声,而滤去噪声又会使边缘在一定程度上模糊,因此,在图像增强的时候,往往是将这两部分进行折中,找到一个好的代价函数达到需要的增强目的。传统的图像增强算法在确定转换函数时常是基于整个图像的统计量,如:ST转换,直方图均衡,中值滤波,微分锐化,高通滤波等等。这样对应于某些局部区域的细节在计算整幅图的变换时其影响因为其值较小而常常被忽略掉,从而局部区域的增强效果常常不够理想,噪声滤波和边缘增强这两者的矛盾较难得到解决。 1.2 常用的图像增强方法 (1)直方图均衡化 有些图像在低值灰度区间上频率较大,使得图像中较暗区域中的细节看不清楚。这时可以通过直方图均衡化将图像的灰度围分开,并且让灰度频率较小的灰度级变大,通过调整图像灰度值的动态围,自动地增加整个图像的对比度,使图像具有较大的反差,细节清晰。 (2)对比度增强法 有些图像的对比度比较低,从而使整个图像模糊不清。这时可以按一定的规则修改原来图像的每一个象素的灰度,从而改变图像灰度的动态围。

(3)平滑噪声 有些图像是通过扫描仪扫描输入、或传输通道传输过来的。图像中往往包含有各种各样的噪声。这些噪声一般是随机产生的,因此具有分布和大小不规则性的特点。这些噪声的存在直接影响着后续的处理过程,使图像失真。图像平滑就是针对图像噪声的操作,其主要作用是为了消除噪声,图像平滑的常用方法是采用均值滤波或中值滤波,均值滤波是一种线性空间滤波,它用一个有奇数点的掩模在图像上滑动,将掩模中心对应像素点的灰度值用掩模所有像素点灰度的平均值代替,如果规定了在取均值过程中掩模各像素点所占的权重,即各像素点所乘系数,这时就称为加权均值滤波;中值滤波是一种非线性空间滤波,其与均值滤波的区别是掩模中心对应像素点的灰度值用掩模所有像素点灰度值的中间值代替。 (4)锐化 平滑噪声时经常会使图像的边缘变的模糊,针对平均和积分运算使图像模糊,可对其进行反运算采取微分算子使用模板和统计差值的方法,使图像增强锐化。图像边缘与高频分量相对应,高通滤波器可以让高频分量畅通无阻,而对低频分量则充分限制,通过高通滤波器去除低频分量,也可以达到图像锐化的目的。 1.3图像增强的现状与应用 计算机图像处理的发展历史不长,但已经引起了人们的重视。图像处理技术始20世纪60年代,由于当时图像存储成本高,处理设备造价高,因而其应用面很窄。1964年美国加州理工学院的喷气推进实验室,首次对徘徊者7号太空飞船发回的月球照片进行了处理,得到了前所未有的清晰图像,这标志着图像处理技术开始得到实际应用。70年代进入发展期,出现cr和卫星遥感图像,对图像处理的发展起到了很好的促进作用。80年代进入普及期,此时微机己经能够承担起图形图像处理的任务。VLSI的出现更使得处理速度大大提高,其造价也进一步降低,极大的促进了图像处理系统的普及和应用。90年代是图像处理技术实用化时期,图像处理的信息量巨大,对处理的速度要求极高。21世纪的图像处理技术要向高质量化方面发展,实现图像的实时处理,采用数字全息技术使图像包含最为完整和丰富的信息,实现图像的智能生成、处理、理解和识别[7]。

车辆牌照图像识别算法的实现

本科毕业设计(论文) 车辆牌照图像识别算法的实现(题目二号宋体)学院名称:电气信息工程学院(四号宋体) 专业:通信工程 班级:通信 学号: 姓名:张 指导教师姓名:孙 指导教师职称:副教授 二〇一年六月 [空一行、字号小] (中文题目为号黑体居中) [空一行、字号小] 摘要:××××××××××××××××××(字左右,小四号宋体)×××××××××××××××××…… 关键词:×××;××××;×××××;×××(个,小四号宋体) 摘要应回答好个方面问题: ①(直接写出研究目的); ②(简述过程和方法); ③(罗列主要结果或结论); ④(通过②和③两方面内容具体展示文中创新之处)。

(号,居中对齐) [空一行、字号小] :××××××(小号)××××××××××××××××××××××……:×××;××××;×××××;×××(小号) 要求和中文摘要对应。 中实词首字母要大写。 一般采用第三人称、单数、现在时。

目录(号黑体居中) [空一行、字号小] 前言(号黑体)........................................ 错误!未指定书签。第章章标题(号黑体)................................................. 节标题(小宋体,倍行距,内侧缩进字符)............................ 小节标题(小宋体,倍行距, 内侧缩进字符)....................... 小节标题....................................................... 节标题 小节标题....................................................... 小节标题....................................................... 小节标题....................................................... 第章章标题............................................................. 节标题 小节标题....................................................... 小节标题....................................................... 节标题 小节标题....................................................... 小节标题....................................................... ................................(略) 参考文献(号黑体)...................................................... 致谢(号黑体) .......................................................... 附录标题(可选)....................................................... 附录标题(可选)....................................................... 注:目录中的内容一般列出“章”、“节”、“小节”三级标题即可。

图 像 处 理 算 法

神奇的图像处理算法(Amazing algorithms to enhance or transform images) 1 神奇的图像处理算法? 这是利用数学算法,进行高难度图像处理的一个例子。事实上,图像处理的数学算法,已经发展到令人叹为观止的地步。 Scriptol列出了几种神奇的图像处理算法,让我们一起来看一下。 1.1 像素图生成向量图的算法 数字时代早期的图片,分辨率很低。尤其是一些电子游戏的图片,放大后就是一个个像素方块。Depixelizing算法可以让低分辨率的像素图转化为高质量的向量图。1.2 黑白图片的着色算法让老照片自动变成彩色的算法。1.3 消除阴影的算法 不留痕迹地去掉照片上某件东西的阴影的算法。1.4 HDR照片的算法 所谓"HDR照片",就是扩大亮部与暗部的对比效果,亮的地方变得非常亮,暗的地方变得非常暗,亮暗部的细节都很明显。 实现HDR的软件有很多,这里推荐G'MIC。它是GIMP图像编辑软件的一个插件,代码全部开源。1.5 消除杂物的算法 所谓"消除杂物",就是在照片上划出一块区域,然后用背景自动填补。Resynthesizer可以做到这一点,它也是GIMP的一个插件。 1.6 自动合成照片的算法 根据一张草图,选择原始照片,然后把它们合成在一起,生成新

照片。这是清华大学的科研成果。1.7 美容算法 ? 自动对容貌进行"美化"的算法。2 Amazing algorithms to enhance or transform images List of algorithms for image processing whose level of intelligence avoids infinitely complex tasks. From the simplest to more complex ones.2.1 Depixelizing images Starting from a raster image that is made of large squares, we arrive at a clearer picture,? as if one could a posteriori change the definition of the screen on which it was drawn . This can be very useful if one wants to convert an old game on a modern platform such as? Canvas or a smartphone. See article depixelizing. Implemented by Scale2x (on Sourceforge).? HQX is a similar super resolution command line tool to enlarge images. 2.2 Color a black and white image This technique is so well controlled that we can now see in color old black and white films.

图像处理基本算法

图像处理,是对图像进行分析、加工、和处理,使其满足视觉、心理以及其他要求的技术。图像处理是信号处理在图像域上的一个应用。目前大多数的图像是以数字形式存储,因而图像处理很多情况下指数字图像处理。此外,基于光学理论的处理方法依然占有重要的地位。 图像处理是信号处理的子类,另外与计算机科学、人工智能等领域也有密切的关系。 传统的一维信号处理的方法和概念很多仍然可以直接应用在图像处理上,比如降噪、量化等。然而,图像属于二维信号,和一维信号相比,它有自己特殊的一面,处理的方式和角度也有所不同。 目录 [隐藏] * 1 解决方案 * 2 常用的信号处理技术 o 2.1 从一维信号处理扩展来的技术和概念 o 2.2 专用于二维(或更高维)的技术和概念 * 3 典型问题 * 4 应用 * 5 相关相近领域 * 6 参见 [编辑] 解决方案 几十年前,图像处理大多数由光学设备在模拟模式下进行。由于这些光学方法本身所具有的并行特性,至今他们仍然在很多应用领域占有核心地位,例如全息摄影。但是由于计算机速度的大幅度提高,这些技术正在迅速的被数字图像处理方法所替代。 从通常意义上讲,数字图像处理技术更加普适、可靠和准确。比起模拟方法,它们也更容易实现。专用的硬件被用于数字图像处理,例如,基于流水线的计算机体系结构在这方面取得了巨大的商业成功。今天,硬件解决方案被广泛的用于视频处理系统,但商业化的图像处理任务基本上仍以软件形式实现,运行在通用个人电脑上。 [编辑] 常用的信号处理技术 大多数用于一维信号处理的概念都有其在二维图像信号领域的延伸,它们中的一部分在二维情形下变得十分复杂。同时图像处理也具有自身一些新的概念,例如,连通性、旋转不变性,等等。这些概念仅对二维或更高维的情况下才有非平凡的意义。 图像处理中常用到快速傅立叶变换,因为它可以减小数据处理量和处理时间。 [编辑] 从一维信号处理扩展来的技术和概念 * 分辨率(Image resolution|Resolution) * 动态范围(Dynamic range)

相关文档