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

m基于LK光流提取算法的三维医学图像运动估计matlab仿真

时间:2023/3/4 23:01:41 点击:

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

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

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

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

点击店铺

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

2.部分仿真图预览





3.算法概述

      Gibson首先提出了光流的概念,所谓光流就是指图像表现运动的速度。物体在运动的时候之所以能被人眼发现,就是因为当物体运动时,会在人的视网膜上形成一系列的连续变化的图像,这些变化信息在不同时间,不断的流过眼睛视网膜,就好像一种光流过一样,故称之为光流。光流法检测运动物体的原理:首先给图像中每个像素点赋予一个速度矢量(光流),这样就形成了光流场。如果图像中没有运动物体,光流场连续均匀,如果有运动物体,运动物体的光流和图像的光流不同,光流场不再连续均匀。

4.部分源码

........................................................

tic;

len    = 76;

sizes  = 128;          %图片缩小比例,越小处理速度越快。由于3D图非常耗资源,所以得小点。。

areas  = min(64,sizes);%光流场计算范围缩放

sel    = 1;%是否显示原三维图

 

%1.读取图像数据

%1.读取图像数据

for pp = 1:10

    pp

    %读取连续的图片

    if pp  <= 9

       str1 = ['CT_PIC\Export000',num2str(pp),'\SR0000']

       str2 = ['CT_PIC\Export000',num2str(pp),'\SR0000\*.jpg']

    else

       str1 = ['CT_PIC\Export00',num2str(pp),'\SR0000']

       str2 = ['CT_PIC\Export00',num2str(pp),'\SR0000\*.jpg']    

    end

    folder     = str1;

    list       = dir(str2);

    I2         = func_read_serial_pic(folder,list,len,sizes);

    

    for i = 1:length(I2)

        D(:,:,i) = I2{i};

    end  

    Images{pp} = D;

end     

  

%显示三维图像

for pp = 1:10

   [x,y,z,D] = reducevolume(Images{pp},[1,1,1]);

   D = smooth3(D);

   if sel == 1

      figure;

      p  = patch(isosurface(x,y,z,D, 1,'verbose'), 'FaceColor', 'red', 'EdgeColor', 'none');

      p2 = patch(isocaps(x,y,z,D, 5), 'FaceColor', 'interp', 'EdgeColor', 'none');

      view(3); 

      axis square;  

      daspect([1 1 .4])

      colormap(gray(100))

      camlight; 

      lighting gouraud

      isonormals(x,y,z,D,p2);    

   end

   pause(0.01); 

end     

     

%2计算光流场

%2计算光流场

for i = 2:10

   [u,v,w]=func_cal_demons(Images{i-1},Images{i},1);

   U{i-1} = u;

   V{i-1} = v;

   W{i-1} = w;

end   

 

%显示三维光流场

step = 4;

[x,y,z]    = meshgrid(1:step:sizes,1:step:sizes,1:len);

 

for k = 1:9

    figure;

    for j = [10,20,30,40,50,60,70]%设置这个参数,可以减少或增加显示的数目,方便观察

        quiver3(x(:,:,j),y(:,:,j),z(:,:,j),U{k}(1:step:sizes,1:step:sizes,j),V{k}(1:step:sizes,1:step:sizes,j),W{k}(1:step:sizes,1:step:sizes,j));

        axis([0,sizes,0,sizes,-5,80]);

        hold on

    end

    hold off

    pause(1);

end 

 

 

%3数据输出

%注意,MATLAB可将图像直接保存为ascii数据,然后你在Tecplot中进行调用

 

%4.计算时间统计分析

toc;

 

%5.释放存储空间,退出程序,这个步骤注释掉,方便观察每个步骤产生的数据;

%clc;

%clear all;

09_027_m

---

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