您现在的位置:首页 >> 三维重建 >> 内容

m基于遗传优化的凸松弛算法完成从二维人体图像中提取三维姿态的matlab仿真

时间:2023/4/12 22:38:59 点击:

  核心提示:09_051_m,包括程序操作录像+说明文档+参考文献...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/ZJeZlptx

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览




3.算法概述

       三维姿态估计是计算机视觉领域中一个非常重要的问题,它在许多应用中都具有重要的作用,如人机交互、姿态识别、动作捕捉等。在过去的几年中,随着深度学习技术的发展,基于深度学习的方法取得了很大的进展,但是这些方法仍然存在许多问题,如对于遮挡和复杂姿态的处理等。

4.部分源码

clc;

clear;

close all;

warning off;

addpath(genpath(pwd));

rng('default')

%FPGA/MATLAB/simulink仿真

%微信公众号:matworld

 

 

%初始spread 

mu     = 1;

 

%根据遗传算法进行参数的拟合

MAXGEN = 20;

NIND   = 50;

Chrom  = crtbp(NIND,1*10);

%14个变量的区间

Areas  = [0.5;

          1.5];

 

FieldD = [rep([10],[1,1]);Areas;rep([0;0;0;0],[1,1])];

 

LR     = zeros(NIND,1);

MU2    = zeros(MAXGEN,1);

gen              = 0;

 

for a=1:1:NIND 

    a

    LR(a)    = mu;       

    %计算对应的目标值

    errs     = func_obj(LR(a));

    E        = errs;

    J(a,1)   = E;

end

 

Objv  = (J+eps);

gen   = 0; 

 

while gen < MAXGEN;   

      gen

     

      P1 = 0.9;

      P2 = 1-P1;

 

      FitnV=ranking(Objv);    

 

      Selch=select('sus',Chrom,FitnV);    

      Selch=recombin('xovsp', Selch,P1);   

      Selch=mut( Selch,P2);   

      phen1=bs2rv(Selch,FieldD);   

      for a=1:1:NIND  

          if  gen == 1

              LR(a)    = mu;               

          else

              LR(a)    = phen1(a,1);      

          end

          

          %计算对应的目标值

          errs    = func_obj(LR(a));

          E       = errs;

          JJ(a,1) = E;

      end 

      Objvsel=(JJ+eps);    

      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   

      gen=gen+1; 

 

      %保存参数收敛过程和误差收敛过程以及函数值拟合结论

      MU2(gen)   = mean(LR);

      Error(gen) = mean(JJ);

      deltaf     = Error(gen);

end 

 

MU_best = MU2(end);      

MU_best

 

save best_mu.mat MU_best 

 

% figure;

% plot(MU2(3:end),'b-o');

% xlabel('Iteration Number');

% ylabel('mu');

% grid on;

 

 

 

 

function vis3Dskel(shapes,skels,viewpoint,flagShowCam,mode,Num,N)

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

 

    switch lower(mode)

 

        case 'ellipse'

 

            limbRadius = 0.15;

            limbColour = 0.7*ones(1,3);

            M = repmat(limbColour,length(indices),1);

            shape(1,:)=shape(1,:)+(jj-1)*10;

            plot3(shape(1,:),shape(3,:),shape(2,:),'.');  %,控制15个点的。。可以改为plot3(shape(1,:),shape(3,:),shape(2,:),'k.','MarkerSize',50);    'R.','MarkerSize',30,关节点状态,红色30大小。

            hold on

            grid on

 

            for i = 1:length(indices)

 

                P1 = [shape(1,I(i)) shape(3,I(i)) shape(2,I(i))];

                P2 = [shape(1,J(i)) shape(3,J(i)) shape(2,J(i))];

                P  = 0.5*(P1 + P2);

                U  = [ null(P1 - P2)'; (P1 -P2)/norm(P1-P2)];    % 函数null用来求解零空间,即满足方程组A*X=0的解空间。实际上是求出解空间的一组解(基础解系)。

                                                                 % 语法:z=null(A),z的列向量为方程组的正交规范基,满足z‘ x z=I。 

                                                                 % null(A)给出的是矩阵A的null space的单位正交基。对于矩阵A,用null(A)命令就直接求出来AX=0的解

                S = eye(3); S(1,1) = 1.5*norm(P1-P2);

                l = 0.55*norm(P1-P2);

                [x,y,z] = ellipsoid(0,0,0,limbRadius,limbRadius,l,8);

                axis equal;

                xv =x(:);

                yv = y(:);

                zv = z(:);

                newXYZ = U'*[xv';yv';zv'];

                xnew = reshape(newXYZ(1,:)+P(1),size(x,1),size(x,2));

                ynew = reshape(newXYZ(2,:)+P(2),size(x,1),size(x,2));

                znew = reshape(newXYZ(3,:)+P(3),size(x,1),size(x,2));

                handle = patch(surf2patch(xnew,ynew,znew));

                set(handle,'EdgeColor',[0.3 0.3 0.3],'EdgeAlpha',0.1);

                set(handle,'FaceLighting','phong','AmbientStrength',0.6);

                set(handle,'FaceColor', skel.tree(I(i)).color); 

                set(handle,'BackfaceLighting','lit');

            end

        case 'stick'

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

end

09_051_m

---

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关文章
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168