24小时热门版块排行榜    

查看: 49  |  回复: 0

imagefly_app

新虫 (初入文坛)

[交流] 厚钢试样里的裂纹阈值分不出来,看一篇氢致裂纹 CT 文章的做法

金属大试样做 CT,裂纹分割一直很头疼:射线穿不透、信噪比低、金属伪影一堆,阈值一卡就乱。最近看到一篇压力容器钢氢致裂纹的文章,处理思路挺实用,分享一下。

文章是德国萨尔兰大学和 Fraunhofer IZFP 的 Hell 等人,Visualizing the 3D Evolution and Morphology of Hydrogen-Assisted Ductile Crack Growth in Hydrogen-Precharged P355NH Steel Using X-Ray Micro-Computed Tomography,Materials 2026, 19(7), 1335。对象是充氢和未充氢的 P355NH 紧凑拉伸(CT50)试样。

他们分两个尺度扫。整块 CT50 试样用 230 kV、55 W、1 mm 铜滤片、2×2 binning,体素约 55 μm,用来看整个厚度上的裂纹前沿。再从试样里取出包含裂纹尖端的小样,200 kV、7 W、0.7 mm 铜滤片,体素 5.5 μm,用来看裂尖附近的孔洞。作者还提到,小样体素其实可以做到 1.5 μm,但预实验发现信噪比低,加上射束硬化和金属伪影,孔洞分割反而不可靠,所以停在 5.5 μm。

分割都在 Dragonfly 3D World 2025.1 里做,两种数据用了两套办法。

小样里的孔洞:先做各向异性扩散滤波去噪、保边,然后简单阈值,只统计 30 μm 以上(大于 5 个体素)的孔洞。

大试样里的裂纹:阈值不行,改用 Segmentation Wizard 训练 Attention U-Net(交叉熵损失、Adadelta 优化器)。输入除了原始灰度,还加了一个 Sobel 滤波后的通道来突出裂纹边缘,用 2.5D 输入并做了数据增强。训练从一个试样的一张代表性切片开始,哪里分得差(主要是裂尖和试样边缘)就补哪里的标注,直到整块试样都稳定。验证用的是另一个试样上 9 张手工分割的切片,Dice 约 99.4%,之后直接用于所有试样,没有重新训练。裂纹长度和沿厚度的 CTOA 是用 Dragonfly 里的 Python 脚本算的。

结论是充氢试样裂纹扩展更多、CTOA 更低,裂尖附近孔洞更密、二次裂纹更多。作者也说了,测试过程中氢一直在往外逸出,结果会受影响,后续要做边充氢边加载的原位实验。

我觉得最值得借鉴的是两点:一是不同尺度的问题分开处理,大样只回答裂纹前沿在哪,孔洞交给小样;二是深度学习的验证用的是另一个试样,而不是训练用的那个。

另外 Dice 99.4% 看着很高,作者自己解释说差异主要集中在空气和钢的边界、一般在 1–2 个体素以内。大目标的 Dice 本来就容易高,细小目标就不一定了。

有没有人也试过把 Sobel、梯度这类滤波结果当额外通道喂给网络?效果明显吗?

源 DOI:10.3390/ma19071335
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 imagefly_app 的主题更新
普通表情 龙 兔 虎 猫 高级回复 (可上传附件)
信息提示
请填处理意见