обнаружение лица и сделать его размытым

У меня проблемы с пониманием кода о Matlab

a = imread('Untitled2.png');
faceDetector = vision.CascadeObjectDetector;
bbox=step(faceDetector,a);
for j=1:size(bbox)
    xbox=bbox(j,:);
    subImage = imcrop(a, xbox);
    H = fspecial('disk',10);
    blurred = imfilter(subImage,H);
    a(xbox(2):xbox(2)+xbox(4),xbox(1):xbox(1)+xbox(3),1:end) = blurred; 
end
imshow(a);

Может ли кто-нибудь объяснить мне, что делает цикл for? Я попытался использовать свой собственный метод, чтобы размыть лицо, которое я обнаружил, но мне просто удалось обрезать лицо и размыть обрезанное изображение, но я не знаю, как вернуть его к исходному изображению. Затем я попытался использовать приведенный выше исходный код, который я получил из Интернета, и исходный код в Интернете может размыть лицо, и я не могу понять логику цикла for. Пожалуйста, объясните мне, Т^Т.

Спасибо.


person johnnyhill    schedule 13.10.2015    source источник


Ответы (1)


Как вы можете видеть здесь:

BBOX = step(detector,I) возвращает BBOX, матрицу размера M на 4, определяющую M ограничивающих рамок, содержащих обнаруженные объекты. Этот метод выполняет многомасштабное обнаружение объектов на входном изображении I. Каждая строка выходной матрицы BBOX содержит четырехэлементный вектор [x y width height], который указывает в пикселях верхний левый угол и размер ограничивающей области. коробка. Входное изображение I должно быть в градациях серого или в реальном цвете (RGB).

Вы уверены, что в коде именно j=1:size(bbox), а не j=1:size(bbox,1)?

По сути, определение BBox говорит само за себя. Цикл просто перебирает все обнаруженные ящики.

Затем вы извлекаете информацию о jом ящике.

Затем вы извлекаете субизображение с учетом позиции и размера xbox (xbox — это вектор, содержащий [x y width height]).

Затем вы определяете свой фильтр.

Затем вы размываете свое субизображение.

Затем вы переопределяете свое изображение размытым фрагментом изображения, используя информацию в xbox.

РЕДАКТИРОВАТЬ: Если вам уже удалось размыть обрезанное изображение, вам просто нужно заменить введенное изображение размытым изображением!

person BillBokeey    schedule 13.10.2015