Skip to content

DIC 数字图像相关

DIC 从散斑图像、区域匹配到位移场和应变场的测量流程图
DIC 的重点不是识别有没有缺陷,而是从图像相关中得到位移场和应变场。

基本原理

DIC(Digital Image Correlation)通过比较变形前后图像中局部子区的灰度纹理变化,估计材料表面的位移场,再由位移场计算应变场。通常需要在试样表面制作随机散斑,让算法能稳定匹配局部图像块。

DIC 的关键是相关窗口、搜索范围、亚像素插值、相机标定和误差控制。它不是简单的目标检测,而是全场定量测量技术。

解决的问题

传统应变片只能测一个或少数几个点,无法看到全场变形。DIC 解决的是材料和结构实验中的全场位移/应变测量问题,尤其适合局部化变形、裂纹扩展、复合材料失效和复杂形变。

应用场景

  • 拉伸、压缩、弯曲和剪切实验中的应变云图。
  • 裂纹尖端位移、裂纹扩展路径和断裂过程分析。
  • 复合材料、金属、橡胶、混凝土、岩土材料变形测量。
  • 结构健康监测和振动形变分析。
  • 显微尺度材料实验和高速冲击实验。

Python 库

工具用途
DICe开源数字图像相关工具,适合工程 DIC 分析
py2DICPython 2D DIC 项目,可做学习和二次开发参考
opencv-python图像读取、ROI、特征、可视化
numpy / scipy数值计算、插值、平滑、误差分析
matplotlib / plotly位移场和应变场可视化

最小示例

python
import cv2
import numpy as np

before = cv2.imread("before.png", cv2.IMREAD_GRAYSCALE)
after = cv2.imread("after.png", cv2.IMREAD_GRAYSCALE)

# 使用稀疏光流示意位移估计。正式 DIC 会使用相关子区和亚像素优化。
points = cv2.goodFeaturesToTrack(before, maxCorners=200, qualityLevel=0.01, minDistance=8)
next_points, status, _ = cv2.calcOpticalFlowPyrLK(before, after, points, None)

valid_before = points[status.ravel() == 1]
valid_after = next_points[status.ravel() == 1]
displacement = valid_after - valid_before

print("mean displacement:", np.mean(displacement.reshape(-1, 2), axis=0))

这不是完整 DIC 算法,只用于说明“通过图像匹配估计位移”的思想。正式实验应使用 DICe、py2DIC 等工具并进行标定和误差评估。

工程流程概览

散斑制备 -> 图像采集 -> ROI 选择 -> 相关计算 -> 位移场 -> 应变场 -> 误差检查 -> 实验结论。

维知 Wiki · 面向应用工程的 AI 知识与训练系统