求MATLAB大神翻译一下这个人脸识别程序,以及大段落分别要要实现什么功能?虽然有的有注释,但是不全。

2024年11月22日 02:05
有2个网友回答
网友(1):

% % % % %的RGB图像
我= imread(“touxiang.jpg”);
我= rgb2gray(我);
BW = im2bw(I);%二值化
图中,imshow(BW)

[n1n2]=大小(BW);
r =地板(n1/10);%分成十块,行
c =地板(n2/10);%分成十块,列%取最近的较小整数
x1 = 1;x2 = r %对应行初始化
s = r * c;%块面积

市中心= 1:10 %以图像尺寸百分之一的窗口大小滑动
日元= 1;y2 = c;%对应列初始化
j = 1:10
如果(y2 < = c | y2 > = 9 * c)|(x1 = = 1 | x2 = = r * 10)%这一判断条件就是把图像最外围全部归零
loc =找到(BW(x1,x2,y1,y2)= = 0);%找到查找矩阵中满足条件的位置,[r、c、v]=找到(X),r、c为不为零元素的行,列v为其数值,X也可由逻辑表达式替代
%这里loc应该是BW窗口中的为黑像素的个数,就是后面的o值,在下面的如果中做了一个条件判断
[o p]=大小(loc);
公关= o * 100 / s;%黑色像素所占的比例数
如果公关< = 100
BW(x1,x2,y1,y2)= 0;
r1 = x1,x2 r2 =;s1 = y1,s2 =日元;
pr1 = 0;
结束
imshow(BW);
结束
日元= y1 + c;%列跳跃
y2 = y2 + c;%列跳跃
结束

x1 = x1 + r;%行跳跃
x2 = x2 + r;%行跳跃
结束
图中,imshow(BW)

L = bwlabel(BW,8);;%标记图像中的八连通区域
的边界框(BB = regionprops(L’,大小));%区域特征,BoundingBox是指包围每个区域的最小矩形,数目与数字相等
%区域特征还包含区域,即每个区域的像素数重心
%即每个区域的重心
位= struct2cell(BB);%此函数是将结构体中各变量的值分别提取出了组成一个元胞矩阵
BB2组= cell2mat(位);%将单个的元胞矩阵组成一个单一矩阵

[s1s2]=大小(BB2组);%因为BB矩阵存储的是矩形的对角坐标,是四位,所以又元组矩阵转变成单一矩阵
mx = 0;
叉= 3:4:s2 - 1%每四个数字对应一个矩形,matlab中的数组下标都是从1开始
p = BB2组(k)* BB2组(k + 1);%宽*高
如果p > mx &(BB2组(k)/ BB2组(1、k + 1))< 1.8%如果满足面积块大,而且宽/高< 1.8

mx = p;
j = k;
结束
结束
图中,imshow(我);
holdon;
矩形(“位置”,[BB2组(1、j-2)BB2组(j - 1),BB2组(j),BB2组(1 + 1)]、“EdgeColor”、“r”)

网友(2):

帅哥把分给我吧,我私信你