Image Processing - Dress Segmentacja za pomocą OpenCV
pracuję nad identyfikacją funkcji sukienka użyciu OpenCV. Pierwszym krokiem jest odseparowanie koszulki poprzez zdjęcie twarzy i dłoni z obrazu. Wszelkie sugestie są mile widziane.
Image Processing - Dress Segmentacja za pomocą OpenCV
pracuję nad identyfikacją funkcji sukienka użyciu OpenCV. Pierwszym krokiem jest odseparowanie koszulki poprzez zdjęcie twarzy i dłoni z obrazu. Wszelkie sugestie są mile widziane.
Proponuję następujące podejście:
Kod:
%stage 1: skin detection - Adrian Rosebrock solution
im = imread(<path to input image>);
hsb = rgb2hsv(im)*255;
skinMask = hsb(:,:,1) > 0 & hsb(:,:,1) < 20;
skinMask = skinMask & (hsb(:,:,2) > 48 & hsb(:,:,2) < 255);
skinMask = skinMask & (hsb(:,:,3) > 80 & hsb(:,:,3) < 255);
skinMask = imclose(skinMask,strel('disk',6));
%stage 2: calculate top, left and right centroid from the different connected
%components of the skin
stats = regionprops(skinMask,'centroid');
topCentroid = stats(1).Centroid;
rightCentroid = stats(1).Centroid;
leftCentroid = stats(1).Centroid;
for x = 1 : length(stats)
centroid = stats(x).Centroid;
if topCentroid(2)>centroid(2)
topCentroid = centroid;
elseif centroid(1)<leftCentroid(1)
leftCentroid = centroid;
elseif centroid(1)>rightCentroid(1)
rightCentroid = centroid;
end
end
%first seed - the average of the most left and right centroids.
centralSeed = int16((rightCentroid+leftCentroid)/2);
%second seed - a pixel which is right below the face centroid.
faceSeed = int16(topCentroid);
faceSeed(2) = faceSeed(2)+40;
%stage 3: std filter
varIm = stdfilt(rgb2gray(im));
%stage 4 - region growing on varIm using faceSeed and centralSeed
res1=regiongrowing(varIm,centralSeed(2),centralSeed(1),8);
res2=regiongrowing(varIm,faceSeed(2),faceSeed(1),8);
res = res1|res2;
%noise reduction
res = imclose(res,strel('disk',3));
res = imopen(res,strel('disk',2));
wynik po etapie 1 (wykrywania skóry)
wynik końcowy:
Uwagi:
Świetna odpowiedź. +1. – rayryeng
Zacznij od zapoznania się z rozwiązaniami do wykrywania skóry (przykład: http://www.pyimagesearch.com/2014/08/18/skin-detection-step-example-using-python-opencv/) –
@ RosaGronchi Nie zgodziłbym się z twoją edycją. Ponieważ odesłałeś nas do algorytmu wykrywania skóry Adriana Rosebrocka, aby rozpocząć, istnieje potrzeba wstępnego przetworzenia przed wykryciem skóry obrazu i wymaga to morfologii obrazu, a tym samym przetwarzania obrazu. Odtworzyłem tag, a także dodałem segmentację obrazu, ponieważ również technicznie segmentujemy skórę. – rayryeng
Segmentacja @rayryeng to klasyczny problem z widzeniem komputerowym, wiele razy algorytmy widzenia komputera obejmują narzędzia do przetwarzania obrazu, ale pytanie: chcę wyodrębnić z obrazu piksele koszulki "nie ma nic wspólnego z przetwarzaniem obrazu. zrób to również (co nie spowoduje, że będzie to problem głębokiego uczenia się) –