2012-02-04 25 views
8

我知道邊緣檢測問題已發佈之前(在Java中:Count the number of objects in an Image,與語言無關:Image edge detection),但我想知道如何在python中實現它。蟒蛇邊緣檢測和曲率計算

我正在做一些簡單的形狀(有些噪音的二進制形狀)邊緣周圍的邊緣檢測和曲率計算。我知道OpenCV有一些封裝,但不知道哪一個更好:pyopencv,pycv,pycvf?

由於我基本上只做了這兩項任務,我也不確定自己實現它而不是使用庫會更快。

+1

我建議從他們的[網站](http://opencv.willowgarage.com/wiki/)下載OpenCV - 如果你使用他們的指令編譯它,你會自動獲得python包裝('import cv2')。 – 2012-02-04 00:16:55

+2

另外,看看'scipy.ndimage' http://docs.scipy.org/doc/scipy/reference/ndimage.html – 2012-02-04 02:53:37

回答

11

我們已經在積極開發scikit-image,你可能會發現有用的分割和邊緣檢測算法:

Scikit Images Examples

+0

邊緣檢測很酷。你會實現曲率計算嗎? – clwen 2012-02-07 14:54:16

+0

@clwen你如何定義曲率?如果你給我一張紙或一個例子,我們可以給它一個鏡頭。 – 2012-02-07 19:37:10

+0

我一直在python永遠尋找canny邊緣檢測!我愛你... – tylerthemiler 2012-04-09 21:57:52

3

有一個很簡單的方法來找到用Python scikit圖像輪廓。這真的只是一個代碼夫婦一行,就像這樣:

from skimage import measure 
    contours = measure.find_contours(gimg, 0.8) 

這將返回等高線的矢量表示。在每行的單獨數組中。通過計算近似值,也可以很容易地減少一行中的點數。這裏有一個更長的描述與源代碼:image vectorization with python

3

你可以很容易地實現與python中的scipy邊緣檢測。

from scipy import ndimage 
edge_horizont = ndimage.sobel(greyscale, 0) 
edge_vertical = ndimage.sobel(greyscale, 1) 
magnitude = np.hypot(edge_horizont, edge_vertical) 

這裏是一個原始圖像和邊緣檢測後的圖像的例子。 enter image description here

在scikit-image中,有一個如何進行邊緣檢測的special page with explanations