2.2 滤波形态学当预处理


2.2 滤波与形态学当预处理

本节摘要:滤波抑制噪声、边缘算子提供边界线索、形态学用结构元腐蚀膨胀开闭。它们不是分割本身,却决定阈值能不能站住、网络看不看得到细目标。本节动手把高斯、中值、Sobel、Canny、开闭运算接到掩码管线里,并标出各自会抹掉什么。

核心问题

阅读完本节,你应当能够:

  1. 按噪声类型在均值、高斯、中值之间选择,并说明核太大的代价
  2. 用 Sobel 看梯度,用 Canny 得到细边缘,知道双阈值如何接长短线
  3. 用腐蚀去毛刺、膨胀扩区域、开运算去小突起、闭运算填小洞
  4. 在「清洗原图」和「修理预测掩码」两种用法上共用同一套操作

一、噪声不洗,阈值先输

传感器热噪声、压缩块效应、粉尘,会在灰度直方图上填平本该分开的双峰。Otsu 依赖类间方差,峰被填平就选错阈值。深度学习看似抗噪,实则把噪声纹理学成假纹理,验证集换相机就掉点。所以预处理不是「传统方法的事」,是数据管线的事。

线性滤波是邻域加权。均值核简单,边缘被一起糊。高斯核按距离衰减,更常用,核的标准差要和目标宽度匹配:标准差太大,细裂纹当噪声被抹掉。非线性的中值滤波对椒盐有效,因为孤立极值不会进入中位数。医学超声的斑点噪声更顽固,往往要专用方法,不要指望一个 3×3 高斯包打天下。

blur = cv2.GaussianBlur(gray, (5, 5), 1.0) med = cv2.medianBlur(gray, 5) # Sobel:水平与垂直梯度再合成幅值 gx = cv2.Sobel(gray, cv2.CV_64F, 1, 0, ksize=3) gy = cv2.Sobel(gray, cv2.CV_64F, 0, 1, ksize=3) mag = np.sqrt(gx * gx + gy * gy) edge = cv2.Canny(gray, 50, 150)

原文 Canny 默认低阈值 50、高阈值 150,这只是起点。图亮、对比弱时要按梯度分位数重估。Canny 内部是高斯、梯度、非极大值抑制、双阈值、滞后连接。你得到的是单像素宽的线,还不是区域。

二、形态学:结构元比函数名重要

腐蚀:结构元完全落入前景才保留,结果是前景缩小、细桥断开。膨胀:结构元碰到前景就涂上,前景变胖、近邻粘连。开运算:先腐蚀后膨胀,去掉小白点、断开细粘连,大块形状大致还在。闭运算:先膨胀后腐蚀,填小黑洞、接上小缝。结构元的形状和尺寸是超参:椭圆更贴细胞,矩形更贴零件边,十字更保守。

k = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) opened = cv2.morphologyEx(bin_img, cv2.MORPH_OPEN, k) closed = cv2.morphologyEx(bin_img, cv2.MORPH_CLOSE, k)

同一套运算出现在两个时刻。标注前:二值草图去噪,减少人工修点。推理后:网络输出的小连通域当误检扔掉,孔洞补上。两处核大小可以不同。训练时对标签做随机开闭当增强要谨慎——你可能把细目标从监督里删掉,模型会学成「细的都不是」。

操作 对前景 典型用途 误用后果
高斯 变糊 抑传感器噪声 细目标对比消失
中值 去孤立点 椒盐、坏点 角被削圆
Sobel 出梯度 看边界强度 不是闭合区域
Canny 出细线 轮廓线索 当交卷会缺面积
开运算 去小突起 去误检斑 细裂纹被剪断
闭运算 填小洞 补漏检孔 近邻目标被粘死

⚠️ 常见坑:先闭后开与先开后闭不是一回事。粘连目标先闭会更粘。先用开断开,再视情况闭,通常更安全。
💡 关键直觉:形态学没有语义,它只认形状尺度。核大于目标最小宽度,目标就会从数学上消失。

三、边缘在管线里的正确位置

Sobel 对噪声敏感,所以前面要有一点平滑。Canny 已经内置高斯。活动轮廓在第 3 章展开,它需要初始曲线,而初始曲线常常来自阈值或粗网络。不要把所有算子叠满:每多一次平滑,定位误差加一点。质检裂纹若宽度只有两三像素,我倾向中值去坏点后直接自适应阈值,而不是 Canny 再膨胀——膨胀会把裂纹量宽,面积失真。

深度学习输入侧的滤波要克制。骨干网络自己会学低通。过强的高斯等于你替网络做了它本该学的不变性,同时丢掉高频。更常见的做法是:只在传统基线分支上滤波;网络分支只做与训练一致的归一化。两套预处理写在配置里分叉,不要混在一个函数里用 if 散落。

图 开闭运算对掩码的修理

图 开闭运算对掩码的修理

四、和分割主线如何衔接

第 3 章阈值、分水岭会直接调用本节函数。第 6 章后处理会再调用一次。第 4、5 章的网络若输入已是强滤波后的糊图,跳跃连接也救不回已被抹掉的边界。因此默认策略:网络看接近原图的数据;传统探针看轻度去噪的数据;形态学主要作用在二值输出上。

实验时把核大小当成可复现超参记日志。换相机或倍率,核要按像素重新量目标宽度,不要沿用旧数字。这比换一种时髦滤波函数更要紧。

五、核尺寸怎么量

用尺子量,不要用习惯。打开一张典型图,数最细目标的像素宽度,结构元的短边必须小于它。裂纹宽 3 像素,5×5 开运算会把它剪断,再深的网络也学不到这条监督。换镜头或物距,像素宽度变了,核表要重填。把「核随倍率走」写进配置版本,和权重一起存。

去噪与保边是对偶。工业侧光若噪声不大,我倾向不高斯,只中值去坏点。医学低剂量 CT 噪声大,适度高斯或专用去噪后再分割。把滤波当必经仪式,细目标会先死在预处理里,模型背了个背锅的名。Canny 的内部高斯不要和前面的高斯叠两次,除非你量过边缘位移仍可接受。

形态学还有梯度、顶帽、黑帽等变体,本教程不展开成词典。开闭已经覆盖去斑补洞。顶帽适合亮细节在暗背景上的提取,可当第 3 章阈值前的增强,仍要量尺寸。结构元形状:椭圆贴细胞,矩形贴焊盘,十字更保守少伤对角细线。选形状也是一次叠图实验,不是审美。

问题:训练时要对掩码做随机开闭吗?

小幅度可以当形状扰动,但必须拒绝「开完前景消失」的样本。细目标任务我通常不对标签做形态学增强,只对图像做轻度模糊,让模型自己学噪。推理后处理再开闭,且验证两列对比。

本节过关:在试标图上展示「滤波过猛细目标消失」和「核合适斑点去掉」两张对照,核数字写入配置。没有对照,核就是魔法数。

六、两套核表

标注前清洗用一套较小的核,目的是少让人修点,但不能修掉真裂纹。推理后处理用另一套,目的是去网络碎斑,可以略大,但仍小于最小合法目标。两套写在配置两个键下,禁止共用一个魔法 5。换倍率只改表,不改函数。

Canny 与形态学不要叠成三明治:高斯、Canny、膨胀、闭、再高斯。每多一次平滑,边界往外或往里爬一点,体积类产品会被爬动。默认网络分支几乎不滤波,传统探针分支轻度去噪,二值输出再形态学。三条路径在配置里分叉,代码审查时看得到。

结构元形状用叠图选:椭圆、矩形、十字各跑一次开运算,看细目标谁还在。选留下细目标且斑点最少的。顶帽可作为裂纹在暗背景上的前置,但仍要量宽度。开闭顺序:先开后闭还是先闭后开,用粘连样本决定,粘连样本上先闭会更粘,通常先开。把顺序写进契约,和核一样重要。

两套核表换倍率只改数字。默认路径分叉:网络几乎不滤波,探针轻度去噪,二值再形态学。开闭顺序用粘连样本决定并写入契约。对照实验「核过大细目标消失」必须留图,评审看图不看口头。Canny 不要与额外高斯叠成三明治。结构元形状用三种试完选留下细目标的那一种。顶帽仅当裂纹在暗背景上的前置,仍受宽度约束。

核表评审看对照图不看口头。准备三张图:细裂纹、粘连斑、干净大块。过大核会在第一张上杀死裂纹,过小核会在第二张上留斑,第三张应几乎不变。三张过关才许把数字写入配置。换镜头先量细目标宽度再改表,禁止只改模型学习率来「找回」被核删掉的监督。路径分叉审查:打开配置应能看到网络、探针、后处理三个键,而不是一个全局滤波函数被四处调用。开闭顺序用粘连张决定,决定过程留图。Canny 三明治检查:搜索代码里连续两次高斯,删掉重复的一次。结构元三种形状的试选图存档。顶帽若启用,宽度约束与开运算同一把尺子。两套核表的键名写进契约,推理侧读后处理那套,禁止读清洗那套导致现场把细目标再剪一次。

反例档案:同一全局核 5 用在清洗、探针、后处理三处,细裂纹在清洗阶段已消失,网络背锅。拆成三键后裂纹回来,学习率没变。结论:路径分叉可见。第二份档案:Canny 前再高斯一次,边界外扩,体积偏大。删重复高斯后体积回到抽检。对照图三张仍是核表评审的入场券,没有图不准改数字。

口令卡:三键三核、细目标尺子、开闭顺序、高斯只一处、对照三图入场。全局核 5 的档案贴在配置文件头。换镜头先量宽度。推理只读后处理键。顶帽同尺。路径分叉审查一眼能看见三个键,看不见就重构。

配置文件头贴全局核事故。审查看不见三键就重构函数。换镜头量宽度再改表。推理侧读错键等于把细目标再剪一次,契约测试应拦住。对照三图永远是改数字的入场券,没有图的核变更视为非法提交。

没有对照三图的核变更一律退回。这一条单独写进提交模板,挡住只改数字不附图的请求。

形态学核宽必须小于最小目标宽度,否则开运算会把细血管或裂纹吃掉。把最小目标宽度写进规范,核宽写成配置字段,训练与推理用同一值。有人在训练前关滤波、推理时开滤波,叠图像素会对不齐,Dice 会无故掉。预处理开关进契约,不许口头开关。

本章回顾

  • 滤波服务直方图与网络:不洗噪声,Otsu 与细目标都受伤
  • Canny 是线不是区域:后面还要封闭或只当线索
  • 开去斑、闭补洞:顺序影响粘连,结构元尺寸是底线
  • 两处使用:标注前清洗、推理后修理,核可不同
  • 网络输入克制平滑:别替骨干把高频删光
  • 核随倍率走:换镜头先量最细目标再定核

下一节处理颜色空间与几何变换:图和掩码必须锁在同一套随机变换上。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U