MATLAB中关于surf函数的使用我在做毕设,初用MATLAB,题目是血管的三维重建,想要把一个二维的图通过坐标变换放入三维坐标系中的某个位置上,现在用到surf(x,y,z,c)函数.x是512*1,y是512*1,c是512*512,
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/04 01:08:27
MATLAB中关于surf函数的使用我在做毕设,初用MATLAB,题目是血管的三维重建,想要把一个二维的图通过坐标变换放入三维坐标系中的某个位置上,现在用到surf(x,y,z,c)函数.x是512*1,y是512*1,c是512*512,
MATLAB中关于surf函数的使用
我在做毕设,初用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语句上,
MATLAB中关于surf函数的使用我在做毕设,初用MATLAB,题目是血管的三维重建,想要把一个二维的图通过坐标变换放入三维坐标系中的某个位置上,现在用到surf(x,y,z,c)函数.x是512*1,y是512*1,c是512*512,
surf绘制的图像边是黑色的,你取512个点太密了,所以才看到一片黑,你可以取少一些采样点,一般不要超过100,或者用mesh绘制,它的边是有颜色的.还有一种方法是绘制后再加一句shading flat或shading interp
如果还有什么问题欢迎继续追问