天天看點

各種圖像處理類庫的比較及選擇(The Comparison of Image Processing Libraries)

文章來源:http://www.cnblogs.com/xrwang/archive/2010/01/26/TheComparisonOfImageProcessingLibraries.html

作者:王先榮

前言

近期需要做一些圖像處理方面的學習和研究,首要任務就是選擇一套合适的圖像處理類庫。目前較知名且功能完善的圖像處理類庫有OpenCv、EmguCv、AForge.net等等。本文将從許可協定、下載下傳、安裝、文檔資料、易用性、性能等方面對這些類庫進行比較,然後給出選擇建議,當然也包括我自己的選擇。

許可協定

類庫             許可協定          許可協定網址                                                       大緻介紹

OpenCv         BSD            www.opensource.org/licenses/bsd-license.html        在保留原來BSD協定聲明的前提下,随便怎麼用都行

EmguCv        GPL v3         www.gnu.org/licenses/gpl-3.0.txt                          你的産品必須也使用GPL協定,開源且免費

                    商業授權        www.emgu.com/wiki/files/CommercialLicense.txt      給錢之後可以用于閉源的商業産品

AForge.net    LGPL v3        www.gnu.org/licenses/lgpl.html                              如果不修改類庫源代碼,引用該類庫的産品可以閉源和(或)收費

下載下傳

可以很友善的下載下傳到這些類庫,下載下傳位址分别為:

類庫                 下載下傳位址

OpenCv           http://sourceforge.net/projects/opencvlibrary/files/

EmguCv          http://www.emgu.com/wiki/index.php/Download_And_Installation

AForge.net      http://www.aforgenet.com/framework/downloads.html

安裝

這些類庫的安裝都比較簡單,直接運作安裝程式,并點“下一步”即可完成。但是OpenCv在安裝完之後還需要一些額外的處理才能在VS2008裡面使用,在http://www.opencv.org.cn有一篇名為《VC2008 Express下安裝OpenCv 2.0》的文章專門介紹了如何安裝OpenCv。

類庫            安裝難易度            備注

OpenCv       比較容易             VC下使用需要重新編譯

EmguCv         容易

AForge.net     容易

相信看這篇文章的人都不會被安裝困擾。

文檔資料          

類庫              總體評價              書籍              網站               文檔           示例              社群             備注

OpenCv           中等                中英文           中英文            中英文          較多           中文論壇         有中文資料但不完整

EmguCv           少                     無               英文               英文            少             英文論壇         論壇人氣很差

AForge.net       少                     無               英文               英文            少             英文論壇         論壇人氣很差

OpenCv有一些中文資料,另外兩種的資料全是英文的;不過EmguCv建立在OpenCv的基礎上,大部分OpenCv的資料可以用于EmguCv;而AForge.net是原生的.net類庫,對GDI+有很多擴充,一些MSDN的資料可以借鑒。如果在查詞典的基礎上還看不懂英文文檔,基本上可以放棄使用這些類庫了。

易用性

易用性這玩意,主觀意志和個人能力對它影響很大,下面是我的看法:

類庫             易用性                         備注

OpenCv        比較差       OpenCv大多數功能都以C風格函數形式提供,少部分功能以C++類提供。注意:2.0版将更多的功能封裝成類了。

EmguCv       比較好       将OpenCv的絕大部分功能都包裝成了.net類、結構或者枚舉。不過文檔不全,還是得對照OpenCv的文檔去看才行。

AForge.net      好          純.net類庫,用起來很友善。

最近幾年一直用的是C# ,把C和C++忘記得差不多了,況且本來C/C++我就不太熟,是以對OpenCv的看法恐怕有偏見。

性能

這些類庫能做的事情很多,我選了最基礎的部分來進行性能測試,那就是将一幅彩色圖像轉換成灰階圖,然後再将灰階圖轉換成二值圖像。因為圖像處理大部分時間都用于記憶體讀寫及運算(特别是矩陣運算),是以這兩種操作有一定的代表性。

我分别用以下方式實作了圖像的灰階化及二值化:(1)C語言調用OpenCv庫;(2)C#調用AForge.net庫;(3)C#調用EmguCv庫;(4)C#中用P/INVOKE的形式調用OpenCv函數;(5)C#調用自己寫的灰階和二值化方法。

各種圖像處理類庫的比較及選擇(The Comparison of Image Processing Libraries)

C語言調用OpenCv

各種圖像處理類庫的比較及選擇(The Comparison of Image Processing Libraries)

C#調用各種類庫處理圖像

分别用上述5種形式處理10次,記錄下運作時間,去掉每種的最大和最小資料,然後計算平均值。結果如下所示(機關是毫秒):

語言        類庫                     灰階化          二值化             性能排名

C         OpenCv                 16.89721      7.807766           1

C#      Aforge.net              48.9403       25.32473           5

C#      EmguCv                 18.86898      13.74628           3

C#     OpenCv(P/Invoke)    18.68938      10.0149             2

C#    自定義處理方法           48.33593      21.46168           4

結論

将上面的内容彙總結果如下表所示:

類庫                 OpenCv            EmguCv                        AForge.net

許可協定           BSD                 GPL v3或商業授權            LGPL v3

下載下傳                 友善                 友善                               友善

安裝                比較容易             容易                              容易

文檔資料           中等                  少                                  少

易用性             比較差               比較好                             好

性能                 很好                比較好                             不好

綜上所述,我的選擇是使用EmguCv作為我的圖像處理類庫,在必要的時候用P/Invoke的形式調用沒有被封裝的OpenCv函數。你呢?

感謝您耐心看完本文,希望對您有所幫助。

繼續閱讀