Anuncio

Colapsar
No hay ningún anuncio todavía.

Ayuda Analisis de la marcha

Colapsar
X
 
  • Filtro
  • Hora
  • Mostrar
Borrar todo
nuevos mensajes

  • Matlab Ayuda Analisis de la marcha

    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)

Contenido relacionado

Colapsar

Trabajando...
X