How to detect faces without using vision.Cas​cadeObject​Detector

I am new in matlab I am trying to detect faces without using built in functions but I not able to do this any help.

Respuestas (1)

yanqi liu
yanqi liu el 28 de Mzo. de 2022
yes,sir,may be use ycbcr color segment to identify face as simple method
if possible,can you upload your image to analysis?

4 comentarios

yes,sir,use simple ycbcr process,such as
I = imread('https://www.mathworks.com/matlabcentral/answers/uploaded_files/943314/image.png');
J = rgb2ycbcr(I);
y = J(:,:,1);
[rows, cols] = size(y);
m = [120 130]';
sig = [70 40
40 200];
cbcr = zeros(2,1);
mask=zeros(rows,cols);
for i = 1:rows
for j =1:cols
cbcr(1) = J(i,j,3);
cbcr(2) = J(i,j,2);
P(i,j) = exp(-0.5*((cbcr-m)')*(inv(sig))*(cbcr-m));
end
end
mask = P < 1e-2;
bw = imopen(mask, strel('disk', 15));
bw = imclose(bw, strel('disk', 3));
bw = imfill(bw, 'holes');
bw = bwareaopen(imopen(bw, strel('disk', 25)), 2e4);
stats = regionprops(bw);
figure; imshow(I, []);
for i = 1 : length(stats)
hold on; rectangle('position', stats(i).BoundingBox, 'EdgeColor', 'g', 'LineWidth', 2)
end
Thank you for helping but this only work for this image, if I change the image it does not work properly.
yes,sir,if use different image,may be check
such as
im = imresize(I, 0.3, 'bilinear');
detector = mtcnn.Detector("MinSize", 15, "MaxSize", 308, "PyramidScale", 5);
[bboxes, scores, landmarks] = detector.detect(im);
displayIm = insertObjectAnnotation(im, "rectangle", bboxes, scores, "LineWidth", 2);
imshow(displayIm)
hold on
for iFace = 1:numel(scores)
scatter(landmarks(iFace, :, 1), landmarks(iFace, :, 2), 'filled');
end

Iniciar sesión para comentar.

Categorías

Más información sobre Image Processing Toolbox en Centro de ayuda y File Exchange.

Preguntada:

el 27 de Mzo. de 2022

Comentada:

el 29 de Mzo. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by