[已完结] 求助!如何识别计算出图片中灰点上裂缝的面积?

 关闭 求助已关闭
DOKEN 发表于 2025-6-18 15:38:36 | 显示全部楼层 |阅读模式
悬赏220积分

本帖最后由 DOKEN 于 2025-6-20 09:32 编辑

各位老师好!想请教问题详情如下:

显微镜下拍摄得到的图片如图所示(已简单处理掉了背景非目标物),需要将圆点中的深色裂缝“抠出来”计算以确定其占比面积。
Snipaste_2025-06-18_15-33-26.png

尝试使用ImageJ,发现软件无法分辨出圆点本身的灰色和裂缝的区别。想请教有无什么好的方法可以做到上述目标,烦请提供具体处理步骤,感谢!

期待各位老师的回复!

已采纳

建议尝试采用OTSU大津算法对图片像素进行分类,通过像素的分布应该可以分开。此外若有条件对裂缝外的地方进行曝光处理,分类识别时精度会进一步提高。

查看完整内容

全部回复8 显示全部楼层
任成清 发表于 2025-6-18 15:38:37 | 显示全部楼层
建议尝试采用OTSU大津算法对图片像素进行分类,通过像素的分布应该可以分开。此外若有条件对裂缝外的地方进行曝光处理,分类识别时精度会进一步提高。
任成清 发表于 2025-6-18 17:55:07 | 显示全部楼层
当然,你也可以采用机器学习的方式例如随机森林去识别分类,首先选取样本点,然后通过训练可以较高精度的去识别。
DOKEN 发表于 2025-6-19 11:13:26 | 显示全部楼层
任成清 发表于 2025-6-18 17:53
建议尝试采用OTSU大津算法对图片像素进行分类,通过像素的分布应该可以分开。此外若有条件对裂缝外的地方进 ...

试了下ImageJ里的这个算法,确实还是没办法分辨出目标缝隙。
DOKEN 发表于 2025-6-19 11:15:25 | 显示全部楼层
任成清 发表于 2025-6-18 17:55
当然,你也可以采用机器学习的方式例如随机森林去识别分类,首先选取样本点,然后通过训练可以较高精度的去 ...

老师您这边可否给出更具体地操作建议,例如:使用何种软件,通过何种操作可以得到目标结果。宽泛的回答我这边确实很难采纳您的答案。
任成清 发表于 2025-6-19 11:40:35 | 显示全部楼层
https://mp.weixin.qq.com/s/8LFP3-cVDwb_BkpRxhooWQ【你可以参考这篇公众号的内容
DOKEN 发表于 2025-6-20 10:45:40 | 显示全部楼层
预处理 (去噪 & 平滑):
打开图片:File > Open
(可选) 去噪:Process > Noise > Remove Outliers... (Radius: 1-2 pixels, Threshold: 20-40) 或 Process > Filters > Gaussian Blur... (Sigma: 0.5-1.0)。目标: 去除小噪点,平滑球体基底,但尽量保留裂缝边缘。小心不要模糊掉裂缝。

增强局部对比度 (关键步骤):
Process > Enhance Local Contrast (CLAHE):
Blocksize: 这是最重要的参数。它决定了局部区域的尺寸。通常设置在 20-100 像素之间。裂缝越细,块大小应该越小,以便在小区域内增强对比度。尝试不同值! 目标是让裂缝变得更黑,背景变得更均匀或更亮。
Histogram bins: 256 (默认通常即可)。
Maximum slope: 控制对比度增强的强度。2.0-4.0 是比较强的增强,1.0-3.0 比较温和。尝试不同值! 目标是裂缝清晰可见,背景没有过度增强产生伪影。
勾选 Fast (除非图像很大)。
替代方法: Process > Math > Subtract Background... (尝试不同的 Rolling ball radius)。这个“滚动球”半径必须远大于裂缝宽度,但要小于球体上最窄的“无裂缝”区域。目的是模拟并减去球体自身的渐变背景(由中心厚边缘薄引起),突出暗的裂缝。效果有时比CLAHE更好。

尝试阈值分割 (再次尝试):
应用CLAHE或背景扣除后,再次尝试 Image > Adjust > Threshold。
尝试不同的阈值算法 (如 Default, Huang, Intermodes, MaxEntropy, Triangle)。
仔细调整阈值滑块,观察是否能把大部**缝(红色覆盖区域)与球体基底区分开来。
勾选 Dark Background(因为裂缝是暗的)。

如果效果改善明显,点击 Apply。生成一个二值图(黑白图),白色代表裂缝(或背景,取决于设置),黑色代表球体基底。确保白色是裂缝! 如果不确定,在应用前检查预览。

后处理 (优化二值图):
清理小噪点: Process > Binary > Remove Outliers... (Radius: 1-2, Threshold: 50, Which outliers: Dark/Bright 根据二值图中裂缝是黑是白选择 Bright 或 Dark)。或者 Process > Binary > Erode (1次) 然后 Process > Binary > Dilate (1次) - 这称为“开运算”,能去掉小亮点。
连接断裂裂缝: Process > Binary > Dilate (1-2次),然后 Process > Binary > Erode (1-2次) - 这称为“闭运算”,能连接邻近的白色区域(裂缝)。注意: 过度膨胀会使裂缝变粗,影响面积精度。
填充小孔: Process > Binary > Fill Holes (如果裂缝内部有不该有的小黑洞)。

创建选区 & 计算面积:
确保二值图中,裂缝是白色,球体基底是黑色。如果不是,用 Edit > Invert 反转。
选中整个球体区域:用椭圆形选择工具 O 沿着球体边缘画一个尽量贴合的选择区域 (ROI)。
Analyze > Analyze Particles...:
Size: 0-Infinity (或设置一个最小值去除微小噪点,如 50-Infinity 像素)
Circularity: 0.00-1.00
Show: Nothing (或 Outlines 用于检查)
勾选 Display results, Summarize, Add to Manager
勾选 Exclude on edges (如果你的ROI紧贴球体边缘,裂缝不会碰到ROI边界,可以勾选;否则不勾选)
勾选 Include holes (非常重要!确保计算裂缝面积时,裂缝内部的孔洞不会被算作基底)
点击 OK。
在弹出的 Results 窗口中,查找 Total Area (所有检测到的白色颗粒的总面积,即裂缝总面积)。
在 Summary 窗口中,查找 ROI Area 或 Total Area (你之前用椭圆工具选中的整个球体区域的面积)。

计算裂缝占比: 裂缝占比 (%) = (裂缝总面积 / 球体区域总面积) * 100

最后算出来缝隙的占比在全图的百分之3.9%左右。
虽然算法很强,但是奈何我是原始人用不了现代武器啊,哎……
DOKEN 发表于 2025-6-20 10:54:47 | 显示全部楼层
任成清 发表于 2025-6-19 11:40
https://mp.weixin.qq.com/s/8LFP3-cVDwb_BkpRxhooWQ【你可以参考这篇公众号的内容

非常无力,您给了答案但是又没给答案。
只能说,谢谢回复,下次我会注意问题措辞的。
任成清 发表于 2025-6-20 12:45:05 | 显示全部楼层
客气,也是我的问题

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

VIP会员
  • 发布

  • 回复

  • 积分

    4270

返回列表