永发信息网

MATLAB中关于surf函数的使用

答案:2  悬赏:50  手机版
解决时间 2021-01-26 16:28
  • 提问者网友:趣果有间
  • 2021-01-25 22:13
我在做毕设,初用MATLAB,题目是血管的三维重建,想要把一个二维的图通过坐标变换放入三维坐标系中的某个位置上,现在用到surf(x,y,z,c)函数.x是512*1,y是512*1,c是512*512,c是512*512的一个图的灰度,但是程序结果输出的图是全黑的,不知道哪里错了。我选了一个关键步骤。谢谢了~~
filename=dir('C:\MATLAB7\work\*.bmp');
k=length(filename);
for i=1:k
image_data{i}=imread(filename(i).name);
gray_data{i}=double(image_data{i});
end
for i=1:20
x_last{i}=zeros(512,1); %定义最终三维坐标系中的x轴的坐标,实际上是1维列向量
y_last{i}=zeros(512,1); %定义最终三维坐标系中的y轴的坐标,实际上是1维列向量
z_last{i}=zeros(512,512); %定义最终三维坐标系中的z轴的坐标,实际上是512*512的矩阵
x_last{i}=(C(:,1)*cos(angle2(i,:)))/30+A0{i}(:,1);
y_last{i}=(C(:,2)*cos(angle1(i,:))+C(:,1)*sin(angle1(i,:))*sin(angle2(i,:)))/30+A0{i}(:,2);
for j=1:512
for k=1:512
z_last{i}(j,k)=(C(k,2)*sin(angle1(i,:))-C(j,1)*sin(angle2(i,:))*cos(angle1(i,:)))/30+A0{i}(1,3);
end
end
figure(i)
surf(x_last{i},y_last{i},z_last{i},gray_data{i})
end
其中的表达示不用管了,我觉得关键问题出在surf语句上,再说句谢谢啦~~
最佳答案
  • 五星知识达人网友:山有枢
  • 2021-01-25 23:08
surf绘制的图像边是黑色的,你取512个点太密了,所以才看到一片黑,你可以取少一些采样点,一般不要超过100,或者用mesh绘制,它的边是有颜色的。还有一种方法是绘制后再加一句shading flat或shading interp
如果还有什么问题欢迎继续追问
全部回答
  • 1楼网友:底特律间谍
  • 2021-01-26 00:45

主要是载入网格数据,比如:

clc; clear all; close all; [x,y,z] = peaks(30); figure; surf(x,y,z)

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯