0

我打算使用Open-CV編寫一個程序來計算圖像中與下面類似的對象數量。如何在單個圖像上執行分水嶺分割和Blob分析?

Sample image

我打算採用的方法是使用直方圖閾值圖像,然後使用Blob檢測來算被識別斑點的數目。只要顆粒狀物體彼此不接觸,這就可以很好地工作。 (重疊雖然超出了範圍)我研究了使用分水嶺分割識別彼此接觸的對象的可能性。

我不清楚的是,如何將這兩種技術應用於可能有或沒有重疊顆粒的圖像。假設在圖像中至少有一個顆粒相互接觸,我是否要執行這兩種技術?如果是這樣的順序?或者我是否僅僅執行了Watershed,因爲在某個地方會有重疊,並且由於合併的Blob,執行Blob檢測會導致錯誤輸出?提前致謝。

+1

您是否嘗試過更簡單的技術?檢查[如何檢測圈](http://stackoverflow.com/questions/6416117/simple-object-detection-using-opencv-and-machine-learning/6416361#6416361),[這個問題的答案](http ://stackoverflow.com/q/10313602/176769),[邊界框演示技術](http://stackoverflow.com/a/10239600/176769)和[點目標檢測](http://stackoverflow.com /一個/176769分之10416428)。 – karlphillip

+0

謝謝。這些技術確實看起來很有趣。會看看。 – Tru

+0

只是好奇;任何使用HoughCircle的方法在顆粒變得不圓形或完全無定形的情況下工作? – Tru

回答

2

你說「假設在圖像中至少有一個重疊實例」,但「重疊超出了範圍」。

如果Watershed算法處理重疊顆粒的圖像,Blob檢測可能不會提供任何優勢(因爲它會合並重疊對象)。

如果你真的想要結合這些方法,你可以在他們自己的管道中運行它們,並使用概率模型來結合這兩種方法。但最好從簡單開始,看看你首先得到什麼樣的結果。

下面是使用Matlab的一個例子,其執行小區分割使用分水嶺:

http://blogs.mathworks.com/steve/2006/06/02/cell-segmentation/

如果需要避免計數其是僅部分地在查看對象,就可以使用Voronoi圖,並移除連接對象與邊緣:

http://pythonvision.org/basic-tutorial

+0

非常感謝。對於這個錯誤感到抱歉,我的意思是至少有一個顆粒觸及彼此的邊緣。 – Tru