Matlab实现二维数字图像相关(2D Digital Image Correlation, 2D-DIC)【ADIC2D代码复现及原理介绍】
目录
- 前言
- 一.数字图像相关(Digital Image Correlation)
- 二.相关运算
- 1.数学模型
- 2.形函数
- 3.相关标准
- 其他知识
- 三.ADIC2D代码解释
- 1.ImgCorr
- 2.SubCorr
- 四.写在最后
- 参考引用
前言
由于本人近期正在展开数字图像相关技术用于测量材料形变方向的研究,其中需要对别人现有算法的复现和调研,尽管其中很多算法都已经非常成熟,但对于初学者而言即使明白其中的原理,无法上手实践和操作的话,依然无法能够将其完全的应用起来或者在上面进行创新,我希望能将自己作为一个初学者复现他人代码和学习该原理的过程记录下来,方便每一个涉足该领域的人能更快应用这些知识。
本文所复现的论文——Atkinson D, Becker T. A 117 Line 2D Digital Image Correlation Code Written in MATLAB[J]. Remote Sensing, 2020, 12(18): 2906.1
GitHub源码地址:https://github.com/SUMatEng/ADIC2D.git
由于官方数据集可能存在变动或者被墙,这里提供一下我已经上传好的版本
数据集地址:
百度云:链接:https://pan.baidu.com/s/1In4ZAFRIzfWIxoBSMAYGYQ
提取码:8xmi谷歌云盘:https://drive.google.com/file/d/1JUTGmZirxXHYg4fPno-wE3YUmyTqWKzI/view?usp=sharing
数字图像相关专栏目录:
- Matlab实现二维数字图像相关(2D Digital Image Correlation, 2D-DIC)【ADIC2D代码复现及原理介绍】
- 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法(FA-GN与IC-GN)
- 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法IC-GN的数值解计算
- 用MATLAB绘制随机散斑图案【源码+正确的椭圆旋转公式】
这篇论文是让我真正想要将自己正在做的这些事进行记录的源动力,因为这篇文章的作者也是考虑到尽管数字图像相关技术很成熟,但是网络上缺乏可以实操的源码便于理解,从而将简化的代码以及对于原理的解释共享在网络上便于他人学习。非常感谢Devan Atkinson,Thorsten Becker两位作者对于他们知识成果的共享。我将在这里将我学到的东西以中文的形式以方便国内的学者进行进一步的研究。
This paper aims to bridge the gap between the theory and implementation of DIC. It does this by firstly presenting the theory for a 2D, subset based DiC framework that is predominantly consistent with current state-of-the-art practices. 1
一.数字图像相关(Digital Image Correlation)
数字图像相关技术(Digital Image Correlation, DIC) 是广泛应用于刚体结构形变检测的视觉测量技术。它通过在被测物表面投影或绘制随机散斑图案,定义图像的相似度函数,对物体形变前后的两幅图像进行分析即可得到采样点的位移场,从而得到形变2。数字图像相关技术按照其测量的维数,可以被分为二维数字图像相关(Two-Dimensional Digital Image Correlation, 2D-DIC)和三维数字图像相关(Three-Dimensional Digital Image Correlation, 3D-DIC)3。如图所示4就是2D-DIC获取形变后子区位移场的过程。
对于数字图像相关而言,其流程可以分为标定、相关运算、位移变换以及最后根据实际需要计算应变或者其他信息四个步骤,标定就是通过一系列拍摄的特定图案的图片,利用标定算法求解出相机图像坐标系与真实世界坐标系下的映射关系,之后我单独写一篇来分享好了,这里主要分享一下相关运算的流程与推导。
二.相关运算
数字图像相关的本质就是在参考图像上设置好子区后,找到形变后图片上对应的已经产生过位移的子区,从而计算出形变子区相对于参考子区在图像坐标系上的位移,最终利用标定好的映射关系求解出该区域在实际物理空间中的位移,最后利用得到的位移计算得到所拍摄表面所发生的形变。在这个过程中参考子区是已知的,但形变后的图片上原本的子区必然发生了变化,其具体位置是未知的,因此如何才能找到和原先参考子区对应的那块区域(求解这一未知量)正是关键所在,这正是相关运算所做的事情。
1.数学模型
我强烈建议大家能一起推导一次这一部分,对于理解相关运算有很大的作用!!
首先设参考图像为FFF,它很多时候代表了t=0t=0t=0时刻所拍摄到的散斑图案,其上的参考子区设为fff。
子区的排布有很多种,可以加步进那样整列排布,也可以随机的点选;子区的形状也可以各种各样,矩形、圆型,只要保证相关运算所处理的所有子区为同一种形状、大小的即可。
接下来设形变图像为GGG,其上的形变子区为ggg,如下为一个在相机图像坐标系下的示意图1
图中左上角的矩形框即为参考子区,右下角的平行四边形即为形变子区,其中参考子区fff中心点为x0=[x0y0]T\boldsymbol{x}^{0}=\left[\begin{array}{ll}x_{0} & y_{0}\end{array}\right]^{T}x0=[x0y0]T(后面的公式表达请注意上下标),参考子区上的其他像素点为xi=[xiyi]T\boldsymbol{x}^{i}=\left[\begin{array}{ll}x_{i} & y_{i}\end{array}\right]^{T}xi=[xiyi]T。以中心点x0\boldsymbol{x}^{0}x0作为参考,我们可以得到
xi=Δxix0+xo=[xiyi]=[ΔxiΔyi]+[x0y0]\boldsymbol{x}^{i}=\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}+\boldsymbol{x}^{o}=\left[\begin{array}{l} x_{i} \\ y_{i} \end{array}\right]=\left[\begin{array}{l} \Delta x_{i} \\ \Delta y_{i} \end{array}\right]+\left[\begin{array}{l} x^{0} \\ y^{0} \end{array}\right]xi=Δxix0+xo=[xiyi]=[ΔxiΔyi]+[x0y0]其中Δxix0\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}Δxix0表示x0\boldsymbol{x}^{0}x0到xi\boldsymbol{x}^{i}xi的坐标偏移。现在我们设置形变子区中与之前xi\boldsymbol{x}^{i}xi相对应的当前坐标点为xi′=[xi′yi′]T\boldsymbol{x}^{i'} =\left[\begin{array}{ll}x_{i}' & y_{i}'\end{array}\right]^{T}xi′=[xi′yi′]T,与之前中心点x0\boldsymbol{x}^{0}x0相对应的形变子区中心点为xd\boldsymbol{x}^{d}xd。与上式同理,我们同样可以得到xi′\boldsymbol{x}^{i'}xi′的表达式为
xi′=Δxi′x0+xo=[xi′yi′]=[Δxi′Δyi′]+[x0y0]\boldsymbol{x}^{i'}=\Delta \boldsymbol{x}^{i'} \boldsymbol{x}^{0}+\boldsymbol{x}^{o}=\left[\begin{array}{l} x_{i}' \\ y_{i}' \end{array}\right]=\left[\begin{array}{l} \Delta x_{i}' \\ \Delta y_{i}' \end{array}\right]+\left[\begin{array}{l} x^{0} \\ y^{0} \end{array}\right]xi′=Δxi′x0+xo=[xi′yi′]=[Δxi′Δyi′]+[x0y0]其中Δxi′x0\Delta \boldsymbol{x}^{i'} \boldsymbol{x}^{0}Δxi′x0表示x0\boldsymbol{x}^{0}x0到xi′\boldsymbol{x}^{i'}xi′的坐标偏移。注意,没有使用形变子区中心点作为参考点,是有两个原因的,第一个原因是由于本身xd\boldsymbol{x}^{d}xd对于我们来说依然是未知点,它只不过是一个xi′\boldsymbol{x}^{i'}xi′特例罢了,这里需要用一个已知点作为参考,还有一个原因会在形函数推导那一部分提到,这里先不引入。
在这个式子当中,最重要的就是计算这里的Δxi′x0\Delta \boldsymbol{x}^{i'} \boldsymbol{x}^{0}Δxi′x0,因为在获得这个值后就找到形变后与之前子区一一对应的像素点坐标,从而可以计算整个子区图像的位移场,最后即可计算该区域的形变或者受力了。而这个未知量的求解,需要引入一个有限元分析中的概念——形函数(Shape Function)。对于一个区域或者一个单元,其形变是可以通过数学模型来进行表示的,而这个用于描述的数学模型就是形函数(图像处理中常见的仿射变换实质就是一个形函数)。形函数的阶数越高,则可以描述的形变就越复杂。因此对于Δxi′x0\Delta \boldsymbol{x}^{i'} \boldsymbol{x}^{0}Δxi′x0是可以用形函数来表达的,这里设形函数关系为WWW,形函数参数(Shape Function Parameters, SFPs)为PPP,我们有
Δxi′x0=W(Δxix0,P)\Delta \boldsymbol{x}^{i'} \boldsymbol{x}^{0}=W(\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0},P)Δxi′x0=W(Δxix0,P)
那么现在关系式就全部建立完成了,接下来,如何建立这个形函数以及如何知道最合适的形函数参数成为了下一步的目标,首先是形函数的建立,这需要根据实际情况选择合适阶数的形函数关系,留到下一章进行探讨。那么如何知道最合适的形函数参数呢?这就需要用到数字图像相关最核心的内容——相关运算。在信号与系统中,评判两个信号的相似程度就是对他们进行相关运算,二维图像实质也是一种信号,因此评判参考子区和形变子区是否相似也是可以用相关运算的。
这样的话我们就可以将两者相关运算作为一个目标函数(其结果为相关标准,用于衡量两者的相似性, Correlation Criterion),通过建立好的形函数关系式以及一组形函数参数初值P0P_{0}P0,通过对相关标准的梯度下降法迭代求解,即可以找到一组最合适的形函数参数最优解P∗P^{*}P∗,此时所得到的形变子区就是与真实的形变情况最为接近的,从而实现了参考子区与形变子区之间的匹配!
二维数字图像本身是对于光强的一种采样,即本身是离散点,考虑到匹配的精度,需要对形变图像进行插值,以实现亚像素级别的匹配。经过插值运算后,参考子区和形变子区都可以写成函数的形式,即
fi=F(xo+Δxix0)f_{i}=F\left(\boldsymbol x^{o}+\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}\right) fi=F(xo+Δxix0)gi=G(xo+W(Δxix0,P))g_{i}=G\left(\boldsymbol x^{o}+\boldsymbol{W}\left(\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}, \boldsymbol{P}\right)\right)gi=G(xo+W(Δxix0,P))将上面的推导进行归纳,整个运算的实质就是通过给定一组形函数参数初值P0P_{0}P0,对目标函数(相关标准)不断迭代优化从而得到一组最优解P∗P^{*}P∗。
2.形函数
在二维数字图像相关中,最常采用的形函数有0阶形函数(WSF0W^{SF0}WSF0)、1阶形函数(WSF1W^{SF1}WSF1)和2阶形函数(WSF2W^{SF2}WSF2)。阶数越高,能描述的形变就越复杂,但待求解的的位置量也会越多。如图所示的就是这三种形函数的示意图1
0阶形函数:只能描述位移变化,无法描述拉伸或者扭曲(速度较快,适合用于小形变系统的实时检测)
WSF0(Δxix0,PSF0)=[10u01v][ΔxiΔyi1]\boldsymbol{W}^{S F 0}\left(\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}, \boldsymbol{P}^{S F 0}\right)=\left[\begin{array}{ccc} 1 & 0 & u \\ 0 & 1 & v \end{array}\right]\left[\begin{array}{c} \Delta x_{i} \\ \Delta y_{i} \\ 1 \end{array}\right]WSF0(Δxix0,PSF0)=[1001uv]⎣⎡ΔxiΔyi1⎦⎤
1阶形函数:能描述子区位移和拉伸(仿射变换),但不能描述扭曲(适合用于小形变系统)
WSF1(Δxix0,PSF1)=[1+uxuyuvx1+vyv][ΔxiΔyi1]\boldsymbol{W}^{S F 1}\left(\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}, \boldsymbol{P}^{S F 1}\right)=\left[\begin{array}{ccc} 1+u_{x} & u_{y} & u \\ v_{x} & 1+v_{y} & v \end{array}\right]\left[\begin{array}{c} \Delta x_{i} \\ \Delta y_{i} \\ 1 \end{array}\right] WSF1(Δxix0,PSF1)=[1+uxvxuy1+vyuv]⎣⎡ΔxiΔyi1⎦⎤
2阶形函数:能描述子区位移、拉伸和扭曲(适合用于大形变系统)
WSF2(Δxix0,PSF2)=[12uxxuxy12uyy1+uxuyu12vxxvxy12vyyvx1+vyv][Δxi2ΔxiΔyiΔyi2ΔxiΔyi1]\boldsymbol{W}^{S F 2}\left(\Delta \boldsymbol{x}^{i} \boldsymbol{x}^{0}, \boldsymbol{P}^{S F 2}\right)=\left[\begin{array}{cccccc} \frac{1}{2} u_{x x} & u_{x y} & \frac{1}{2} u_{y y} & 1+u_{x} & u_{y} & u \\ \frac{1}{2} v_{x x} & v_{x y} & \frac{1}{2} v_{y y} & v_{x} & 1+v_{y} & v \end{array}\right]\left[\begin{array}{c} \Delta x_{i}^{2} \\ \Delta x_{i} \Delta y_{i} \\ \Delta y_{i}^{2} \\ \Delta x_{i} \\ \Delta y_{i} \\ 1 \end{array}\right] WSF2(Δxix0,PSF2)=[21uxx21vxxuxyvxy21uyy21vyy1+uxvxuy1+vyuv]⎣⎢⎢⎢⎢⎢⎢⎡Δxi2ΔxiΔyiΔyi2ΔxiΔyi1⎦⎥⎥⎥⎥⎥⎥⎤由上述式子我们可以得到不同阶数形函数需要求解的参数为:
PSF0=[uv]T\boldsymbol{P}^{S F 0}=\left[\begin{array}{llllllllllll} u & v\end{array}\right]^{T}PSF0=[uv]TPSF1=[uuxuyvvxvy]T\boldsymbol{P}^{S F 1}=\left[\begin{array}{llllllllllll} u & u_{x} & u_{y} & v & v_{x} & v_{y} \end{array}\right]^{T}PSF1=[uuxuyvvxvy]TPSF2=[uuxuyuxxuxyuyyvvxvyvxxvxyvyy]T\boldsymbol{P}^{S F 2}=\left[\begin{array}{llllllllllll} u & u_{x} & u_{y} & u_{x x} & u_{x y} & u_{y y} & v & v_{x} & v_{y} & v_{x x} & v_{x y} & v_{y y} \end{array}\right]^{T} PSF2=[uuxuyuxxuxyuyyvvxvyvxxvxyvyy]T那这里的每一项参数代表什么呢?从上一节的内容,我们可以知道,对于参考子区中任意一个像素点,其对应的形变子区上的映射点坐标都可以写成参考子区对应点的坐标值+X/YX/YX/Y方向的偏移量的形式。同时,由于两个点本身相关,因此这个偏移量和参考子区对应点坐标是有关系的。因此,我们可以得到以下关系式,设参考子区上的某一点f(x,y)f(x,y)f(x,y),设其在形变子区上的映射点为g(x~,y~)g(\widetilde{x},\widetilde{y})g(x,y),我们有:
x~=x+u(x,y)\widetilde{x}=x+u(x,y)x=x+u(x,y)y~=y+v(x,y)\widetilde{y}=y+v(x,y)y=y+v(x,y)对两式进行二阶泰勒展开5,我们可以获得
x~=x0+u+uxΔx+uyΔy+12uxxΔx2+12uyyΔy2+uxyΔxΔy\tilde{x}= x_{0}+u+u_{x} \Delta x+u_{y} \Delta y+\frac{1}{2} u_{x x} \Delta x^{2} +\frac{1}{2} u_{y y} \Delta y^{2}+u_{x y} \Delta x \Delta yx~=x0+u+uxΔx+uyΔy+21uxxΔx2+21uyyΔy2+uxyΔxΔyy~=y0+v+UxΔx+vyΔy+12vxxΔx2+12vyyΔy2+vxyΔxΔy\tilde{y}= y_{0}+v+U_{x} \Delta x+v_{y} \Delta y+\frac{1}{2} v_{x x} \Delta x^{2} +\frac{1}{2} v_{y y} \Delta y^{2}+v_{x y} \Delta x \Delta yy~=y0+v+UxΔx+vyΔy+21vxxΔx2+21vyyΔy2+vxyΔxΔy而形函数的参数就是展开式中各项的系数,值得注意的是,展开式中的常数项(x0,y0)(x_{0},y_{0})(x0,y0),考虑到每一个子区只会计算一个形函数,因此单一子区内各点的计算均要使用相同的常数项,这也正是上一节中每个点均以参考子区中心点坐标作为参考的原因了。
在实际进行相关运算的过程中,需要根据实际情况选择合适的形函数,形函数选择的越好则计算得到的形变子区越接近真实情况,计算的值也会更加准确!
3.相关标准
相关标准在相关运算中相当于最后的评价函数,选择合适的相关标准对于迭代优化的速度有很大作用。一个评价函数的好坏我个人认为是要满足快收敛、足够“凸”、“抗噪声”,快收敛使得整体优化能尽快逼近最优解。足够“凸”使得每次迭代优化步进都会很大,同时最优解点确实够好。而抗噪声则确保了所逼近的最优解点和实际情况相符,而不是由于噪声导致的异常值,减小误差。这一块我自己还不太能吃透,就直接搬结果吧。
在Bing Pan等人的文章Equivalence of digital image correlation criteria for pattern matching6中介绍了各种相关标准的算术推导以及相互之间的转换,其中最好的三种相关标准为零均值归一化互相关标准(Zero-Normalized Cross-Correlation Criterion, ZNCC)、零均值归一化最小距离平方标准(Zero-Normalized Sum of Squared Differences Criterion, ZNSSD)和最优化参数的距离平方标准(Parametric Sum of Squared Difference, PSSDab)。7
这三种标准相互之间可以互相转换,在对最终结果的推导上是一致的。Bing Pan等人还在文章中测试分别使用PSSD与ZNSSD作为相关标准时候的计算效率,PSSD会更好一些。当然选用哪种标准还是要看实际情况来选择。
其他知识
考虑篇幅 (我太懒了而且没搞太懂) ,相关运算的其他知识点我就在这里提一嘴,之后有空再单独写帖子补充吧。
- 由于需要对形变图像进行精确插值,目前最常采用的插值运算为双三次b样条插值(bicubic b-spline interpolation)
- 上述的三种相关标准,对于高频噪声都比较敏感,因此需要对参考图像和形变图像都进行高斯滤波,滤除高频噪声(具体的参数需要研究,由于低通滤波器会将很多纹理模糊)
- 基于相关标准来优化形函数参数实质是个非线性优化问题,目前最常采用的计算方式为逆合成高斯-牛顿法——IC-GN算法(Inverse compositional Gauss-Newton method),推荐阅读数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法(FA-GN与IC-GN)
- 优化的开始需要提供一组形函数参数初值,这组初值越接近最优解,迭代速度提升也就越快,同时其合理性也决定了所得最优解与真实值之间的误差(因为优化等于一个寻找峰顶的过程,我们想要的是最高的峰顶,但如果初值位置不位于最高峰,则找到的峰顶并不是最理想的)。
三.ADIC2D代码解释
在github上下载好源码,根据readme下载好需要的数据集,我们即可完成对于ADIC2D项目的部署,注:我是在Matlab 2018a上进行的调试。如图,是部署好后的各文件含义
整个项目的调用关系及框架如图所示
部署完成之后直接运行runme.m
文件即可,数据集的选择、ADIC2D算法输入参数均可在文件开头进行修改。具体可修改参数如下:
% runme.m参数输入部分解释
Sample=3; % EN:which sample to analyse CH:选择使用的数据集序号1——3
FileNames=ImageNamesLoad(Sample); % load appropriate images for chosen sample
Mask=ones(size(im2double(imread(FileNames{1})))); % EN:define a mask that includes all pixels of the image CH:设定一个蒙版决定使用图片中的那些区域,即ROI% Function inputs (which set up the DIC analysis)
GaussFilter=[0.4,5];% 高斯滤波参数[sigma, kernal size],用于滤除高频噪声
StepSize=5; % 子区步进
SubSize=41; % 子区大小
SubShape='Circle'; % 子区形状
SFOrder=1; % 形函数阶数(0,1,2)
RefStrat=0; % 子区开始编号
StopCritVal=1e-4; % 停止迭代的标准
WorldCTs=0; % 世界坐标系下的标定点位置
ImageCTs=0; % 图像坐标系下的标定点位置
rho=0; % 标定板厚度(mm)
之后runme.m
会调用ADIC2D
算法函数将读入的数据集进行处理,之后会输出处理好的数据集结构体。runme.m
的后半部分是利用输出的数据结果进行显示和计算误差,包括某副图像子区沿X/YX/YX/Y方向的位移情况、位移结果的均方根误差等。这部分代码都比较易读,直接说一下ADIC2D
及其子函数的算法逻辑吧
1.ImgCorr
ImgCorr
函数就是按照上一个大章节中的思路来书写的,下面是它的算法概要
2.SubCorr
SubCorr
函数是利用IC-GN的方法来优化形函数参数,直到得到最优解,从而输出最佳匹配的形变子区信息,具体代码逻辑请参照论文1及其源码,这里仅展示其算法框架图
四.写在最后
这是我在自己做课题过程中读到的一篇写的很通透的论文,数字图像相关其实是很成熟的技术了,但是就目前看来在国内,这一块的研究还很少,即使是有相关的应用也大都是照搬理论,并没有对于这种技术详细的描述和深入的解释。本人也是个小白,希望能通过这篇帖子将这种技术说的稍微清楚些,其中如果有任何理解上的偏差和错误还望业界的大佬能多多指正,确保输出的知识足够准确和客观。之后我把自己的课题理清楚后,应该会写一个小的demo作为分享,方便相关学者们能更快的理解和使用这种技术。最后非常感谢Atkinson D, Becker T对于这份知识的分享。
推荐个应用该技术的网站,方便大家进一步深入
http://www.ncorr.com/index.php/dic-algorithms
参考引用
Atkinson D, Becker T. A 117 Line 2D Digital Image Correlation Code Written in MATLAB[J]. Remote Sensing, 2020, 12(18): 2906. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
Chu T C, Ranson W F, Sutton M A. Applications of digital-image-correlation techniques to experimental mechanics[J]. Experimental mechanics, 1985, 25(3): 232-244. ↩︎
周轶昊. 基于双目视觉的物体表面三维复杂运动重建及其应用[D].复旦大学,2012. ↩︎
Khoo S W, Karuppanan S, Tan C S. A review of surface deformation and strain measurement using two-dimensional digital image correlation[J]. Metrology and Measurement Systems, 2016, 23(3). ↩︎
Lu H, Cary P D. Deformation measurements by digital image correlation: implementation of a second-order displacement gradient[J]. Experimental mechanics, 2000, 40(4): 393-400. ↩︎
Pan B, Xie H, Wang Z. Equivalence of digital image correlation criteria for pattern matching[J]. Applied optics, 2010, 49(28): 5501-5509. ↩︎
Sutton M A, Orteu J J, Schreier H. Image correlation for shape, motion and deformation measurements: basic concepts, theory and applications[M]. Springer Science & Business Media, 2009. ↩︎
Matlab实现二维数字图像相关(2D Digital Image Correlation, 2D-DIC)【ADIC2D代码复现及原理介绍】相关推荐
- 数字图像相关(Digital Image Correlation, DIC)中的非线性优化方法IC-GN的数值解计算
目录 前言 内容回顾 一.IC-GN中增量 Δ P \Delta \boldsymbol P ΔP的数值解 二.写在最后 参考引用 前言 由于本人近期正在展开数字图像相关技术用于测量材料形变方向的研究 ...
- 二维数字图像相关算法软件Ncorr的使用心得
二维数字图像相关(2D Digital Image Correlation)是一种非接触式的光学测量方法,常应用于图像分析处理上,它可以根据变形前后的2张或多张图像,求解出规定区域 近似的位移与应变情 ...
- MATLAB编程(4)——MATLAB绘制二维高斯函数的三维图
本篇博文记录使用MATLAB绘制二维高斯函数的三维图. 用到的MATLAB函数--mesh()(绘制三维线框图)和surf()(绘制三维表面图). MATLAB命令窗口输入>> doc 函 ...
- MATLAB实现二维稳态导热
MATLAB实现二维稳态导热 一.理论基础 二.代码实现 一.理论基础 步骤: Step.1 二维模型传热控制微分方程的确定,具体推导可以在任何一本传热学的书中找到. d 2 T d x 2 + d ...
- C++二维码相关库编译
一.瞎想 坐在地铁上闲来无聊,突然想到了二维码,顺手就百度了下相关的资料,目前C++二维码相关的库不多,也就zbar(开源中国上下了半天也没下载下来).zxing,不过这两个库据说都是解析二维码的,不 ...
- matlab生成二维服从高斯分布的数据
matlab生成二维服从高斯分布的数据 2015-12-30 21:31 1263人阅读 评论(0) 收藏 举报 分类: matlab(8) 由于实验需要,需要生成两类模式的数据,同时这两类数据要 ...
- 二维码相关---java生成二维码名片,并且自动保存到手机通讯录中...
二维码相关---java生成二维码名片,并且自动保存到手机通讯录中... 技术qq交流群:JavaDream:251572072 1.首先介绍一个api. Zxing是Google提供的关于条码 ...
- matlab绘制二维曲线图
matlab绘制二维曲线图 今天,我们来讲一个用matlab绘制二维曲线图 下面直接上代码,会对代码一些部分进行一些讲解 %% 定义函数 x = 0:0.01:2*pi; y1 = sin(x); y ...
- MATLAB绘制二维曲线-fplot函数
MATLAB绘制二维曲线-fplot函数 fplot函数的基本用法 双输入函数参数的用法 fplot函数的基本用法 fplot(f,lims,选项) f代表一个函数,通常使用函数句柄的形式,lims为 ...
- Matlab:二维傅里叶变换
Matlab:二维傅里叶变换 二维傅里叶变换 二维衍射模式 fft2 函数将二维数据变换为频率空间.例如,您可以变换二维光学掩膜以揭示其衍射模式. 二维傅里叶变换 以下公式定义 m×n 矩阵 X 的离 ...
最新文章
- YII2 载入默认值 loadDefaultValues
- OpenCV学习之Scalar数据类型
- 机器学习(十二)——机器学习中的矩阵方法(2)特征值和奇异值
- Linux 命令行中的文件名/文件路径中使用通配符的说明
- C++(STL):04---智能指针之weak_ptr
- 作者:吴琳(1974-),男,博士,国防大学信息作战与指挥训练教研部教授,主要研究方向为复杂系统与网络、战争复杂系统建模。...
- 第58课 百钱买百鸡 《小学生C++趣味编程》
- Java笔记-JNI中简单的参数与返回值处理
- 深度学习《Transfer Learning》
- 带你认识7种云化测试武器
- 研究生科研必备!!!2015-2020年各类国际会议基于图像的三维重建论文综述(1)——总览
- IT 人士工作中的十不要!
- JQuery学习系列(三)语法
- Shell date指令
- 微型计算机基础知识提纲,自考“微型计算机应用基础”自考大纲(6)
- 辽宁省计算机考研排名,2014辽宁省大学研究生教育排行榜
- 个性化网管软件快速实现方法
- iOS版本关于微信分享后出现的“未验证应用”
- 机器学习方法三要素理解:模型、策略、算法
- [日常] 修改编辑word中的页眉页脚
热门文章
- 单片机知识点总结框图_89C51单片机的结构框图及原理解析
- java爬虫12306_java爬虫12306,爬取所有的站点和车次,并导入postgreSQL数据库
- 免越狱版 iOS 抢红包插件
- Python爬虫_宅男福利?妹纸勿点__一蓑烟雨任平生
- 乌班图系统安装mysql
- 编程语言难度排名_文言文可编程乎?CMU中国大四学生:开源文言文编程语言获1万+标星...
- 汤家凤:历年真题怎么用?接力题典怎么配合?黄金十月拼命干,提高很多分数不是梦!...
- python测试app性能_pythonapp性能测试
- x86 android armv7,说说Android项目中的armeabi,armeabi-v7a和x86
- 如何用计算机计算微积分,高数从此不用怕?一键计算微积分的神App