如何在含可变背景噪声的高噪灰度图像中检测微弱线条?
问题:检测噪声调制背景下的微弱线条存在性
问题描述
我有一张噪声水平沿单轴调制的高噪灰度图像,图像中可能存在一条宽度未知的非常微弱的线条,需要实现自动化检测该线条是否存在。
合成示例
以下是两个用于测试的合成示例图像:
- 极端示例(对应代码中
back变量生成的图像):
- 较温和示例(对应代码中
back2变量生成的图像):
合成示例生成代码
import numpy as np def background(N, M, nl, nf, nT, r): a = nf*np.sin((2*np.pi/nT)*np.arange(N)) a = a.reshape(-1, 1) fuzz = nl + a*np.ones((N, M)) fuzz += r*a*np.random.normal(size=(N, M)) return fuzz def add_slider(B, s, v, w, a, r): N, M = B.shape amps = a + r*np.random.normal(size=M) x = np.arange(N) for i, y in enumerate(range(s, N, v)): if i >= M: break B[:, i] += amps[i]*np.exp(-(x - y)**2/(2*w**2)) def subtracted(im): return im - im.mean(1).reshape(-1, 1) # 生成极端示例 B = background(1000, 300, 0, 5, 100, 1) add_slider(B, 0, 2, 40, 1, 1) back = subtracted(B) # 生成较温和示例(修正原代码中错误的gs.前缀) B2 = background(1000, 300, 0, 5, 100, 1) add_slider(B2, 0, 2, 40, 5, 1) back2 = subtracted(B2)
已尝试方法及问题
- 高斯模糊:部分场景有效,但线条宽度参数难以适配,且对近垂直的线条检测能力差
- 旋转掩码:受调制噪声干扰,检测结果不稳定
- Radon变换:输出结果波动大,可靠性不足
- Canny等标准边缘检测:依赖局部梯度特征,完全被强噪声掩盖
需求
寻求一种无需预先知晓线条宽度等参数的通用检测方法。
内容的提问来源于stack exchange,提问作者Andrew DiFabbio
相关产品推荐
相关产品推荐

