您的位置:

matlab人脸java(人脸识别MATLAB)

本文目录一览:

matlab 人脸检测

其实你可以这样,比如100张图,人脸部分放在前50张,非人脸部分在后50张,然后训练出来有100个特征,然后检测的时候用最小距离法比较,然后索引,把距离从小到大排列,比如跟第1张差6 ,2差3 ...... 那排列为

2 3

1 6

...........

取最小那个就是2,那确定测试的图片是人脸(前50为人脸)

数字图像处理,Java VC++ matlab 哪个更适合?

Java不推荐,Matlab和VC都是可以的。

Matlab有强大的image

processing工具箱,入门较快,能对你的算法进行快速仿真,呈现。但是matlab只能做研究用,实际工程中最终都要转为c或vc。

直接用VC++也可以,下个opencv包,是个强大的图像处理VC++开源库,可快速入门,对于基本处理算法和一些简单工程都有源代码,比如人脸检测,人脸识别等。

希望你能找到适合自己的工具。

急用MATLAB进行人脸识别的算法修改和解释

哎,看在100分的面子上。。。。

images=[];%([]是什么意思?)

这个只不过是将images初始化为一个空矩阵而已。每度一幅图像,它都将这幅图像reshape成一个列向量,然后存入images中,最终,读了N幅图像,images就有N列,每一列都是一幅图像。

(原算法是有两种方法求特征向量,一种奇异值分解,另一种不用奇异值分解,我这里选用没有用奇异值分解方法,但为什么还是按照奇异值分解了,而且莫名出现一个S的变量,而且这段的公式我不理解)

这个问题是你人脸识别的算法问题,我不想研究。。。。

c=ceil(M/r);%正无穷大方向取整(M/r是什么意思?为什么要这么做)

这个为什么要这么做,是为了后面subplot画图来计算到底需要几行几列的。这个对你的程序没有任何本质的影响。这段程序就是为了把所有的人脸图在一幅图上分块显示出来。从subplot(r,c,ii);

这句可以看出,r子图像的是行数,c是列数。那么M就是图像数了。。。

colormap('gray');axis equal tight off;%返回线性灰度色图(这段不理解)

这段是一系列画图参数的操作: colormap('gray');是让你的图是灰度图。axis equal是让横纵坐标单位一致。tight是限制画图的取值范围。off是去掉坐标显示。这些都是控制显示效果的。完全无关紧要。至于具体效果,你可以把这句去掉看看显示效果,然后在加上这句再看看效果有什么变化就知道了。

%对于其他人脸图;按前面计算出的特征向量重构人脸图像(这段是说什么?)

很明显的,这个是用你这次这20个训练样本的结果来重构以前的人脸数据。

基本就是这么回事了。但是人脸特征识别我没研究过,你这个程序的算法非常的简单,至于为什么通过几个特征值分析就好用那我就不知道了,因为我没研究过这个。

菜鸟级提问:Matlab 和 JAVA 的比较

matlab是比较好的,使你只专注于算法本身,而且它有大量的现成的函数和图像处理工具