资讯动态

DIC数字图像相关技术:从图像序列到全场位移应变应力计算

发布时间:2026/9/7 2:27:04 来源:尧图企业网站定制
简介这是一套基于MATLAB的DIC数字图像相关完整实现程序面向材料力学、实验力学及图像处理方向的研究者与工程师。程序覆盖从图像预处理、特征点匹配、位移场计算到应变与应力分析的全流程配有注释清晰的M脚本和示例图像便于结合实际实验图像直接调试与二次开发。压缩包共161个文件含82个M源码、43张JPG和19张PNG示例图、5个FIG图形文件、10个HTML说明文档及2个TXT说明整体仅6.01MB轻量易获取。目前已有4153人学习下载常用于教学演示与科研验证。通过运行DIC主程序用户可观察散斑图像变形前后的匹配过程输出位移矢量场、应变分布云图等结果帮助理解DIC算法原理及MATLAB数值计算实现细节。 搞结构力学实验的人多半都遇到过这种情况试件贴了一排应变片辛辛苦苦采集完数据结果发现有个通道漂得离谱或者干脆在加载中途脱落了整个工况的数据直接报废。数字图像相关Digital Image CorrelationDIC这个技术之所以能成为实验力学领域的主流工具之一核心优势就是非接触、全场测量——不需要贴片一台相机对着试件连续拍照就能把整个表面的位移场、应变场算出来甚至在结合材料本构关系之后可以进一步估算应力场。这篇文章就围绕DIC主程序计算图像序列的位移、应变和应力这条完整技术链路从图像采集到最终结果输出把每一步的原理、算法和实操要点都说清楚给正在搭DIC流程或者想用DIC做实验的工程师、研究生一个可以直接参考的完整路线。1. 图像序列是DIC的原材料采集环节决定结果上限很多刚接触DIC的人容易犯一个错误觉得DIC就是软件处理图像随便拿手机拍一段视频就能算。实际上DIC的精度从采集那一刻就已经被锁死了后处理算法再厉害也救不回来一个模糊或者散斑质量差的序列。所以先说采集。1.1 散斑质量DIC的身份指纹DIC的原理是追踪图像中每个像素子区的灰度特征在变形前后的位置变化。如果试件表面是光滑的金属或者纯色塑料没有任何灰度梯度那算法面对的就是一片信息荒漠相关性计算必然失败。所以实验前必须给试件表面制作散斑——通常是先在表面喷一层白色底漆再喷黑色哑光漆形成随机分布的斑点或者用转印、丝网印刷等办法做出微米级的细密散斑。散斑颗粒的大小直接决定了测量的空间分辨率。一个经验法则是每个散斑颗粒在图像上应占据3~5个像素。喷得太粗子区内的灰度变化太平缓亚像素匹配精度下降喷得太细图像一放大就全是颗粒噪声同样影响相关性峰值。喷漆时还要注意漆层的厚度和均匀性过厚的漆层在试件变形时会跟着撕裂产生虚假的位移信号。此外散斑图案应该具有统计随机性均匀分布的规则方格点在傅里叶变换域里会出现周期峰值干扰相关搜索。1.2 相机标定与采样频率如果只做面内位移测量且使用的是远心镜头有时可以用像素换算比例mm/pixel直接做标定。但如果镜头存在透视变形或者需要同时测量面内和面外位移就必须做相机标定常见的做法是拍摄一组已知间距的棋盘格标定板计算相机的内外参数和畸变系数。标定板和试件所在平面应当尽量与传感器平面平行否则透视误差会在后续的应变计算中呈放大效应。采样频率的选择则由实验的动态特性决定。对于准静态拉伸、压缩实验几赫兹到十几赫兹的采样率通常足够对于冲击、爆破这类高速变形则需要高速相机配套高能光源。需要注意的一点是曝光时间不能过长否则运动模糊会在图像序列中引入方向性误差。光圈和焦距在实验开始后就不能再动否则标定参数失效数据作废。图像建议用BMP或TIFF这类无损格式保存压缩格式在经过有损编码后会抹掉部分灰度细节直接降低相关计算的鲁棒性。2. 主程序入口图像序列的读取与预处理流程采集完图像序列后DIC主程序的第一个任务是读入并组织这些图像让后续的算法模块能够按时间顺序逐帧处理。2.1 参考帧与变形帧的组织方式DIC习惯把变形前的图像称为参考图像reference image把变形后的图像称为目标图像target或deformed image。主程序通常需要一个清晰的输入目录结构比如一个文件夹里放参考图通常命名为ref、0000等其他文件按加载步顺序编号。读取时程序会将图像灰度化并转为浮点型数组这是为了保证后续插值和梯度计算时不会损失精度。常见的DIC主程序比如Ncorr、VIC-2D或者自己用MATLAB/Python封装的流程支持批量读图并且要求所有图像尺寸一致。这个看似不起眼的检查点其实很关键——如果实验过程中相机的自动对焦或者分辨率设置意外改变第二帧图像尺寸就和第一帧对不上了程序应当在此处直接中断报错而不是继续计算否则输出的位移场会是一场灾难。预处理阶段还经常包含对比度增强操作。一个常用的做法是对图像做直方图均衡化把灰度范围拉伸到整个0~255区间这样即使在光照偏暗的条件下子区匹配依然有足够的灰度差异可供算法识别。2.2 兴趣区域ROI的定义与掩膜处理整张图像通常包含了很大的无效区域比如试件边缘、夹具、背景。DIC会把计算集中在一个用户定义的兴趣区域ROI内。主程序一般提供矩形、多边形、或者基于灰度阈值自动生成ROI等方式。我个人的习惯是在参考图上用鼠标勾出试件的有效区域然后做2~3像素的边缘收缩shrink避开试件边缘因切割或夹持带来的局部大变形。ROI之外需要被排除的像素则生成一个掩膜。掩膜的重要性在于很多DIC算法在计算位移场后需要对结果做平滑或插值而平滑过程中边缘像素会借用周围无效像素的信息把边界处的位移值污染掉。有了掩膜程序就能在平滑阶段对无效区域进行约束保证边界附近的数值基本可信。3. 位移场求解相关性判据与亚像素精度图像序列组织好、ROI确定之后DIC的核心算法就正式登场了。DIC最根本的任务就是回答一个问题参考图像中某个像素子区在变形后的图像里移动到了哪里3.1 相关函数的数学基础假设参考图像中以点(x, y)为中心的一个大小为(2M1)像素 × (2M1)像素的子区变形后移动到了目标图像中以(x, y) 为中心的区域。DIC通过定义一个相关准则比如零均值归一化互相关函数ZNSSD或ZNCC来度量参考子区和目标子区之间的相似程度C Σ [ (f(xi, yi) - fm) / sqrt(Σ (f - fm)^2) - (g(xi, yi) - gm) / sqrt(Σ (g - gm)^2) ]^2当C取得最小值时对应ZNCC最大值我们认为找到了与该参考子区最匹配的目标位置。为了避免在整幅图像上盲目搜索主程序通常会结合初值预测相邻像素点的位移是连续的因此用前一个计算点的位移作为当前点的搜索起点再加上一个搜索半径限制即可把搜索范围限定在一个很小的局部窗口内大幅提升计算效率。3.2 亚像素插值与位移场计算像素级的匹配只能满足到1个像素的精度而DIC测量应变的典型范围是10^-4甚至更高对应的位移精度需要达到0.01像素级别所以亚像素定位是DIC的必修课。主流做法有两种第一种是相关系数插值法。计算子区在整像素位置附近的相关系数分布然后对其峰值邻域做二次或三次插值取插值曲面的极值点作为亚像素峰值位置。这种方法实现简单计算量小但精度受插值函数形式的影响。第二种是灰度插值加迭代重匹配。先对目标图像的灰度场做双三次样条bicubic或双五次样条插值得到连续灰度曲面然后采用类似的迭代算法如Newton-Raphson优化变形参数使相关准则在连续域上收敛。灰度插值法的计算量大得多但精度和稳定性都显著更好。工程上常用策略是先用相关性峰值粗匹配到整像素精度再以该点为初值启动Newton-Raphson迭代做亚像素细化两者结合可以在精度和效率之间取得良好平衡。位移场的输出格式一般是二维数组或矩阵分别对应图像坐标系下的u水平方向和v垂直方向两个分量。好的DIC主程序会在这时输出一张位移云图让你快速判断结果是否合理——比如拉伸试验的位移场应该沿加载方向递增、垂直于加载方向近似恒定如果云图出现明显的斑块或孤立跳变说明该区域的子区匹配已经失效需要回到参数设置阶段调整子区大小或步长。位移云图是一个直接有效的质量校验工具。3.3 窗函数与子区形函数的选择相关计算中还有一个容易被忽略的细节子区在变形过程中并非只做刚体平移还可能发生拉伸、旋转、剪切。所以主程序中需要选择形函数来描述子区的变形。零阶形函数只考虑平移适用于刚性位移为主的场景一阶形函数则包含位移梯度的8个参数4个位移分量、4个梯度分量能描述子区的均匀拉伸和剪切更高阶的形函数可以描述非均匀变形但参数变多后对初始解的敏感性也随之上升。子区大小的选择直接影响计算的空间分辨率和精度。子区越大包含的灰度信息越多匹配越稳定但测量结果的空间分辨率越低子区越小分辨率越高但抗噪声能力下降。常用经验是子区边长取8~20像素应变梯度大的区域需要更小的子区。另外在选择子区时建议加高斯窗函数——子区中心像素的权重更高、边缘权重更低这样可以抑制子区边缘不连续灰度值对相关计算的干扰。实际处理中如果位移场出现周期性的条纹状噪声往往就是子区形函数和窗函数没有搭配好值得先从这两个参数方向排查。4. 从位移到应变再到应力全场量化与后处理位移场是整个DIC计算的中间产品应变场才是工程上真正关心的指标。应力和应变的关系需要结合材料本构来确定这里分几个层次说清楚。4.1 应变张量计算与平滑策略位移场求应变核心是对位移分量求空间偏导数。工程中常用的应变度量有两种小变形下使用柯西应变工程应变大变形下则推荐格林-拉格朗日应变或对数应变。以二维情况为例格林应变的分量为Exx ∂u/∂x 0.5 × [(∂u/∂x)^2 (∂v/∂x)^2]Eyy ∂v/∂y 0.5 × [(∂u/∂y)^2 (∂v/∂y)^2]Exy 0.5 × (∂u/∂y ∂v/∂x) 0.5 × (∂u/∂x × ∂u/∂y ∂v/∂x × ∂v/∂y)由于DIC输出的位移场存在实验噪声的残留直接对原始位移场做数值微分会将噪声放大得到的应变云图会像磨砂玻璃一样布满高频毛刺。实际工程处理中主程序通常会先对位移场做空间平滑——常用方法包括局部最小二乘拟合在一个小的邻域窗口内用多项式拟合位移分布再解析求导、Savitzky-Golay滤波器等。平滑虽然掩盖了真实的高梯度变形细节但换来的是应变场的稳定性。需要注意避免反复多次平滑每次平滑都会引入信号畸变以一次为限。4.2 应力计算材料本构是前置条件纯DIC技术本身输出的是运动学量位移和应变。要想应力场需要额外引入材料本构关系这通常是DIC主程序的一个扩展模块。常见的做法是输入材料的弹性模量、泊松比和屈服应力等参数在弹性阶段由广义胡克定律直接计算应力分量σxx E × (1 - ν) / [(1 ν) × (1 - 2ν)] × (Exx ν × (Eyy Ezz) / (1 - ν))如果是塑性阶段则需要弹塑性本构模型如J2流动理论基于加载路径逐帧计算增量应力。塑性条件的引入使得应力场的求解不再是对应变场的简单线性映射而是子程序按加载步迭代更新。这里提醒一点如果应力场需要精确求解实验最好配合载荷传感器同步记录真实的外力用实测载荷对计算出来的应力场做验证——这一点很多初学者会忽略导致后续有限元仿真对不上号才发现问题。4.3 后处理可视化与结果导出位移、应变、应力计算完成后主程序通常会生成多组云图用伪彩图把场量的空间分布显示出来。看云图的逻辑是有规律的先看量级是否在物理合理的范围内再看梯度是否沿预期的加载方向变化最后检查是否有孤立的异常点或者条带状噪声。合理的云图应该是连续过渡的如果出现突然跳变的像素块多半是该处子区匹配失效需要考虑重新设置参数。结果导出方面常用数据格式包括CSV文本文件、Tecplot格式和HDF5等科学计算格式。HDF5可以同时保存多维场数据和标定信息方便后续用Python或MATLAB做进一步分析。导出的数据务必附带单位、坐标系统和帧号等元信息实验数据在数月后重新翻出来时这些元信息能够救命。5. 参数配置与迭代优化的工程实践跑通DIC流程并不难难的是让计算结果稳定可靠。以下参数配置和排查经验是我实际处理过多个项目后总结出的重点。5.1 子区大小和步长的匹配原则子区大小和步长是两个相互耦合的关键参数。步长是相邻两个计算点之间的像素距离决定了输出位移场的空间分辨率。为了获得平滑的场数据步长一般设为子区边长的1/4到1/2让子区之间有一定重叠。举例来说子区边长21像素步长取5像素甚至3像素这样相邻的位移计算结果覆盖的是高度重叠的图像区域结果在空间上的连贯性更好后续算应变时也不容易因位移点过于稀疏而出现毛刺。子区大小的选择还需要参考散斑颗粒尺寸。前面说过一个散斑点最好覆盖3~5个像素那么21像素的子区内平均应该有5~8个完整的斑点图案才能保证匹配的统计稳定性。如果实验对象很小、散斑无法喷细那么图像应尽量放大拍摄用显微镜头必要时需要采用全局DIC方法替代局部子区匹配。5.2 迭代不收敛时的排查路线遇到计算发散或位移场异常最常见的三个原因按出现频率排序为一是光照不均导致图像灰度漂移尤其是白光光源亮度不稳或自然光窗反射进入画面二是散斑质量差斑点过糊或过密三是初始参数设置不当如搜索半径小于真实位移。排查时应遵循从源头到算法的顺序先回看原始图像序列确认光照稳定、试件清晰再检查ROI是否覆盖了有效区域然后逐步缩小搜索半径观察是否出现多个匹配峰。冻结在某个区域内的“死区”现象即反复迭代后位移数据在原地震荡通常和该区域的散斑信息量不足有关建议修改散斑工艺或增加额外的局部照明。另有一个细节如果在加载过程中试件发生了面外刚体位移二维DIC会把面外位移误认为面内位移的变化导致应变虚假增大。这种情况下双相机三维DIC是正确出路或者在条件受限时尽量减少面外位移分量。5.3 虚拟应变实验验证参数合理性的快捷手段有一个做法值得养成习惯正式实验前先拍摄一组没有任何加载的零载荷图像序列用完全相同的参数做一次DIC计算。理想情况下无变形时位移应为零应变场应该为零但由于噪声和算法偏差实际会得到一个微小的虚假应变场这就是虚拟应变。正常情况下虚拟应变应该在50微应变50微应变以下如果超过这个量级说明子区大小或平滑参数还不够优化。以虚拟应变实验作为参数调优的校验能够让你在真实加载前就锁定参数选择的合理性。6. 从二维到三维的扩展与实际应用边界DIC技术的边界在于测量对象和维度。二维DIC只能测量平面试件的面内变形如果试件在加载过程中发生了明显的面外位移测量误差会显著增加。因此在进行高精度测量时如果预算允许我更倾向于优先考虑三维DIC。6.1 双相机三维DIC的适用场景三维DIC通常使用两台同步相机从不同角度拍摄试件表面利用双目视觉原理重建试件表面的三维坐标再逐帧追踪散斑的运动得到三维位移场。这种方法不仅可以处理曲面试件还能同时捕捉面内和面外位移真正满足复杂结构全场测量的需求。比如在堤坝位移监测等岩土工程场景中可以通过远程相机搭配投射散斑或利用天然纹理来观察坝面裂缝和滑移趋势三维DIC的价值就体现在这里——它能够捕捉到二维方法完全看不到的面外隆起或陷落。双相机系统的标定比单相机更严格需要对左右相机的外参相对位置和姿态进行同步标定并保证两相机的采集同步。主程序中一般内置了标定板识别模块通过拍摄多个位姿的棋盘格标定板来完成标定流程。6.2 工业现场与实验室环境的差异实验室环境下光照可控、振动可控DIC的测量精度很容易做到很高。但一到工业现场问题就复杂了环境光变化、灰尘附着、设备振动带来的图像模糊等都会直接影响DIC的计算质量。对于这类场景通常需要加装光源同步器将强光频闪与相机曝光同步抑制环境光的干扰同时需要固定支架做好隔振或在后处理时引入针对刚体振动的补偿算法。散斑的制作也要更耐磨必要时使用耐高温哑光漆或者耐腐蚀涂层避免实验过程中散斑脱落。DIC在岩土、结构监测中的应用还有一个特点相关计算对象未必是人工散斑而是天然的砂石纹路或混凝土表面纹理。此时子区的选择更加关键——天然纹理的频率成分丰富度往往不如人工散斑需要适当增大子区尺寸或采用自适应子区算法才能在保证匹配成功率的同时获得可接受的精度。6.3 结果可信度的交叉验证手段最后再强调一次交叉验证的观念。DIC算出的应变场再漂亮终究是间接测量结果应当与传统的点式测量手段进行对比。常用的验证方式有与应变片数据对比选点位置的应变-时间曲线与引伸计对比标距段的平均应变与有限元仿真结果对比全场分布的规律性。三者之间如果偏差在5%以内基本可以判断DIC结果是可信的。若偏差较大最可能的原因依次为标定参数不准、子区相关参数不合理、材料本构参数与实际不符。我个人的习惯是每次实验做完立刻把DIC的结果和应变片数据放到同一张图里对比如果趋势一致但存在固定偏差优先检查标定板距离和相机角度如果连趋势都对不上那大概率是相关计算已经错配必须回头排查图像质量。把这条验证逻辑养成肌肉记忆DIC对你来说就不只是一个会出漂亮云图的黑盒子而是一套真正可信赖的实验量测体系。本文还有配套的精品资源点击获取

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价