用Matlab实现的人脸定位,急,期待高手解答

用Matlab实现的人脸定位,急,期待高手解答,第1张

大概看了一下,这个程序编得一团糟,肯定有问题~~~~看完头两个IF我已经疯了。编算法人的思路我说一下你就明白了。

读进一幅图,二进制化,也就是说比如200X120的矩阵,只有黑白,要么1,要么0

用网格把它打成10X10的格子图,每格就有个20X12的小矩阵。然后

for i = 1:10

for j = 1:10

这两个FOR就是对这100个格子逐个进行分析,从格子1,一直到格子100,但实际上后面就发现是对对这100个格子的边缘格子进行分析 ,中间不动(就是假设 边缘最没用,脸不会出现在那儿,能扔就扔掉)

if (y2<=c | y2>=9c) | (x1==1 | x2==r10) % 保证是在边缘的格子里面

loc=find(BW(x1:x2, y1:y2)==0); % 这个格子(矩阵)里,有多少值为0的元素,即为背景元素,没用的,不是人脸。(所以这段 程序开头写了“将背景部分弱化”。

[o p]=size(loc); % 噢,找到了这么多个0

pr=o100/s;

% 用pr值 来判断是否应该将这整个格子全部值 赋为0,比如一个格子里面只有几个1(比如几根头发),其它全是无用的信息0,那么干脆就把这个格子全部变成0,免得影响判断。pr的定义是有问题的,因为o永远小于s(你可以自己算算),所以所有的边缘格都会强行被赋为0,就是“全黑了”。

if pr<=100

BW(x1:x2, y1:y2)=0;

r1=x1;r2=x2;s1=y1;s2=y2; % 这句话P用没有,整个程序前后都没出现r1,r2,s1,s2,在这儿定义有什么用?

pr1=0; %同样是句P话,其他地方都没出现过pr1

end

end

y1=y1+c;

y2=y2+c;

end

x1=x1+r;

x2=x2+r;

然后这几句就是格子赋值 结束,继续前进,找下一个格子呗,又回到初始。。。

所以,上面这段程序,什么人脸不人脸检测的,就是把边缘全部变黑而己……

所以下面我也看不进去了。。。

补充:

还是说完吧,后面一段程序,其实就是把所有变黑的边缘的边界给勾了出来。没有任何新东西。。。

所以你这段程序,就是先把边缘全部抹黑,然后勾出这个边缘的边界,画出来,就行了。没有任何“人脸定位”的东西,就是假设人脸在图的中间,边缘没有任何信息。。。仅此而己~~~

假设图像名为:Face001tif, Face002tif, Face003tif

N 为总图像数

你是指将二维图像压缩成一列来表示?图像是灰度图还是彩色图?

大致如下:

Temp = [];

for i = 1:N

fileName = sprintf('Face00%dtif', i);

I = imread(fileName);

Temp = [Temp; I(:)];

end

>

以上就是关于用Matlab实现的人脸定位,急,期待高手解答全部的内容,包括:用Matlab实现的人脸定位,急,期待高手解答、人脸识别中,如何用MATLAB编程将许多人脸图像一次读入,并且每一列代表一幅图像,谢谢、求:用Matlab实现人脸识别的完整程序。最好带有图片库。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10170760.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-06
下一篇2023-05-06

发表评论

登录后才能评论

评论列表(0条)

    保存