【问题标题】:How to find brightest rectangle of certain size in integral image?如何在积分图像中找到一定大小的最亮矩形?
【发布时间】:2012-11-25 21:57:52
【问题描述】:

有什么比滑动窗口更快的吗?我尝试使用重叠矩形进行二分搜索 - 它有点工作,但有时会切断部分 blob(预期的,正确的) - 请参阅 http://juick.com/lurker/2142051 中的视频

【问题讨论】:

    标签: image-processing computer-vision


    【解决方案1】:

    二分查找毫无意义,因为它是一种用于在 排序 结构中搜索特定值的算法。

    除非你对图像有一些先验知识,否则你需要检查所有可能的位置,这就是你建议的滑动窗口方法。

    【讨论】:

    • 嗯,是的,您可能会争辩说,大量深灰色像素可能会产生更大的总和,即黑色背景和小白色斑点,但这实际上并没有发生,可能是因为黑色和深灰色都是均匀分布的在差异图像中。
    • 一维地考虑模拟。您有一个未排序的数字列表,并希望在最后一个中找到最大的数字。如果不检查列表中的所有数字,您就无法给出肯定的答案
    • 是和不是。例如,如果您有 100 个数字,其中 99 个是 0..1 范围内的噪声,而 1 是您需要找到索引的信号,并且您有数字 1..50 和 51..100 的总和,然后,为了使总和保证信号在任一范围内,您只需要信号超过 50 - 不需要对列表进行排序。那么,如果低于 50,则确实是概率问题。
    • P.S.现在我整整 15 分钟都在考虑这个列表示例,我想也许我可以在构建积分图像时尝试在每一行中找到最亮的像素,看看这些数据是否有用。
    【解决方案2】:

    克里斯是正确的,除非您可以说出周围区域的统计信息,例如,“我正在寻找的点周围的某些像素排列不太可能”。请注意,这与说“永远不会发生”不同,任何基于统计方法的算法都会有一个相关的概率(找到错误的框)。

    如果您认为您所需位置周围较大区域的统计数据可能提供信息,您可以在执行精细滑动窗口之前对较大的块进行一些块处理。例如,如果您可以说某个 64 x 64 区域包含最大值的概率很高,那么,您可以丢弃很多 [64 x 64] 像素区域,其中 32像素重叠(也许)只使用几个特征。

    您可以训练 AdaBoost 之类的东西来执行此操作。请参阅 Viola-Jones 的经典作品,该作品用于面部检测 http://en.wikipedia.org/wiki/Viola%E2%80%93Jones_object_detection_framework

    如果您绝对需要最大值位置,那么就像 Chris 所说,您需要到处搜索。

    【讨论】:

    • 查看我对 Chris 的第二条评论,但是是的 - 在我的情况下,图像是(或者应该是)大部分接近黑色(因为它是所谓的对齐帧和运行平均值之间的差异),并且理想情况下,只有移动的物体才能留下白色斑点。我的任务是找到这些斑点。目前它做得不好(正如你在视频中看到的那样),但它只需要 9 次总和计算,而在滑动窗口的情况下可能会花费数百或数千次。
    猜你喜欢
    • 2019-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-30
    • 2011-06-02
    • 1970-01-01
    相关资源
    最近更新 更多