How To Track the brown color of the hand of the image? please help me

조회 수: 2 (최근 30일)
john john
john john 2012년 2월 6일
편집: Een Qurota Aini 2013년 10월 1일
How Do I trace? or track? the brown color of the hand of the image? which is capture during the snapshot and my background is white? then crop automatically the hand? I am currently doing Hand Signal Recognition..I get a program from my friend but a little bit confusing how to configure the code since my background is white and his background is blue i guess...see this link for the image

답변 (2개)

Image Analyst
Image Analyst 2012년 2월 6일
Lots of tracking info on the Mathworks web site:
  댓글 수: 1
john john
john john 2012년 2월 6일
those tracking info link you give to me sir are just common problems? can u help me with the code below how it was done?

댓글을 달려면 로그인하십시오.


john john
john john 2012년 2월 6일
This is the Code I got from my old friend, can you help how to configure those code? if would be okay?
asdfg_count = 0;
x_orig = x;
orange = x;
%special part convert blue to white (bg)
image_size = size(orange);
a1 = image_size(1,1);
a2 = image_size(1,2);
for aa1=1:a1,
for aa2=1:a2,
%track blue
if (((orange(aa1,aa2,1) >= 0) && (orange(aa1,aa2,1) <= 77))...
&& ((orange(aa1,aa2,2) >= 0) && (orange(aa1,aa2,2) <= 97))...
&& ((orange(aa1,aa2,3) >= 39) && (orange(aa1,aa2,3) <= 255)))
orange(aa1,aa2,:) = 255;
end
end
end
x = orange;
%upper side
image_size = size(x);
a1 = image_size(1,1);
a2 = image_size(1,2);
fire_r = 0;
for aa1=1:a1,
for aa2=1:a2,
%track brown
%if (((x(aa1,aa2,1) >= 127) && (x(aa1,aa2,1) <= 187))...
% && ((x(aa1,aa2,2) >= 82) && (x(aa1,aa2,2) <= 150))...
% && ((x(aa1,aa2,3) >= 60) && (x(aa1,aa2,3) <= 120)))
%track white
if (((x(aa1,aa2,1) >= 0) && (x(aa1,aa2,1) <= 240))...
&& ((x(aa1,aa2,2) >= 0) && (x(aa1,aa2,2) <= 240))...
&& ((x(aa1,aa2,3) >= 0) && (x(aa1,aa2,3) <= 240)))
fire_r = aa1;
break;
end
end
if fire_r ~= 0
break;
end
end
if fire_r == 0
fire_r = 1;
end
x2 = zeros(a1 - fire_r,a2,3);
ab1 = 1;
for aa1=fire_r:a1,
for aa2=1:a2,
x2(ab1,aa2,1) = x(aa1,aa2,1);
x2(ab1,aa2,2) = x(aa1,aa2,2);
x2(ab1,aa2,3) = x(aa1,aa2,3);
end
ab1 = ab1 + 1;
end
%side left
x2 = uint8(x2);
image_size = size(x2);
a1 = image_size(1,1);
a2 = image_size(1,2);
fire_c = 0;
for aa2=1:a2,
for aa1=1:a1,
%track brown
%if (((x2(aa1,aa2,1) >= 112) && (x2(aa1,aa2,1) <= 187))...
% && ((x2(aa1,aa2,2) >= 95) && (x2(aa1,aa2,2) <= 152))...
% && ((x2(aa1,aa2,3) >= 77) && (x2(aa1,aa2,3) <= 80)))
%track white
if (((x2(aa1,aa2,1) >= 0) && (x2(aa1,aa2,1) <= 240))...
&& ((x2(aa1,aa2,2) >= 0) && (x2(aa1,aa2,2) <= 240))...
&& ((x2(aa1,aa2,3) >= 0) && (x2(aa1,aa2,3) <= 240)))
fire_c = aa2;
break;
end
end
if fire_c ~= 0
break;
end
end
if fire_c == 0
fire_c = 1;
end
x3 = zeros(a1,a2 - fire_c,3);
ab2 = 1;
for aa2=fire_c:a2,
for aa1=1:a1,
x3(aa1,ab2,1) = x2(aa1,aa2,1);
x3(aa1,ab2,2) = x2(aa1,aa2,2);
x3(aa1,ab2,3) = x2(aa1,aa2,3);
end
ab2 = ab2 + 1;
end
%side right
x3 = uint8(x3);
image_size = size(x3);
a1 = image_size(1,1);
a2 = image_size(1,2);
fire_c = 0;
for aa2=a2:-1:1,
for aa1=a1:-1:1,
%track brown
%if (((x3(aa1,aa2,1) >= 127) && (x3(aa1,aa2,1) <= 187))...
% && ((x3(aa1,aa2,2) >= 82) && (x3(aa1,aa2,2) <= 150))...
% && ((x3(aa1,aa2,3) >= 60) && (x3(aa1,aa2,3) <= 120)))
%track white
if (((x3(aa1,aa2,1) >= 0) && (x3(aa1,aa2,1) <= 240))...
&& ((x3(aa1,aa2,2) >= 0) && (x3(aa1,aa2,2) <= 240))...
&& ((x3(aa1,aa2,3) >= 0) && (x3(aa1,aa2,3) <= 240)))
fire_c = aa2;
break;
end
end
if fire_c ~= 0
break;
end
end
if fire_c == 0
fire_c = a2;
end
x4 = zeros(a1,fire_c,3);
ab2 = 1;
for aa2=1:fire_c, %adjustment
for aa1=1:a1,
x4(aa1,ab2,1) = x3(aa1,aa2,1);
x4(aa1,ab2,2) = x3(aa1,aa2,2);
x4(aa1,ab2,3) = x3(aa1,aa2,3);
end
ab2 = ab2 + 1;
end
%lower side
x4 = uint8(x4);
image_size = size(x4);
a1 = image_size(1,1);
a2 = image_size(1,2);
fire_r = 0;
for aa1=a1:-1:1,
for aa2=1:a2,
%if (((x4(aa1,aa2,1) >= 127) && (x4(aa1,aa2,1) <= 178))...
% && ((x4(aa1,aa2,2) >= 82) && (x4(aa1,aa2,2) <= 140))...
% && ((x4(aa1,aa2,3) >= 70) && (x4(aa1,aa2,3) <= 91)))
%track white
if (((x4(aa1,aa2,1) >= 0) && (x4(aa1,aa2,1) <= 240))...
&& ((x4(aa1,aa2,2) >= 0) && (x4(aa1,aa2,2) <= 240))...
&& ((x4(aa1,aa2,3) >= 0) && (x4(aa1,aa2,3) <= 240)))
fire_r = aa1;
break;
end
end
if fire_r ~= 0
break;
end
end
if fire_r == 0
fire_r = a1;
end
x5 = zeros(fire_r,a2,3);
ab1 = 1;
for aa1=1:fire_r, %adjustment
for aa2=1:a2,
x5(ab1,aa2,1) = x4(aa1,aa2,1);
x5(ab1,aa2,2) = x4(aa1,aa2,2);
x5(ab1,aa2,3) = x4(aa1,aa2,3);
end
ab1 = ab1 + 1;
end
%figure, imshow(x_orig);
x5 = uint8(x5);
  댓글 수: 1
Image Analyst
Image Analyst 2012년 2월 6일
I don't have time to do private consulting on this. You can check my File Exchange for color segmentation demos. If you have a specific problem, such as an error message, then post it and someone will help you. But I don't have the time to spend hours adapting someone's code to your specific image, especially code with virtually no comments and confusing variable names. Sorry.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by