Is there a way to overcome For loops for fast processing?
Show older comments
I have written a following MATLAB code to detect skin color pixels from the RGB image. The output is as expected but being pixel by pixel algorithm, my program is taking too long, expecially for high quality images. Is there a way to take out the for loops for fast processing? Thank you.
[s1,s2,s3] = size(I);
skin_img1 = zeros(s1,s2,s3);
maxR = max(max(R));
minR = min(min(R));
maxG = max(max(G))
minG = min(min(G));
maxB = max(max(B));
minB = min(min(B));
for i = 1:s1
for j = 1:s2
if R(i,j)>90/255
if ( G(i,j)>40/255 && B(i,j)>20/255 && abs(R(i,j)-G(i,j))>15/255 && R(i,j)> G(i,j) && R(i,j) > B(i,j)...
&& (max([R(i,j),G(i,j),B(i,j)])- min([R(i,j),G(i,j),B(i,j)]) >15/255));
% (maxR - minR)>15/255 && (maxG - minG)>15/255 && (maxB - minB)>15/255 )
skin_img1(i,j,:) = I (i,j,:);
end
% else
% if( R(i,j)> G(i,j) && R(i,j) > B(i,j) && R(i,j) - G(i,j)> 5/255 && (abs(G(i,j)-B(i,j))>5/255))
% Skin_Image(i,j,:) = I (i,j,:);
% end
end
end
end
2 Comments
KALYAN ACHARJYA
on 9 Sep 2019
Attach sample image, so that we can try on it? Skin color?
Muhammad Farhan Mughal
on 10 Sep 2019
Accepted Answer
More Answers (1)
darova
on 9 Sep 2019
See attached script
clc, clear
A = imread('masson.jpg');
subplot(1,2,1)
imshow(A)
RGB = [40 120 40]; % color you want
e = 40; % color shift / deviation
B = pix_in(A,RGB,e);
B = B + 255.*uint8(~B); % choosing white background
subplot(1,2,2)
imshow(B)
7 Comments
Muhammad Farhan Mughal
on 10 Sep 2019
darova
on 10 Sep 2019
Isn't that you wanted?

Muhammad Farhan Mughal
on 10 Sep 2019
Muhammad Farhan Mughal
on 10 Sep 2019
darova
on 10 Sep 2019
Did you try to change Color you want?
Muhammad Farhan Mughal
on 10 Sep 2019
darova
on 10 Sep 2019
Good. Don't do this
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!