2009-09-13 154 views
12

我最近回到圖像處理。我以前使用的大多數是Matlab。我想切換到更方便和開放的語言。圖像處理庫

經過使用Python庫PIL並深切地瞭解它內置了只有3x3和5x5濾波器的內核之後,我決定詢問是否有人知道好的圖像處理庫。

什麼是現有的圖像處理庫(任何語言)? 它們是快速/成熟還是處於早期階段?

+0

你想要做什麼類型的功能?你需要一個圖書館的全功能嗎? –

+0

@詹姆斯,我現在的需求很小,但讓我們把這個問題儘可能地擴大。至少,能夠使用任意內核進行過濾對於任何像樣的圖像處理庫都是必須的。我想像FFT或幾何變換的東西也是基礎的一部分。 – glmxndr

回答

4

查看python Scipy library。這是一個開源的 Python中的快速n維數組操作庫。它具有所有基本的圖像處理工具:

它沒有Matlab的圖像處理工具箱的更加先進的功能。但是,正如Vereb所建議的,ITK中還有很多這樣的功能(也可用於python)。

像你一樣,我想擺脫matlab到像python這樣的動態語言。像你一樣,我對PIL感到失望,當時我意識到它只是一個Python中的ImageMagick。您仍然需要使用PIL來讀取/寫入圖像。

要獲得與蟒蛇一個Matlab般的圖像處理經驗得到Numpy/ScipyMatplotlibSpyder。所有這些以及更多內容僅適用於Windows的Python(X,Y)

12

OpenCV在C語言中是一個非常快速和成熟的語言。壞的一面是它不是面向對象的,這不是我認爲的一個標準。包括許多功能,如連接組件分析。

JAI(Java高級映像)是快速和非常成熟的,它也是面向對象的。對這個圖書館進行熱身可能需要一點時間。但功能強大且易於管理。

如果您打算爲OpenCV做一些學術研究或原型設計,如果您的目標是開發一個商業或大型軟件,我推薦JAI。

UPDATE

的OpenCV現在有C++和Python的API。我一直在使用OpenCV C++ 3周,API比C API更好。 OpenCV更加穩定,社區發展壯大。在OpenCV中有很多準備使用高級算法。值得考慮。

6

我很驚訝沒有人提到ImageMagick。它是一個非常受歡迎的開源圖像處理庫,它們幾乎可以綁定任何語言。

+0

ImageMagick在很多任務中速度也非常慢。 – unixman83

3

英特爾性能基元非常快,非常成熟。大多數功能是低級別的,從線性濾波器,算術運算,FFT,小波,幾何變換(...),但它也包含一些高級算法,例如,用於修補或分割。它速度非常快,並且有據可查。我肯定會推薦它用於商業開發(不確定是否有開源許可證)。

2

正如有人提到的,您可以使用ITK,它可以與VTK一起用作可視化工具包。你會發現唯一的問題是,如果你打算使用他們的python包裝器,那麼他們不容易構建(如果你嘗試構建第三方開源項目wrapITK,那麼他們就更加困難)。

但是你可以使用Python(X,Y),這與所有這些工具(和更多)跑外的開箱和蟒蛇: http://www.pythonxy.com

希望它能幫助。

2

最快和最專業的圖像處理庫(和完整的SDK)是HALCON。 (www.mvtec.com)它不是開源的,但完全支持C#,C++,C,VB.Net等...