簡體   English   中英

從二進制圖像獲取n個最大區域

[英]Get n largest regions from binary image

我給出了一個大的二進制圖像(每個像素為1或0)。

我知道在該圖像中有多個區域(一個區域定義為一組由0包圍的相鄰1)。

我們的目標是找到最大的像素(就像素數或封閉區域而言,兩者現在都適合我)

我目前計划的方法是:

  • 開始一個1(或0,表示“命中”的坐標)的坐標數組

  • 直到無法進行更多操作為止:

    • 對於當前區域(這是一組坐標),請執行以下操作:

    • 查看是否有任何區域與當前區域對接,如果是,則將它們添加到一起,如果否,則繼續下一次迭代

我的問題是:是否有更有效的方法來執行此操作,並且(在任何大型庫中)是否已經測試過(並行或GPU加速的獎勵點)?

您可以使用唯一的ID對每個區域進行泛洪填充 ,將ID映射到該區域的大小。

您要使用連接的組件分析(也稱為標簽)。 它或多或少是您建議執行的操作,但是那里有非常高效的算法。 這個問題的答案解釋了一些算法。 另請參閱

該庫收集了不同的有效算法並進行了比較。

在Python中,您可能想使用OpenCV。 cv.connectedComponentsWithStats連接組件分析並輸出統計信息,其中包括每個連接組件的面積。

關於您的建議:直接使用像素坐標而不是原始圖像矩陣的效率非常低:在圖像中查找相鄰像素是微不足道的,在坐標列表中查找相同像素需要昂貴的搜索者。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM