我有一个 2D 图像,我想用这些约束/质量指标对其进行低通滤波:
- 我不能向图像“添加”光,因此结果中的每个像素都应该是 <= 输入中的相应像素。
- 低通截止频率应该是一个参数,进行实验
- 重复应用此过滤器不应显着改变结果。
- 运行此算法所需的时间(5MPix 图像需要 5 分钟似乎是合理的)
- 最大限度地减少被过滤掉的光量。
以下是我尝试过的一些方法,以及它们的缺点:
像正常一样使用高斯滤波器,然后将结果拉低以符合约束 1。这非常符合前 3 点,但减少了不必要的光。
通过它们之间的“低”点和“向下”抛物线拟合“向上”抛物线以平滑。这在 1D 中效果很好,但首先水平应用它,然后垂直应用它会在 2D 中产生不好的结果。我的申请需要更长的时间,但不会太长。但是,重复应用此过滤器将极大地改变结果。如果 (1D) 输入是完美的“向下”抛物线(根本不应该被过滤),它将被位于开始/结束处的 2 个“向上”抛物线替换。
使用其他形式的二维“基本”函数和线性求解来找到最佳参数。这只是目前的一个想法,尚未实施/测试。
我在信号处理领域的经验几乎完全是图像处理,因此我希望通过活跃于信号处理其他领域的专家的意见,找到解决这个问题的方法。
更新 2011/08/18
根据当前的反应,我决定通过添加典型输入的图表以及我最初描述的 3 种方法的结果以及我迄今为止收到的建议来使事情更加清晰。为了便于比较,我在这些示例中仅使用了一维过滤。
输入数据:
高斯滤波器+ 将其降低以符合要求(1)。
您可以看到,将其降低会导致右侧不必要的光线减少。
抛物线
就我而言,这非常出色,遗憾的是它并不能通过先应用水平,然后应用垂直来完美地转换为 2D。在这种情况下,您还可以看到我可以在浮点分辨率中评估拟合的抛物线,这是一个小好处,但不是绝对必需的。
灰度侵蚀
根据rwong的建议,我尝试了灰度侵蚀。我使用了与我的“拟合”抛物线具有相同抛物线形状的结构元素。结果几乎完全相同,因此看起来很有希望。但是,仍然存在一些问题: 1. 我的结构元素不够“大”(虽然它已经是 801 像素宽) 1. 我只有“向上”抛物线,没有“向下抛物线”来平滑从一条抛物线过渡到下一个。
中值过滤
仅出于完整性考虑,这并不是我真正想要的。
原始数据
我将原始输入数据 + 各种 python 命令粘贴到 pastebin 中,因此您也可以尝试使用相同的数据。
http://pastebin.com/ASnJ9M0p