matlab三维数据绘图



3D数据绘制唇部图像主要由两部分构成,一个是唇部在X-Y平面的栅格,一个是根据相应Z轴的涂色。主要使用了matlab里meshgrid、surf和shading。

1 使用meshgrid生成栅格

meshgrid(x,y)由向量x和向量y通过复制的方法产生绘制图形时所需的栅格数据点矩阵X、Y。该命令产生栅格数据方法为:将向量X作为矩阵X的一个行向量,并将向量X复制length(y)次,以构成栅格数据点X矩阵;同样,将向量y作为矩阵Y的一个列向量,并将向量y复制length(x)次,以构成栅格数据点Y矩阵。

         

从图可以看出,在x、y平面生成数据栅格。

但是,通过meshgrid这样生成的都是矩形区域,即根据Z轴涂色的基础就是底层是个矩形,绘制的是规则图像,如果绘制不规则图像,就要使用linspace函数,linspace函数形式为linspace(X1,X2,N),以X1为起始元素,X2为结尾元素,生成等间距的N个元素的列向量,其实整个生成过程都是通过插值完成的,N代表X1和X2之间插多少个数据。本实验中画图使用如下:

             [X,Y] = meshgrid(linspace(min(aa),max(a),300),linspace(min(b1),max(b),300));

2 surf绘制三维曲面

通过上步绘完x和y的栅格后,就需要根据Z轴涂色以观察3维效果。Surf的格式为surf(x,y,z),其中X和Y就是上步骤中生成的栅格数据,Z则是X和Y对应的Z轴数据,以此为根据涂色。

但是涂什么颜色就要靠colormap和shading

了,本实验只涂了灰色,所以代码如下:

                          surf(X,Y,Z);
                          shading interp;
                          colormap gray;

但是上面有个问题没有提到,怎么将Z和X、Y的数据对应上呢,这个时候就要使用:

                  F = TriScatteredInterp(a,b,c);
                  Z = F(X,Y);

TriScatteredInterp就是将X、Y和Z的数据对应上。

3 坐标轴设置

本实验在坐标轴设置上,主要使用了两个特点,一个是使保存是不保存坐标轴,一个是设置坐标轴范围,分别使用代码如下:

           axis off  %使坐标轴消失
           %以下为设置坐标轴范围
           midX = (max(a) + min(aa))/2;
           midY = (max(bb) + min(b1))/2;
           midZ = (max(c) + min(c))/2;
           axis( [midX - 0.03,midX + 0.03,midY - 0.022,midY + 0.022,midZ - 0.015,midZ + 0.015]);

4 视角view

Surf画完图之后显示的并不是唇部的正面图,而是一个视点为方位角-37.5°,仰角30°的图像,通过旋转这个三维图,可以看到这个唇部的各个视角,第一眼呈现给观者的是个默认值,可通过view(az,el)定义呈现的视角,az表示方位角,EL

表示仰角。

                     view(2)  %投影到xy平面

5 保存print

最后画完图就需要保存图像了,使用print保存,其中通过‘-r9’可以设置保存图像的大小,代码如下:

                 print(gcf,'-djpeg','-r9',strcat(savepath,imageName));

但是这样保存的图片会保存图片周围大量的空白区域,所以使用以下代码可以将空白区域去掉:

         set(gcf, 'PaperPositionMode', 'manual');
         set(gcf, 'PaperUnits', 'points');
         axis image;
         set(gca,'position',[0,0,1,1]);
         set(gcf, 'PaperPosition', [0 0 510 510]);
         set(gcf,'visible','off');

注:小细节使用hold on和hold
off

参考资料如下:

http://wenku.baidu.com/link?url=Sx3UxRAcH3LRXuV8qJLpZNlYdUJNLMUaaCTvwqL_VutjIMTfhopwvEWWjERPmDDs4YPwS9PxOSzfBY8s9fHF5Fj0BfoK5AZo8mafPDHrLau

http://blog.macro2.org/2010-09/%e4%b8%8d%e8%a7%84%e5%88%99%e6%a0%b7%e6%9c%ac%e7%82%b9%e7%bb%98%e5%88%b6%e6%9b%b2%e9%9d%a2%e5%9b%be%e5%bd%a2-griddata%e7%af%87.html

http://wenku.baidu.com/link?url=87rv4fqsxBYVIop_8G5IiWhcRy88ZQ8hRccVoqH4FWBJ56lQ6kjTPRc8cxtLdPa64xZnbhsiHF8P-gU7JKR2vM76QuDT_k-WMFjAdV8raZW

http://hi.baidu.com/skyliujk/item/68c10d4785adc5eebcf45148

matlab三维数据绘图

时间: 2024-08-09 03:23:06

matlab三维数据绘图的相关文章

python matplotlib模块——绘制三维图形、三维数据散点图(转)

转自https://blog.csdn.net/eddy_zheng/article/details/48713449 python matplotlib模块,是扩展的MATLAB的一个绘图工具库.他可以绘制各种图形,可是最近最的一个小程序,得到一些三维的数据点图,就学习了下python中的matplotlib模块,如何绘制三维图形. 初学者,可能对这些第三方库安装有一定的小问题,对于一些安装第三方库经验较少的朋友,建议使用 Anaconda ,集成了很多第三库,基本满足大家的需求,下载地址,对

matlab各类数据l图像之间的转化

matlab各类数据图像之间的转化 rgb类型转化为二值的过程如下: 1.采用命令im2double将rgb类型转化三维的double >> str='E:\programing\Eigenface_PAC\Face\image_0001.jpg'; >> A=imread(str); >> imshow(A); 2.用命令imresize调整图像的尺寸大小 >> B=imresize(A,[529 529]); >> imshow(B); 3.

【Matlab开发】matlab中bar绘图设置与各种距离度量

[Matlab开发]matlab中bar绘图设置与各种距离度量 标签(空格分隔): [Matlab开发] [机器学习] 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ Matlab Bar图如何为每个bar设置不同颜色 data = [3, 7, 5, 2;4, 3, 2, 9;6, 6, 1, 4]; b = bar(data); 使用bar绘制非常直观简单,但有时需要突出显示某一个bar,比如该bar是一个标杆,用来衡量其bar的高度,所以可以用醒目

基于 移动最小二乘法(MLS) 的三维数据拟合

项目介绍: 1. 需要预测的数据: 2. 采用的权函数以及形函数: 3. 求解的形函数曲线结果: 4. 算法流程图: 5. 预测结果: x=[234 255 255 76 12];y=[162 242 176 54 55];z=[199 200 57 50 73]; 对应的预测结果为: >> MLS_Output Esti_ux = 53.3651 73.8599 54.2216 5.9668 9.0063 Esti_uy = 43.9818 77.5332 48.3499 5.2517 11

MATLAB三维散点图的绘制(scatter3、plot3)

MATLAB三维散点图的绘制(scatter3.plot3) (1)函数scatter3 用法:scatter3(x,y,z,'.',c) % c 为颜色,需和x,y,z长度相同 例子: x=[4229042.63      4230585.02    4231384.96    4231773.63    4233028.58    4233296.71   4235869.68    4236288.29]; y=[431695.4   441585.8      432745.6 4369

IVS.3D.Fledermaus.Professional.v7.2.1.429 win32+win64 交互式三维数据可视化系统

IVS.3D.Fledermaus.Professional.v7.2.1.429 win32+win64 交互式三维数据可视化系统功能强大的交互式3维数据可视化系统.它可以帮助用户完成包括海洋(海岸.海底)资源调查与制图.环境影响评估.采矿.地质调查以及各种研究等等在内的工作.全新的数据挖掘技术包括ShiftScape漫游引擎和Bat(3维输入设备),用以完成直观的3维地理信息数据的挖掘与分析.该系统广泛支持大量工业数据格式的直接输入.■□■□■□■□■□■□■□■□■□■□■□■□■□■□■

matlab三维画图

matlab三维画图主要有三个命令:plot3命令.mesh命令和surf命令. plot3 plot3是三维画图的基本函数,绘制的是最为主要的3D曲线图,最主要的调用格式是: plot3(X,Y,Z) 当X,Y,Z为长度同样的向量时,plot3命令将绘得一条分别以向量X,Y,Z为(x,y,z)坐标值的曲线 当X,Y,Z均为m*n的矩阵时,plot3命令将绘得m条曲线,每条曲线均为X,Y,Z列向量为(x,y,z)坐标值的曲线 mesh mesh与plot3不同的是它能够绘出在某一区间内完整的曲面

kinect脸部三维数据特征点标签语义详细说明

很多零零碎碎的事情,导致很久没写blog了.face animation的demo做完了也快一个月了,是时候总结总结了. Kinect获得的标识点共用121个,其给的sdk里面也给出了响应的标签.如下图: 但是这个说明点绝大部分是错的. 由于获得kinect标识点的三维坐标,并且将每个点标识,并在vtk中显示: 上篇blog已经提到过这个问题,这里主要详细说明每个点以及与对应的嘴巴,鼻子等语义的关联. kinect中眼睛,嘴巴是用两圈包围的顶点构成的,鼻子也是由外轮廓顶点构成,最终外围边界由稀疏

2014.08.04,读书,《Matlab概率与数理统计分析》-第1章 MATLAB的数据基础

第1章 MATLAB数据基础 虽然一直间或使用MATLAB,但从来没有系统的学习过,现在开始也不晚.先对几个重点或者平时忽略的要点做下笔记. %后的所有文字为注释,多条命令可以放在一行,但要用逗号或分号隔开,命令后的逗号表示显示结果,分号表示禁止显示结果. 符号…表示语句的余下部分将出现在下一行,但不能出现在变量名或运算符之间. M文件又称Script文件,具有全局性,文件中的所有变量在整个工作环境中有效. 命令: cumsum(x,dim),求累积和,matlab中cumsum函数通常用于计算