如何用matlab实现图像网格化?

如何用matlab实现图像网格化?,第1张

可以使用meshgrid函数

meshgrid是MATLAB中用于生成网格采样点的函数。在使用MATLAB进行3-D图形绘制方面有着广泛的应蚂知用,函数效果如宴磨下图所示:

函数功能:

生成绘制3-D图形所需的网格数据。在计算机中进行绘图 *** 作时, 往往需要一些采样点,然后根据这些采样点来绘制出整个图形。在进行3-D绘图 *** 作时,涉及到x、y、z三组数据,而x、y这两组数据可以看做是在Oxy平面内对坐标进行采样得到的坐标对(x, y)

例如, 要在“3<=x<=5,6<=y<=9,z不限制区间” 这个区域内绘制一个3-D图形,如果只需要整数坐标为采样点的话。可能需要下面这样一个坐标构成的矩阵

(3,9),(4,9),(5,9)

(3,8),(4,8),(5,8)

(3,7),(4,7),(5,7)

(3,6),(4,6),(5,6)

在matlab中可以这样描述这个坐标矩阵:

把各个点的x坐标独立出来,得:

3,4,5

3,4,5

3,4,5

3,4,5

再把各个点的y坐标也独立出来:

9,9,9

8,8,8

7,7,7

6,6,6

这样对应的x、y结合,便表示了上面的坐标矩阵。meshgrid就是产生这样两个矩阵,来简化我们的 *** 作。然后根据(x, y)计算获得z,并绘制出三维图形。

在Matlab命令窗口中键入type meshgrid可以查看该函数的源代码(由此可以理解meshgrid的算法思想), 键入doc meshgrid或闷祥消者help meshgrid可以获得帮助文档。

语法

[X,Y] = meshgrid(x,y)

meshgrid返回的两个矩阵X、Y必定是行数、列数相等的,且X、Y的行数都等 于输入参数y中元素的总个数,X、Y的列数都等于输入参数x中元素总个数(这个结论可以通过查看meshgrid的源代码得到,可以通过示例程序得到验证)。

[X,Y]=meshgrid(x)与[X,Y]=meshgrid(x,x)是等同的

[X,Y,Z]=meshgrid(x,y,z)生成三维数组,可用来计算三变量的函数和绘制三维立体图

相关函数: plot3、mesh、surf、automesh、ndgrid

d=0.02r1=0.3

x=-r1:d:r1y=-r1:d:r1%赋值:x=[-0.3 0.3] y=[-0.3 0.3] 跨度都是0.02

for i=3:d:4 

  if i>=3.5&i<=3.8 姿纤    %不知道你说的10到15层是什么意思,是将图像中间某些点的数据清空?如果是这样就设置数据i,也许你不是这个意思,但是总之就是查找

      X=NaN

      Y=NaN

  else

      [X,Y]=meshgrid(x,y)%X=[-0.3 -0.2 …… 0.3;-0.3 -0.2 …… 0.3……;-0.3 -0.2 …… 0.3]

                          %Y=[-0.3 -0.3 …… -0.3;……;-0.2 -0.2 …… 0.2;…迹银仿…;0.3 0.3 …… 0.3]

      X(X.^2+Y.^2>((r1)^2))=NaN%将半径为0.3的圆外的数据清空,也就是画出圆柱形

      Y(X.^2+Y.^2>((r1)^2))=NaN%同上

      h2=mesh(X+1,Y+1,X*0+i)hold on%x=[0.7 1.3] y=[0.7 1.3] z=[3 4]

                                    %X*0+i 是为了画图时将z设置的与x行、列数一样

  end

                           

end

axis equal %坐标 设置坐搏拆标采取等长刻度


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12507814.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存