将图片 以三维的形式显示 灰度值作为Z轴高度的话
这里的prishape 是一个二值图,下面代码是要用三维形式 绘制该图的水平集图像
方法一
m=imread('Fig12.18(a1).jpg');
m=im2bw(m);
primask=1-m;
prishape = bwdist(primask)-bwdist(1-primask)+im2double(primask)-.5; % SDF 距离函数
prishape =double(prishape);
[m n]=size(prishape);
[X, Y] = meshgrid(1:n, 1:m);
Z = prishape;
figure,
meshc(X, Y, Z) % mesh meshc meshz 三个函数分别绘制三种类型 三维图
% axis([ 1 230 1 418 -44 123])
方法二
m=imread('Fig12.18(a1).jpg');
primask=1-m;
prishape = bwdist(primask)-bwdist(1-primask)+im2double(primask)-.5; % SDF 距离函数
prishape =double(prishape);
[m n]=size(prishape);
z=zeros(m,n);%z为二维数组,行列数可以不一样
for i=1:m
for j=1:n
z(i,j)=prishape(i,j);%利用z=f(x,y)来计算z的值
end
end
surf(z,'EdgeColor','None');%绘制z的3D图
shading interp;
m=imread('Fig12.18(a1).jpg');
m=im2bw(m);
primask=1-m;
prishape = bwdist(primask)-bwdist(1-primask)+im2double(primask)-.5; % SDF 距离函数
prishape =double(prishape);
[m n]=size(prishape);
[X, Y] = meshgrid(1:n, 1:m);
Z = prishape;
figure,
meshc(X, Y, Z) % mesh meshc meshz 三个函数分别绘制三种类型 三维图
% axis([ 1 230 1 418 -44 123])
方法二
m=imread('Fig12.18(a1).jpg');
primask=1-m;
prishape = bwdist(primask)-bwdist(1-primask)+im2double(primask)-.5; % SDF 距离函数
prishape =double(prishape);
[m n]=size(prishape);
z=zeros(m,n);%z为二维数组,行列数可以不一样
for i=1:m
for j=1:n
z(i,j)=prishape(i,j);%利用z=f(x,y)来计算z的值
end
end
surf(z,'EdgeColor','None');%绘制z的3D图
shading interp;
结果如下
针对函数的
另外一种 绘制三维图像 方法 (转载 http://blog.csdn.net/walkandthink/article/details/12887267)
- m=50;
- n=60;
- x=zeros(m,1);%生成长度为m的一维数组
- y=zeros(n,1);%生成长度为n的一维数组
- for i=1:m
- x(i)=-4.0+i*8.0/m;%对x进行初始化
- end
- for j=1:n
- y(j)=-4.0+8.0*j/n;%对y进行初始化
- end
- %利用x,y得到z=f(x,y),这里z为一个二维数组
- z=zeros(m,n);%z为二维数组,行列数可以不一样
- for i=1:m
- for j=1:n
- tempx=x(i);
- tempy=y(j);
- z(i,j)=tempx^3+tempy^2;%利用z=f(x,y)来计算z的值
- end
- end
- surf(z,'EdgeColor','None');%绘制z的3D图
- shading interp;
- 最后结果是: