Is there a way to overcome For loops for fast processing?
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Muhammad Farhan Mughal
el 9 de Sept. de 2019
Comentada: darova
el 10 de Sept. de 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 comentarios
Respuesta aceptada
Más respuestas (1)
darova
el 9 de Sept. de 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 comentarios
Ver también
Categorías
Más información sobre Image Processing Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!