2010-12-02 90 views
3

想象一下,我們有一個簡單的2D繪圖,填充了大量不重疊的圓圈和只有幾顆星星。在圖像上搜索指定項目的最快方法?

如果我們要找到所有這些圈子中的所有星星,我可以想到很少的方法。蠻力是其中之一。另一個可能會減小圖像大小(到仍然可以區分對象的最佳點),然後應用強力和映射到原始圖像。蠻力的缺點當然是非常耗時。我正在尋找更快的方法,可能是最快的方法。

在簡單的2D圖像上搜索指定項目的最快圖像處理方法是什麼?

+1

星星都一樣嗎?他們只是翻譯不同?或者也旋轉地? – lijie 2010-12-02 13:33:35

回答

5

在圖像中查找對象的一種典型方法是通過cross correlation。基本上,您可以查找掩碼(您嘗試查找的對象)與圖像之間的交叉關聯性最高的位置。該位置是您嘗試查找的對象的可能位置。

爲了簡單起見,我會參考您嘗試尋找的對象明星,但通常它可以是任何形狀。

一些問題,上述辦法:

  • 面具的大小必須匹配恆星的大小。如果你不知道明星的大小,那麼你將不得不嘗試不同大小的面具。 Image pyramids比反覆嘗試不同大小的蒙版更有效,但仍需要額外的努力。
  • 同樣,面具和星星的方向必須匹配。如果他們不這樣做,互相關將不起作用。

由於這些原因,對問題了解得越多,問題就越簡單。這就是爲什麼人們要求您在評論中提供更多信息的原因。 A 通用解決方案並不存在,據我所知。也許更有知識的人可以在這方面糾正我。

如上所述,縮小圖像的大小將有助於縮短您的方法的計算時間。在我看來,它幾乎不是解決方案的核心元素 - 它只是一個可選的優化步驟。

2

如果背景中的形狀很容易到segment,則可能可以計算出區分形狀/顏色描述符。根據您的問題,您可以選擇不變的縮放,平移或旋轉描述符(例如compactness,如果它對每個形狀都是唯一的)。不過,我不知道這是否會更快。

如果你已經知道確切的形狀,並有大小約一個想法,你可能想看看Generalized Hough Transform,這基本上是你的「蠻力算法」

1

當你列出的形式化描述該形狀並不那麼重疊的屬性我假定一個有效的算法將能夠

  • 通過以某種方式掃描圖像(I可以想像爲凸形狀相對高效和簡單的算法)
  • 切出的所有形狀
  • 當你離開時c UT斯達康出來的形狀,你可以使用交叉關係米莎提到

你應該說明問題更好一點

  • 可以在形狀旋轉或縮放(或其他一些改變?)
  • 是背景均勻顏色
  • 是形狀均勻的顏色
  • 是形狀填充

根據上述問題的答案,您可能會有更少或更簡單的解決方案。

此外,也許這article可能會有趣。

如果形狀非常規則,將它們轉換爲矢量可以很好地滿足您的需求,但這可能是一個矯枉過正的問題,真的取決於您以後想要做什麼。

1

步驟1:閾值 - 如果通用圖像集允許,則將圖像縮小爲1位(黑色或白色)。 [對於你引用的例子類型,我的猜測是閾值將很好地工作 - 留下足夠的細節來找到對象]。

第2步:可選擇做一些平滑/噪音消除。

第3步:使用一些聚類方法來收集前景對象。

第4步:使用適當的啓發式來識別對象。

步驟1/2中的參數將取決於圖像的類型以及實驗/觀察。 3如果你正確地計算了1/2,通常很簡單。 4將很大程度上取決於問題(例如,在您的情況下,識別星星 - 這取決於圖像中預期星星的實際形狀)。

相關問題