Hola, ocupo ayudo con un programa para el analisis de la marcha con una webcamvusando matlab, es decir poder medir los angulos. Realmente no tengo mucha experiencia en el uso de matlaba, adjunto lo que he podido hacer
function [Angulo]=AnalisisMarcha(comparacion1,comparacion2)
cuenta=1;
%--------------------------------------------------------------------------
Bin1 = im2bw(comparacion1,0.1);
Adelgaza1 = bwmorph(Bin1,'thin',1);
se1 = strel('disk',5);
ruido1=imerode(Adelgaza1,se1);
me1 = strel('disk',1);
filtro1=imdilate(ruido1,me1);
Bin= im2bw(comparacion2,0.1);
Adelgaza = bwmorph(Bin,'thin',1);
se = strel('disk',5);
ruido=imerode(Adelgaza,se);
me = strel('disk',1);
filtro2=imdilate(ruido,me);
%--------------------------------------------------------------------------
for l=1:size(filtro1,1)
for k=1:size(filtro1,2)
if filtro1(l,k)==1
x(1,cuenta)=l;
y(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x1=x(1,size(x,2))-x(1,1);
y1=y(1,size(y,2))-y(1,1);
cuenta=1;
for l=1:size(filtro2,1)
for k=1:size(filtro2,2)
if filtro2(l,k)==1
j(1,cuenta)=l;
i(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x2=j(1,size(j,2))-j(1,1);
y2=i(1,size(i,2))-i(1,1);
Angulo=(acosd((x1*x2+y1*y2)/(sqrt(x1^2+y1^2)*sqrt(x2^2+y2^2))));
% figure
% hold on
% imshow(filtro2)
%--------------------------------------------------------------------------
% Primero carcgmos las im�genes que usaremos con imread
% despues recortamos la parte inferior de la imagen original
% con la instrucci�n imcrop y la guardamos en pfig2 (pierna)
% asi como la parte superior de la imagen original, y la guardamos
% con ffig2 (femur), asi con cada una de las imagenes
fig2=imread('fig2.jpg');
pfig2= imcrop(fig2,[4.5 314.5 1356 404]);
ffig2=imcrop(fig2,[5.5 5.5 1355 444]);
fig3=imread('fig3.jpg');
pfig3= imcrop(fig3,[4.5 314.5 1356 404]);
ffig3=imcrop(fig3,[5.5 5.5 1355 444]);
fig4=imread('fig4.jpg');
pfig4= imcrop(fig4,[4.5 314.5 1356 404]);
ffig4=imcrop(fig4,[5.5 5.5 1355 444]);
fig5=imread('fig5.jpg');
pfig5= imcrop(fig5,[4.5 314.5 1356 404]);
ffig5=imcrop(fig5,[5.5 5.5 1355 444]);
fig6=imread('fig6.jpg');
pfig6= imcrop(fig6,[4.5 314.5 1356 404]);
ffig6=imcrop(fig6,[5.5 5.5 1355 444]);
fig7=imread('fig7.jpg');
pfig7= imcrop(fig7,[4.5 314.5 1356 404]);
ffig7=imcrop(fig7,[5.5 5.5 1355 444]);
fig8=imread('fig8.jpg');
pfig8= imcrop(fig8,[4.5 314.5 1356 404]);
ffig8=imcrop(fig8,[5.5 5.5 1355 444]);
fig9=imread('fig9.jpg');
pfig9= imcrop(fig9,[4.5 314.5 1356 404]);
ffig9=imcrop(fig9,[5.5 5.5 1355 444]);
fig10=imread('fig10.jpg');
pfig10= imcrop(fig10,[4.5 314.5 1356 404]);
ffig10=imcrop(fig10,[5.5 5.5 1355 444]);
fig11=imread('fig11.jpg');
pfig11= imcrop(fig11,[4.5 314.5 1356 404]);
ffig11=imcrop(fig11,[5.5 5.5 1355 444]);
fig12=imread('fig12.jpg');
pfig12= imcrop(fig12,[4.5 314.5 1356 404]);
ffig12=imcrop(fig12,[5.5 5.5 1355 444]);
fig13=imread('fig13.jpg');
pfig13= imcrop(fig13,[4.5 314.5 1356 404]);
ffig13=imcrop(fig13,[5.5 5.5 1355 444]);
fig14=imread('fig14.jpg');
pfig14= imcrop(fig14,[4.5 314.5 1356 404]);
ffig14=imcrop(fig14,[5.5 5.5 1355 444]);
fig15=imread('fig15.jpg');
pfig15= imcrop(fig15,[4.5 314.5 1356 404]);
ffig15=imcrop(fig15,[5.5 5.5 1355 444]);
fig16=imread('fig16.jpg');
pfig16= imcrop(fig16,[4.5 314.5 1356 404]);
ffig16=imcrop(fig16,[5.5 5.5 1355 444]);
fig17=imread('fig17.jpg');
pfig17= imcrop(fig17,[4.5 314.5 1356 404]);
ffig17=imcrop(fig17,[5.5 5.5 1355 444]);
fig18=imread('fig18.jpg');
pfig18= imcrop(fig18,[4.5 314.5 1356 404]);
ffig18=imcrop(fig18,[5.5 5.5 1355 444]);
fig19=imread('fig19.jpg');
pfig19= imcrop(fig19,[4.5 314.5 1356 404]);
ffig19=imcrop(fig19,[5.5 5.5 1355 444]);
fig20=imread('fig20.jpg');
pfig20= imcrop(fig20,[4.5 314.5 1356 404]);
ffig20=imcrop(fig20,[5.5 5.5 1355 444]);
fig21=imread('fig21.jpg');
pfig21= imcrop(fig21,[4.5 314.5 1356 404]);
ffig21=imcrop(fig21,[5.5 5.5 1355 444]);
fig22=imread('fig22.jpg');
pfig22= imcrop(fig22,[4.5 314.5 1356 404]);
ffig22=imcrop(fig22,[5.5 5.5 1355 444]);
%--------------------------------------------------------------------------
%Analisis segmento de la pierna
%--------------------------------------------------------------------------
% Esta parte del codigo llama a la funci�n principal llamada
% AnalisisMarcha, donde obtenemos como resultado el angulo, primero de la
% pierna de la siguente forma
% AnguloPierna =[AnalisisMarcha(pfig2,pfig3)];
% llamando a de dos en dos imagenes para compararlas, y asi
% con cada par de imagenes
AnguloPierna = [AnalisisMarcha(pfig2,pfig3),AnalisisMarcha(pfig3,pfig4),...
AnalisisMarcha(pfig4,pfig5),AnalisisMarcha(pfig5,pfig6),...
AnalisisMarcha(pfig6,pfig7),AnalisisMarcha(pfig7,pfig8),...
AnalisisMarcha(pfig8,pfig9),AnalisisMarcha(pfig9,pfig10),...
AnalisisMarcha(pfig10,pfig11),AnalisisMarcha(pfig11,pfig12)...
AnalisisMarcha(pfig12,pfig13),AnalisisMarcha(pfig13,pfig14)...
AnalisisMarcha(pfig14,pfig15),AnalisisMarcha(pfig15,pfig16)...
AnalisisMarcha(pfig16,pfig17),AnalisisMarcha(pfig17,pfig18)...
AnalisisMarcha(pfig18,pfig19),AnalisisMarcha(pfig19,pfig20)...
AnalisisMarcha(pfig20,pfig21),AnalisisMarcha(pfig21,pfig22)];
%
%
AnguloFemur = [AnalisisMarcha(ffig2,ffig3),AnalisisMarcha(ffig3,ffig4),...
AnalisisMarcha(ffig4,ffig5),AnalisisMarcha(ffig5,ffig6),...
AnalisisMarcha(ffig6,ffig7),AnalisisMarcha(ffig7,ffig8),...
AnalisisMarcha(ffig8,ffig9),AnalisisMarcha(ffig9,ffig10),...
AnalisisMarcha(ffig10,ffig11),AnalisisMarcha(ffig11,ffig12)...
AnalisisMarcha(ffig12,ffig13),AnalisisMarcha(ffig13,ffig14)...
AnalisisMarcha(ffig14,ffig15),AnalisisMarcha(ffig15,ffig16)...
AnalisisMarcha(ffig16,ffig17),AnalisisMarcha(ffig17,ffig18)...
AnalisisMarcha(ffig18,ffig19),AnalisisMarcha(ffig19,ffig20)...
AnalisisMarcha(ffig20,ffig21),AnalisisMarcha(ffig21,ffig22)];
%--------------------------------------------------------------------------
figure(1)
plot(AnguloPierna,'--k')
hold on
plot(AnguloPierna,'r*')
grid on
title('Desplazamiento Angular de la pierna')
ylabel('angulo')
xlabel('Imagen')
disp('AnguloPierna')
disp(AnguloPierna)
figure(2)
plot(AnguloFemur,'--b')
hold on
plot(AnguloFemur,'k*')
grid on
title('Desplazamiento Angular del Femur')
ylabel('angulo')
xlabel('Imagen')
disp('AnguloFemur')
disp(AnguloFemur)
%-------------------------------------
figure(3)
plot(AnguloPierna,'k')
hold on
plot(AnguloPierna,'r*')
hold on
plot(AnguloFemur,'b')
hold on
plot(AnguloFemur,'k*')
grid on
title('Desplazamiento Angular pierna vs femur')
ylabel('angulo')
xlabel('Imagen')
function [Angulo]=AnalisisMarcha(comparacion1,comparacion2)
cuenta=1;
%--------------------------------------------------------------------------
Bin1 = im2bw(comparacion1,0.1);
Adelgaza1 = bwmorph(Bin1,'thin',1);
se1 = strel('disk',5);
ruido1=imerode(Adelgaza1,se1);
me1 = strel('disk',1);
filtro1=imdilate(ruido1,me1);
Bin= im2bw(comparacion2,0.1);
Adelgaza = bwmorph(Bin,'thin',1);
se = strel('disk',5);
ruido=imerode(Adelgaza,se);
me = strel('disk',1);
filtro2=imdilate(ruido,me);
%--------------------------------------------------------------------------
for l=1:size(filtro1,1)
for k=1:size(filtro1,2)
if filtro1(l,k)==1
x(1,cuenta)=l;
y(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x1=x(1,size(x,2))-x(1,1);
y1=y(1,size(y,2))-y(1,1);
cuenta=1;
for l=1:size(filtro2,1)
for k=1:size(filtro2,2)
if filtro2(l,k)==1
j(1,cuenta)=l;
i(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x2=j(1,size(j,2))-j(1,1);
y2=i(1,size(i,2))-i(1,1);
Angulo=(acosd((x1*x2+y1*y2)/(sqrt(x1^2+y1^2)*sqrt(x2^2+y2^2))));
% figure
% hold on
% imshow(filtro2)
function [Angulo]=AnalisisMarcha(comparacion1,comparacion2)
cuenta=1;
%--------------------------------------------------------------------------
Bin1 = im2bw(comparacion1,0.1);
Adelgaza1 = bwmorph(Bin1,'thin',1);
se1 = strel('disk',5);
ruido1=imerode(Adelgaza1,se1);
me1 = strel('disk',1);
filtro1=imdilate(ruido1,me1);
Bin= im2bw(comparacion2,0.1);
Adelgaza = bwmorph(Bin,'thin',1);
se = strel('disk',5);
ruido=imerode(Adelgaza,se);
me = strel('disk',1);
filtro2=imdilate(ruido,me);
%--------------------------------------------------------------------------
for l=1:size(filtro1,1)
for k=1:size(filtro1,2)
if filtro1(l,k)==1
x(1,cuenta)=l;
y(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x1=x(1,size(x,2))-x(1,1);
y1=y(1,size(y,2))-y(1,1);
cuenta=1;
for l=1:size(filtro2,1)
for k=1:size(filtro2,2)
if filtro2(l,k)==1
j(1,cuenta)=l;
i(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x2=j(1,size(j,2))-j(1,1);
y2=i(1,size(i,2))-i(1,1);
Angulo=(acosd((x1*x2+y1*y2)/(sqrt(x1^2+y1^2)*sqrt(x2^2+y2^2))));
% figure
% hold on
% imshow(filtro2)
%--------------------------------------------------------------------------
% Primero carcgmos las im�genes que usaremos con imread
% despues recortamos la parte inferior de la imagen original
% con la instrucci�n imcrop y la guardamos en pfig2 (pierna)
% asi como la parte superior de la imagen original, y la guardamos
% con ffig2 (femur), asi con cada una de las imagenes
fig2=imread('fig2.jpg');
pfig2= imcrop(fig2,[4.5 314.5 1356 404]);
ffig2=imcrop(fig2,[5.5 5.5 1355 444]);
fig3=imread('fig3.jpg');
pfig3= imcrop(fig3,[4.5 314.5 1356 404]);
ffig3=imcrop(fig3,[5.5 5.5 1355 444]);
fig4=imread('fig4.jpg');
pfig4= imcrop(fig4,[4.5 314.5 1356 404]);
ffig4=imcrop(fig4,[5.5 5.5 1355 444]);
fig5=imread('fig5.jpg');
pfig5= imcrop(fig5,[4.5 314.5 1356 404]);
ffig5=imcrop(fig5,[5.5 5.5 1355 444]);
fig6=imread('fig6.jpg');
pfig6= imcrop(fig6,[4.5 314.5 1356 404]);
ffig6=imcrop(fig6,[5.5 5.5 1355 444]);
fig7=imread('fig7.jpg');
pfig7= imcrop(fig7,[4.5 314.5 1356 404]);
ffig7=imcrop(fig7,[5.5 5.5 1355 444]);
fig8=imread('fig8.jpg');
pfig8= imcrop(fig8,[4.5 314.5 1356 404]);
ffig8=imcrop(fig8,[5.5 5.5 1355 444]);
fig9=imread('fig9.jpg');
pfig9= imcrop(fig9,[4.5 314.5 1356 404]);
ffig9=imcrop(fig9,[5.5 5.5 1355 444]);
fig10=imread('fig10.jpg');
pfig10= imcrop(fig10,[4.5 314.5 1356 404]);
ffig10=imcrop(fig10,[5.5 5.5 1355 444]);
fig11=imread('fig11.jpg');
pfig11= imcrop(fig11,[4.5 314.5 1356 404]);
ffig11=imcrop(fig11,[5.5 5.5 1355 444]);
fig12=imread('fig12.jpg');
pfig12= imcrop(fig12,[4.5 314.5 1356 404]);
ffig12=imcrop(fig12,[5.5 5.5 1355 444]);
fig13=imread('fig13.jpg');
pfig13= imcrop(fig13,[4.5 314.5 1356 404]);
ffig13=imcrop(fig13,[5.5 5.5 1355 444]);
fig14=imread('fig14.jpg');
pfig14= imcrop(fig14,[4.5 314.5 1356 404]);
ffig14=imcrop(fig14,[5.5 5.5 1355 444]);
fig15=imread('fig15.jpg');
pfig15= imcrop(fig15,[4.5 314.5 1356 404]);
ffig15=imcrop(fig15,[5.5 5.5 1355 444]);
fig16=imread('fig16.jpg');
pfig16= imcrop(fig16,[4.5 314.5 1356 404]);
ffig16=imcrop(fig16,[5.5 5.5 1355 444]);
fig17=imread('fig17.jpg');
pfig17= imcrop(fig17,[4.5 314.5 1356 404]);
ffig17=imcrop(fig17,[5.5 5.5 1355 444]);
fig18=imread('fig18.jpg');
pfig18= imcrop(fig18,[4.5 314.5 1356 404]);
ffig18=imcrop(fig18,[5.5 5.5 1355 444]);
fig19=imread('fig19.jpg');
pfig19= imcrop(fig19,[4.5 314.5 1356 404]);
ffig19=imcrop(fig19,[5.5 5.5 1355 444]);
fig20=imread('fig20.jpg');
pfig20= imcrop(fig20,[4.5 314.5 1356 404]);
ffig20=imcrop(fig20,[5.5 5.5 1355 444]);
fig21=imread('fig21.jpg');
pfig21= imcrop(fig21,[4.5 314.5 1356 404]);
ffig21=imcrop(fig21,[5.5 5.5 1355 444]);
fig22=imread('fig22.jpg');
pfig22= imcrop(fig22,[4.5 314.5 1356 404]);
ffig22=imcrop(fig22,[5.5 5.5 1355 444]);
%--------------------------------------------------------------------------
%Analisis segmento de la pierna
%--------------------------------------------------------------------------
% Esta parte del codigo llama a la funci�n principal llamada
% AnalisisMarcha, donde obtenemos como resultado el angulo, primero de la
% pierna de la siguente forma
% AnguloPierna =[AnalisisMarcha(pfig2,pfig3)];
% llamando a de dos en dos imagenes para compararlas, y asi
% con cada par de imagenes
AnguloPierna = [AnalisisMarcha(pfig2,pfig3),AnalisisMarcha(pfig3,pfig4),...
AnalisisMarcha(pfig4,pfig5),AnalisisMarcha(pfig5,pfig6),...
AnalisisMarcha(pfig6,pfig7),AnalisisMarcha(pfig7,pfig8),...
AnalisisMarcha(pfig8,pfig9),AnalisisMarcha(pfig9,pfig10),...
AnalisisMarcha(pfig10,pfig11),AnalisisMarcha(pfig11,pfig12)...
AnalisisMarcha(pfig12,pfig13),AnalisisMarcha(pfig13,pfig14)...
AnalisisMarcha(pfig14,pfig15),AnalisisMarcha(pfig15,pfig16)...
AnalisisMarcha(pfig16,pfig17),AnalisisMarcha(pfig17,pfig18)...
AnalisisMarcha(pfig18,pfig19),AnalisisMarcha(pfig19,pfig20)...
AnalisisMarcha(pfig20,pfig21),AnalisisMarcha(pfig21,pfig22)];
%
%
AnguloFemur = [AnalisisMarcha(ffig2,ffig3),AnalisisMarcha(ffig3,ffig4),...
AnalisisMarcha(ffig4,ffig5),AnalisisMarcha(ffig5,ffig6),...
AnalisisMarcha(ffig6,ffig7),AnalisisMarcha(ffig7,ffig8),...
AnalisisMarcha(ffig8,ffig9),AnalisisMarcha(ffig9,ffig10),...
AnalisisMarcha(ffig10,ffig11),AnalisisMarcha(ffig11,ffig12)...
AnalisisMarcha(ffig12,ffig13),AnalisisMarcha(ffig13,ffig14)...
AnalisisMarcha(ffig14,ffig15),AnalisisMarcha(ffig15,ffig16)...
AnalisisMarcha(ffig16,ffig17),AnalisisMarcha(ffig17,ffig18)...
AnalisisMarcha(ffig18,ffig19),AnalisisMarcha(ffig19,ffig20)...
AnalisisMarcha(ffig20,ffig21),AnalisisMarcha(ffig21,ffig22)];
%--------------------------------------------------------------------------
figure(1)
plot(AnguloPierna,'--k')
hold on
plot(AnguloPierna,'r*')
grid on
title('Desplazamiento Angular de la pierna')
ylabel('angulo')
xlabel('Imagen')
disp('AnguloPierna')
disp(AnguloPierna)
figure(2)
plot(AnguloFemur,'--b')
hold on
plot(AnguloFemur,'k*')
grid on
title('Desplazamiento Angular del Femur')
ylabel('angulo')
xlabel('Imagen')
disp('AnguloFemur')
disp(AnguloFemur)
%-------------------------------------
figure(3)
plot(AnguloPierna,'k')
hold on
plot(AnguloPierna,'r*')
hold on
plot(AnguloFemur,'b')
hold on
plot(AnguloFemur,'k*')
grid on
title('Desplazamiento Angular pierna vs femur')
ylabel('angulo')
xlabel('Imagen')
function [Angulo]=AnalisisMarcha(comparacion1,comparacion2)
cuenta=1;
%--------------------------------------------------------------------------
Bin1 = im2bw(comparacion1,0.1);
Adelgaza1 = bwmorph(Bin1,'thin',1);
se1 = strel('disk',5);
ruido1=imerode(Adelgaza1,se1);
me1 = strel('disk',1);
filtro1=imdilate(ruido1,me1);
Bin= im2bw(comparacion2,0.1);
Adelgaza = bwmorph(Bin,'thin',1);
se = strel('disk',5);
ruido=imerode(Adelgaza,se);
me = strel('disk',1);
filtro2=imdilate(ruido,me);
%--------------------------------------------------------------------------
for l=1:size(filtro1,1)
for k=1:size(filtro1,2)
if filtro1(l,k)==1
x(1,cuenta)=l;
y(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x1=x(1,size(x,2))-x(1,1);
y1=y(1,size(y,2))-y(1,1);
cuenta=1;
for l=1:size(filtro2,1)
for k=1:size(filtro2,2)
if filtro2(l,k)==1
j(1,cuenta)=l;
i(1,cuenta)=k;
cuenta=cuenta+1;
end
end
end
x2=j(1,size(j,2))-j(1,1);
y2=i(1,size(i,2))-i(1,1);
Angulo=(acosd((x1*x2+y1*y2)/(sqrt(x1^2+y1^2)*sqrt(x2^2+y2^2))));
% figure
% hold on
% imshow(filtro2)