Solicite a MATLAB que traduzca este programa de reconocimiento facial. ¿Qué funciones se deben lograr en cada sección? Algunas están comentadas, pero incompletas.

Imagen RGB

I = estoy leído(" touxiang . jpg ");

I = rgb2gray(I

BW = im2bw(I);

En la figura, imshow(BW)

[n1n2]=size(BW);

R = piso(n 1/10); Diez bloques, ¿vale?

C = Piso (N2/10); dividido en diez bloques, toma el número entero más pequeño más cercano.

x 1 = 1; es 1 del tamaño de la imagen.

yen = 1; y2 = c; inicialización de la columna correspondiente

j = 1:10

if (y2

Loc = encontrado (BW(x1, x2, y1, y2) = = 0 encontrar la posición que satisface la condición en la matriz de búsqueda, [r, c, v] = encontrar (x), donde r y c contienen elementos distintos de cero; filas, la columna v es su valor numérico, x también se puede reemplazar por una expresión lógica.

La ubicación aquí debe ser el número de píxeles negros en la ventana BW, que es el valor de O a continuación. un juicio condicional en if

[o p]=size(loc);

PR = o * 100/s el porcentaje de píxeles negros

If. PR

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

r1 = x1, x2 R2 =; >pr 1 = 0;

Fin

im show(BW);

Fin

yen = y 1 salto de columna;

y2 = y2 c; salto de columna

fin

x 1 = x 1 r; salto de fila

x2 = x2 r; Salto de línea

Fin

En la imagen, imshow(BW)

L = bwlabel(BW, 8);; En la imagen de la etiqueta El cuadro delimitador de ocho regiones conectadas

(BB = regionprops(L ', tamaño) característica del área, BoundingBox se refiere al rectángulo más pequeño que rodea cada área y su número es igual al número.

p >

La característica de región también contiene la región, es decir, el centro de gravedad del píxel de cada región.

bit = struct 2 cell(BB) La función extrae el valor de cada variable en la estructura. , formando una matriz de celda.

BB2 group = cell2mat(bits); convierte una matriz de celda única en una matriz única.

[s1s2] = tamaño (grupo BB2); La matriz BB almacena las coordenadas diagonales del rectángulo, que son de cuatro bits, la matriz tupla se convierte en una matriz única

MX = 0

Cross = 3:4: Cada cuatro números en s2-1 corresponden a un rectángulo, y todos los subíndices de la matriz en matlab comienzan desde 1.

P = BB2Group(k)*BB2Group(k 1); Ancho*Alto

Si p > mx amp(BB2Group(k)/BB2Group(1,K 1)) < 1.8 Si el área es grande, el ancho/alto es

MX = p;

j = k;

Fin

Fin

Estoy mostrando(i) en la imagen;

holdon

Rectangle("position",[BB2 group(1,j-2)BB2 group(j -1), grupo BB2 (j), grupo BB2 (1 1)], "EdgeColor", "R")