Tuesday, 27 August 2013

matlab code to locate skinpixels in ycbcr color space

function [out bin] = generate_skinmap(filename)

   
    if nargin > 1 || nargin < 1
        error('usage: generate_skinmap(filename)');
    end;
   
    %Read the image, and capture the dimensions
    img_orig = imread(filename);
    height = size(img_orig,1);
    width = size(img_orig,2);
   
    %Initialize the output images
    out = img_orig;
    bin = zeros(height,width);
     
   
    %Convert the image from RGB to YCbCr
    img_ycbcr = rgb2ycbcr(img);
    Cb = img_ycbcr(:,:,2);
    Cr = img_ycbcr(:,:,3);
   
    %Detect Skin
    [r,c,v] = find(Cb>=77 & Cb<=127 & Cr>=133 & Cr<=173);
    numind = size(r,1);
   
    %Mark Skin Pixels
    for i=1:numind
        out(r(i),c(i),:) = [0 0 255];
        bin(r(i),c(i)) = 1;
    end
   
    imshow(img_orig);
    figure; imshow(out);
    figure; imshow(bin);
end

No comments:

Post a Comment