2013-02-25 1 views
1

мы имеем дело с проблемой в нашем основном проекте, и мы хотели бы, чтобы вы нам помогли. Наш проект - Портативная система распознавания лиц. Нам нужно вырезать грань с выбранной границы.Как отрезать выбранную часть от изображения в Matlab?

Это наш код:

img=imread('10.jpg'); 
for i = 1:size(img,1) 
    for j = 1:size(img,2) 
     R = img(i,j,1); 
     G = img(i,j,2); 
     B = img(i,j,3); 
     if(R > 92 && G > 40 && B > 20) 
      v = [R,G,B]; 
      if(abs(R-G) > 15 && R > G && R > B) 
        final_image(i,j) = 1; 
      end 
     end 
    end 
end 
imshow(final_image) 
rgbInputImage=img; 
%Grayscale To Binary. 
binaryImage=im2bw(final_image,0.6); 
%Filling The Holes. 
binaryImage = imfill(binaryImage, 'holes'); 
binaryImage = bwareaopen(binaryImage,1890); 
figure,imshow(binaryImage); 
labeledImage = bwlabel(binaryImage, 8); 
+0

это код, который мы уже сделали ... img = imread ('10 .jpg '); для i = 1: размер (img, 1) для j = 1: размер (img, 2) R = img (i, j, 1); G = img (i, j, 2); B = img (i, j, 3); , если (R> 92 && G> 40 && B> 20) v = [R, G, B]; if (abs (R-G)> 15 && R> G && R> B) final_image (i, j) = 1; конца конца конца конца imshow (final_image) rgbInputImage = IMG; % Оттенки серого до двоичного. binaryImage = im2bw (final_image, 0.6); % Заполнение отверстий. binaryImage = imfill (binaryImage, 'hole'); binaryImage = bwareaopen (binaryImage, 1890); фигура, imshow (binaryImage); labeledImage = bwlabel (binaryImage, 8); – user2106151

+0

blobMeasurements = regionprops (labeledImage, final_image, 'all'); номерOfPeople = размер (blobMeasurements, 1) % номерOfPeople = 1; imagesc (rgbInputImage); title ('Контуры, из bwboundaries()'); % площадь оси; держаться; границ = bwboundaries (binaryImage); для k = 1: numberOfPeople thisBoundary = границы {k}; plot (thisBoundary (:, 2), thisBoundary (:, 1), 'g', 'LineWidth', 2); конец удерживайте; imagesc (rgbInputImage); держаться; название («Оригинал с ограничительными рамками»); % fprintf (1, 'Blob # x1 x2 y1 y2 \ n'); – user2106151

+0

для k = 1: numberOfPeople x1 = thisBlobsBox (1); y1 = thisBlobsBox (2); x2 = x1 + thisBlobsBox (3); y2 = y1 + thisBlobsBox (4); x = [x1 x2 x2 x1 x1]; y = [y1 y1 y2 y2 y1]; plot (x, y, 'LineWidth', 2); конец рисунок, imshow (labeledImage); B = bwboundaries (binaryImage); imshow (B); текст (10,10, strcat ('\ color {green} Найденные объекты:', num2str (длина (B)))) удерживайте для k = 1: длина (B) border = B {k}; plot (граница (:, 2), граница (:, 1), 'g', 'LineWidth', 0.2) end – user2106151

ответ

1

Вы можете проверить MATLAB встроенные функции roipoly. Он примет координаты x-y границы и построит многоугольную маску. Эта бинарная маска может быть умножена на ваше изображение, чтобы извлечь лицо.

0

Вы можете использовать функцию imcrop в MATLAB. для получения дополнительной информации введите imcrop в окне команд.

 Смежные вопросы

  • Нет связанных вопросов^_^