2011-08-28 231 views
15

我是試圖找到的可接受的複雜性物體檢測+分割

  • 一種有效的方式在圖像中檢測對象,所以我可以從其周圍隔離它
  • 區段反對其子部件和對其進行標記以便我能那麼隨意

這是3周以來我進入了圖像處理的世界獲取他們,我看過這麼多的算法(過篩,蛇,更多的蛇,傅里葉相關,等等)以及啓發式,我不知道從哪裏開始,哪一個是「最好的」 「爲了我想要實現的目標。考慮到感興趣的圖像數據集是一個相當大的圖像數據集,我甚至不知道我是否應該使用OpenCV中實現的一些算法,或者如果我應該實現一個我自己的算法。

綜述:

  • 我應該關注哪些方法呢?爲什麼?
  • 我應該使用OpenCV來處理那種東西,還是有其他更好的選擇?

在此先感謝您。

編輯 - 關於數據集

每個數據集包括產品80K例如圖像共享相同

  • 概念的更多信息T恤衫,手錶,鞋
  • 大小
  • 取向(其中90%)
  • 背景(其中95%)

在每個數據集的所有圖片的外觀幾乎相同除了產品本身,顯然。爲了讓事情更加清楚一點,我們只考慮「手錶集」:

組中的所有圖片看起來幾乎完全一樣:

enter image description here

(再次,除了形成手錶本身)。我想提取錶帶和錶盤。事情是,有很多不同的手錶風格,因此形狀。從我目前閱讀的內容來看,我認爲我需要一種模板算法,允許彎曲和拉伸,以便能夠匹配不同風格的肩帶和錶盤。

而不是創建三個不同的模板(帶子的上半部分,帶子的下半部分,錶盤),只創建一個模板並將其分成3個部分是合理的。這樣,我就足夠確信,每個部分都是相對於彼此被檢測到的,如預期的那樣。在錶帶下部以下不會檢測到錶盤。

從我遇到的所有算法/方法論看,主動形狀模型似乎是最有前途的模型。不幸的是,我還沒有設法找到一個下降實現,我不夠自信,這是最好的方法,以便自己寫一個。

如果有人可以指出我應該真正尋找什麼(算法/啓發式/庫/等),我會感激不盡。如果您再次認爲我的描述有些模糊,請隨時索要更詳細的描述。

+0

您是否介意描述圖像的域,甚至是圖像的某些樣本。對於一般的對象檢測/識別/分割,我相信或者一般認爲,域的良好邊界會給你一個'邊緣'來區分什麼是分割的,哪些不是。 –

+0

@gary - 我想要實現的(很多)事情之一:擁有手錶的圖像,例如[鏈接](http://upload.wikimedia.org/wikipedia/commons/0/06/Seiko_7002-7020_Diver%27s_200_m_on_a_4-ring_NATO_style_strap.JPG),我希望能夠獨立處理'上'和'下'部分的錶帶和錶盤。這就是爲什麼我需要某種支持分割的模板。 – sawidis

+0

你可以發佈你的數據集中的幾幅圖像,以顯示它們的多樣性。例如,如果您的所有圖像都是作爲鏈接,面朝上,直接進入相機的維基圖像,並且沒有比例尺,照明差異或手錶品牌或類型差異,則可以極大地簡化您的算法。 – Maurits

回答

8

從你已經說過了,這裏是第一眼彈出一個幾件事情:

  • 最簡單的事情做二值化圖像,然後使用OpenCV的或CvBlob庫連接的組件。對於非複雜背景的簡單圖像,這通常是yeilds對象
  • HOwever,看你的樣品圖像,基於紋理的分割技術可能會更好地工作 - 錶盤,揹帶和背景明智變異的紋理/粗糙度,這可能是分離它們的理想方法。

    通過特徵變換可以很容易地找到一部分的粗糙度(在SO上解釋一下,檢查提供在那裏的研究論文的鏈接),然後可以將Mean Shift濾波器應用於特徵變換的輸出。這將使區域根據紋理明顯分離。金字塔形Mean Shift和SVD的特徵值都是在OpenCV中實現的,因此除非您可以優化您自己的代碼,否則就速度和效率而言,使用內置函數(如果存在的話)會更好(也更容易)。

+0

謝謝!我真的很感激你的幫助=) – sawidis

3

我想我會解決這個問題。我不使用撥號盤,而是使用手錶中一組強大的功能將目標圖像「拼接」到模板上。第一隻手錶在錶盤上有一組白色的正方形,第二隻手錶上有許多白色圓圈。我會每種類型的手錶:

  • 分段撥出正方形或圓圈。分割步驟可能會很棘手,因爲它們通常都是比例和光線依賴
  • 估計上述找到的特徵區域的中心或角點。這些是新的特徵點。
  • 使用匈牙利語算法來匹配模板手錶和目標手錶之間的功能。或者,可以採取各特徵點的周圍的原始圖像中的搭配這些使用互相關的模板和靶之間
  • 使用匹配特徵以估計縮放,旋轉和平移
  • 拼接圖像
  • 作爲圖像現在是已知的形式,人們可以通過預先設置的座標簡單地提取區域