【三维重建】基于切片的三维重建MATLAB仿真
生活随笔
收集整理的這篇文章主要介紹了
【三维重建】基于切片的三维重建MATLAB仿真
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
clc,clear
v=csvread('vdata.txt'); % 數據 這里的數據矩陣為v(5*27*6),可以看成一本27頁紙,每頁繪制了5*6的網格,% 然后27頁紙疊在一起。當你理解本圖繪制后,數據可以隨意制作% 讀取文件,也可以讀取一部分
v=reshape(v,5,27,6); % 語法是 A = reshape(A,m,n); 或者 A = reshape(A,[m,n]);% 都是將A 的行列排列成m行n列。另外 reshape是按照列取數據的
[x,y,z]=meshgrid(1:27,1:5,1:6); % 三維網格化
h=figure(1);
set(h,'name','取單切片')
subplot(221)
slice(x,y,z,v,[],[1],[]); % 切片函數 y=1
shading interp % 平滑處理
set(gca,'zdir','reverse'); % ‘’都是屬性調整
axis equal % 將橫軸縱軸的定標系數設成相同值 ,即單位長度相同
grid on
subplot(222)
slice(x,y,z,v,[],[2],[]); % 切片函數 y=2
shading interp % 平滑處理
colormap('jet') % 顏色屬性
set(gca,'zdir','reverse'); % ‘’都是屬性調整
axis equal
grid on
subplot(223)
slice(x,y,z,v,[],[3],[]);
shading interp
set(gca,'zdir','reverse');
axis equal
grid on
subplot(224)
slice(x,y,z,v,[],[4],[]);
shading interp
set(gca,'zdir','reverse');
axis equal
grid on% 2.全空間立體切片
h2=figure(2);
set(h2,'name','全空間切片','MenuBar','none','ToolBar','none')
slice(x,y,z,v,[1:2:27],[2 3 4],[2 3 4 5]) % x方向1-27,以2位單元,y方向 分成3分,z方向分成4分
shading interp % 圖像平滑
colorbar % 顏色條
colormap('jet') % 顏色屬性
set(gca,'zdir','reverse'); % 屬性調整
axis equal
grid on
box on % 顯示坐標區輪廓 顯示圍繞當前坐標區的框輪廓% 3.立體包絡圖
h3=figure(3);
subplot(221);
set(h3,'name','定值包絡立體圖','MenuBar','none','ToolBar','none')
set(gcf,'InvertHardcopy','off')
fw=150; % fw是作主要可變參數,控制最外層包絡面的值 %%此值為最外層包絡面取值
fv=isosurface(x,y,z,v,fw); % 從三維體數據中提取等值面數據
% isovalue 中指定的等值面值處的體數據 V 計算等值面數據。等值面連接具有指定值的點,與等高線連接仰角相同的點的方式大致相同
p=patch(fv); % 創建一個或多個填充多邊形
set(p,'facecolor','b','edgecolor','none');
patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');% isocaps 計算等值面端帽幾何圖
% colorbar
% colormap('jet')
box on
daspect([1,1,1]) % 坐標軸尺寸變化為1:1:1
view(3) % 觀看角度 三維視角
set(gca,'zdir','reverse','color',[0.2,0.2,0.2]);
camlight % 在照相機坐標系中創建或移動光源對象
camproj perspective % 設置或查詢投影類型
lighting phong % 指定光照算法
axis equal
grid on
% title(['最外層表面的值為: ' , num2str(fw)]);% 三維投影
hold on
subplot(222);
set(h3,'name','定值包絡立體圖','MenuBar','none','ToolBar','none')
set(gcf,'InvertHardcopy','off')
fw=150; % fw是作主要可變參數,控制最外層包絡面的值 %%此值為最外層包絡面取值
fv=isosurface(x,y,z,v,fw); % 從三維體數據中提取等值面數據
%isovalue 中指定的等值面值處的體數據 V 計算等值面數據。等值面連接具有指定值的點,與等高線連接仰角相同的點的方式大致相同
p=patch(fv); % 創建一個或多個填充多邊形
set(p,'facecolor','b','edgecolor','none');
patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');% isocaps 計算等值面端帽幾何圖
% colorbar
% colormap('jet')
box on
daspect([1,1,1]) % 坐標軸尺寸變化為1:1:1
view(90,0); %在yoz面上的投影
set(gca,'zdir','reverse','color',[0.2,0.2,0.2]);
camlight % 在照相機坐標系中創建或移動光源對象
camproj perspective % 設置或查詢投影類型
lighting phong % 指定光照算法
axis equal
grid on
% title(['最外層表面的值為: ' , num2str(fw)]);hold on
subplot(223);
set(h3,'name','定值包絡立體圖','MenuBar','none','ToolBar','none')
set(gcf,'InvertHardcopy','off')
fw=150; % fw是作主要可變參數,控制最外層包絡面的值 %%此值為最外層包絡面取值
fv=isosurface(x,y,z,v,fw); % 從三維體數據中提取等值面數據
%isovalue 中指定的等值面值處的體數據 V 計算等值面數據。等值面連接具有指定值的點,與等高線連接仰角相同的點的方式大致相同
p=patch(fv); % 創建一個或多個填充多邊形
set(p,'facecolor','b','edgecolor','none');
patch(isocaps(x,y,z,v, fw), 'FaceColor', 'interp', 'EdgeColor', 'none');% isocaps 計算等值面端帽幾何圖
....................................
?
D202
?
總結
以上是生活随笔為你收集整理的【三维重建】基于切片的三维重建MATLAB仿真的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【CUDA7.5】MATLAB中配置Wi
- 下一篇: 【OFDM】基于simulink的OFD