Is there a way to overcome For loops for fast processing?
10 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Muhammad Farhan Mughal
le 9 Sep 2019
Commenté : darova
le 10 Sep 2019
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 commentaires
Réponse acceptée
Plus de réponses (1)
darova
le 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 commentaires
Voir également
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
