機器視覺中常用圖像處理庫都有哪些?

機器視覺中常用圖像處理庫都有哪些?

機器視覺中常用圖像處理庫都有哪些?


資料來源:https://mp.weixin.qq.com/s?__biz=MzIzNDM2OTMzOQ==&mid=2247487392&idx=1&sn=72be742a6801c16cffd601e9d0434971&chksm=e8f637f4df81bee2a22547e0f7a199a7bfadcfc82c447e860ad743c7d30c001cd232e4483e04&scene=126&sessionid=1598489190&key=30d2bdb922084692e0732c64edaf5f0e86a13a7411511c56ae486860736f563f7d1e2b73ab5a842a71fd33ed0ab487f8f7e35da8ba7536c7358ec431d6e1697823b723e0026264d77eac712c0440774f0f292cc614a1713d4c12cc858859dcc92c9f682918c50d3b663d77f8a102798e66dc987f9f032ad87a6172484b787b18&ascene=1&uin=MjIwODk2NDgxNw%3D%3D&devicetype=Windows+10+x64&version=62090529&lang=zh_TW&exportkey=AjGYiGXOhUQ3bE0wC3iuztQ%3D&pass_ticket=8U225q1Ia3xIzmkcuQdH71UlgbcdTwgOT45vZqTQKM%2FM89JIIhQ1QmNHme06S9UW


1. OpenCV

簡介:OpenCV全稱是:Open Source Computer Vision Library。是Intel®開源計算機視覺庫。它由一系列C 函數和少量C++ 類構成,實現了圖像處理和計算機視覺方面的很多通用算法。OpenCV是一個基於(開源)發行的跨平台計算機視覺庫,可以運行在Linux、Windows和Mac OS操作系統上。它輕量級而且高效——由一系列C 函數和一些C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。OpenCV用C++語言編寫,它的主要接口也是C++語言,但是依然保留了大量的C語言接口。

OpenCV功能

提供對圖像數據操作,圖像/視頻的輸入輸出,基本圖像處理,結構分析,攝像頭定標,運動分析,目標識別以及基本的GUI等的函數接口。

OpenCV模塊

cv – 核心函數庫;cvaux – 輔助函數庫;cxcore – 數據結構與線性代數庫;highgui – GUI函數庫;ml – 機器學習函數庫

特點:

免費,源代碼公開,是一個跨平台的中、高層API 構成,它不依賴與其它的外部庫,儘管也可以使用某些外部庫。,為了完全獨立於IPL (INTEL的圖像處理庫) OpenCV 複製了IplImage 和其它一些結構變量的聲明。

OpenCV 為Intel® Integrated PerformancePrimitives (IPP) 提供了透明的用戶使用接口。它對IPP不存在任何依賴。但如果安裝了IPP,那麼OpenCV將會通過自動載入IPP動態鏈接庫來獲取IPP的優勢,來提升速度。


2. Intel IPP

簡介:IPP“Intel Integrated Performance Primitives” ( Intel IPP )是一套跨平台的軟件函數庫,

他提供了廣泛的多媒體功能:音頻解碼器(例如:H263 、 MPEG-4 )、圖像處理(JPEG) 、信號處理、語音壓縮(例如:G723 、 GSM 、 AMR )和加密機制。

Intel IPP 針對大量的Intel Microprocessor (微處理器)進行優化:Intel Pentium 4 處理器,採用Intel Centrino 移動運算技術的Intel Pentium M 處理器組件, Intel Itanium 2 處理器、 Intel Xeon 處理器以及採用Intel XScale 技術的Intel PCA 應用處理器。採用一套跨平台結構的通用API ,使用者除了不需要擔心平台兼容性的問題,更節省了開發成本以及研發時間,使用者可以輕輕鬆松移植原有應用程序。

特點:

IPP收費源代碼不公開

函數庫:信號處理,圖像處理,多媒體,向量處理等

跨平台和OS的通用API

高性能代碼,不需要寫彙編代碼,獲得優化的應用程序,速度快,效率高。


3. Halcon

簡介:德國MVtec公司的圖像處理軟件HALCON,是世界公認具有最佳效能的機器視覺軟件。它發源自學術界,有別於市面一些商用軟件包。事實上,這是一套圖像處理庫,由一千多個各自獨立的函數,以及底層的數據管理核心構成。其中包含了各類濾波、色彩分析以及幾何、數學變換、形態學計算分析、校正、分類、辨識、形狀搜索等等基本的幾何以及圖像計算功能,由於這些功能大多並非針對特定工作設計的,因此只要用得到圖像處理的地方,就可以用HALCON強大的計算分析能力來完成工作。應用範圍幾乎沒有限制,涵蓋醫學、遙感探測、監拎、及工業上的各類自動化檢測。近年來,由於機器視覺技術的發展,這種可以”取代人眼”,對重複工作不會疲勞,精度高且穩定的特質,促進了高科技業的發展,例如電子業產量的大幅提升。而MVTec公司更是不斷的與學術界合作,並且將最新的學術研究成果納入其中,不但使自己的技術處於業界領導地位,同時也將機器視覺技術推向更高的境界。

機器視覺軟件HALCON在世界範圍內被廣泛的使用,用戶可以利用其開放式結構快速開發圖像處理和機器視覺應用。

一個專業的圖像處理工具不只包含一個圖像處理函數庫。圖像處理任務的解決只是整個機器視覺解決方案的一部分,還包括處理控件和或者數據庫連接等軟件部分,圖像獲取及其照明等硬件部分。因此,圖像處理系統簡單易用,並且能活嵌入到開發項目中是非常重要的。Halcon充分考慮到這些方面,它有如下的特點:

1). HALCON包含了一套交互式的程序設計接口HDevelop,可在其中以HALCON程序代碼直接編寫、修改、執行程序,並且可以查看計算過程中的所有變量,設計完成後,可以直接輸出C/ C++,或是COM(visual basic)程序代碼,嵌入到應用程序程序中。

2). HALCON不限制取像設備,可以自行挑選合適的設備。原廠己提供了4 0餘種相機的驅動,即使是尚未支持的相機,除了可以透過指針(pointer)輕易的抓取影像,還可以利用HALOCN開放性的架構,自行編寫DLL文件和系統連接。

3). 使用HALCON有最好的投資效益。這套軟件支持的操作系統除了微軟的NT/XP/2000,還有Linux, Solaris7, 181X6. 5, “1’ru64 UN1X5. 1等等,當需要開發出一套系統,就可以輕易轉換作業平台,以符合需求。為了加快速度,還可以使用多處理器的計算機,所編寫的程序不必更動。

4). 使用HALOCN,在設計人機接口時沒有特別的限制,也不需要特別的可視化組件,可以完全使用開發環境下的程序語言,例如Mircosoft Visual Studio等等,架構自己的接口,最終用戶看不到開發工具,而且在執行軟件的機器上,只需要很少的資源。


4. MATLAB 

簡介:MATLAB 是美國MathWorks公司出品的商業數學軟件,用於算法開發、數據可視化、數據分析以及數值計算的高級技術計算語言和交互式環境,主要包括MATLAB和Simulink兩大部分。

MATLAB可以進行矩陣運算、繪製函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用於工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。

MATLAB的基本數據單位是矩陣,它的指令表達式與數學、工程中常用的形式十分相似,故用MATLAB來解算問題要比用C,FORTRAN等語言完成相同的事情簡捷得多,並且MATLAB也吸收了像Maple等軟件的優點,使MATLAB成為一個強大的數學軟件。在新的版本中也加入了對C,FORTRAN,C++,JAVA的支持。

特點:

1). 高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中解脫出來;

2). 具有完備的圖形處理功能,實現計算結果和編程的可視化;

3). 友好的用戶界面及接近數學表達式的自然化語言,使學者易於學習和掌握;

4). 功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。

功能十分強大,正版軟件價錢昂貴,適用於學術研究,仿真和演示。在軟件開發,工程應用方面有一定的局限性。


5. OpenGL

OpenGL(全寫Open Graphics Library)是指定義了一個跨編程語言、跨平台的編程接口規格的專業的圖形程序接口。它用於三維圖像(二維的亦可),是一個功能強大,調用方便的底層圖形庫。

OpenGL 是行業領域中最為廣泛接納的2D/3D 圖形API,其自誕生至今已催生了各種計算機平台及設備上的數千優秀應用程序。OpenGL™ 是獨立於視窗操作系統或其它操作系統的,亦是網絡透明的。在包含CAD、內容創作、能源、娛樂、遊戲開發、製造業、製藥業及虛擬現實等行業領域中,OpenGL™ 幫助程序員實現在PC、工作站、超級計算機等硬件設備上的高性能、極具衝擊力的高視覺表現力圖形處理軟件的開發。

特點:

1). 與C語言緊密結合。

OpenGL命令最初就是用C語言函數來進行描述的,對於學習過C語言的人來講,OpenGL是容易理解和學習的。如果你曾經接觸過TC的graphics.h,你會發現,使用OpenGL作圖甚至比TC更加簡單。

2). 強大的可移植性。

微軟的Direct3D雖然也是十分優秀的圖形API,但它只用於Windows系統(現在還要加上一個XBOX遊戲機)。而OpenGL不僅用於Windows,還可以用於Unix/Linux等其它系統,它甚至在大型計算機、各種專業計算機(如:醫療用顯示設備)上都有應用。並且,OpenGL 的基本命令都做到了硬件無關,甚至是平台無關。

3). 高性能的圖形渲染。

OpenGL是一個工業標準,它的技術緊跟時代,現今各個顯卡廠家無一不對OpenGL提供強力支持,激烈的競爭中使得OpenGL性能一直領先。

總之,OpenGL是一個很NB的圖形軟件接口。至於究竟有多NB,去看看DOOM3和QUAKE4等專業遊戲就知道了。


6. EmguCv

EmguCV 是.NET 平台下對OpenCV 圖像處理庫的封裝。也就是OpenCV的.NET 版。它運行在.NET 兼容的編程語言下調用OpenCV 的函數,如C#、VB、VC++、IronPython 等。這個封裝庫可以在Mono 下編譯和在Linux / Mac OSX 上運行。EmguCV 全部用C#編寫,它可以在Mono環境裡編譯,在任何Mono支持的平台(如Linux, Solaris,MacOSX ) 上運行。EmguCV 的其他優勢還有,支持通用顏色和深度的圖像類,自動垃圾收集,可XML序列化的圖像,XML 文檔和Intel license 支持, 自由選擇圖像類或OpenCV 的direct invoke 函數,圖像像素上的通用操作等。也就是說,EmguCV 不僅繼承了OpenCV 的所有功能和特點,而且在跨平台支持方面也有更大的突破。

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


7. AForge.net

AForge.NET 是一個專門為開發者和研究者基於C#框架設計的,他包括計算機視覺與人工智能,圖像處理,神經網絡,遺傳算法,機器學習,機器人等領域。

這個框架由一系列的類庫和例子組成。其中包括的特徵有:

AForge.Imaging -一些日常的圖像處理和過濾器

AForge.Vision -計算機視覺應用類庫

AForge.Neuro -神經網絡計算庫

AForge.Genetic -進化算法編程庫

AForge.MachineLearning -機器學習類庫

AForge.Robotics -提供一些機器學習的工具類庫

AForge.Video -一系列的視頻處理類庫(很方便)

純.net類庫,接口簡單,用起來很方便。


8. CxImage

CxImage類庫是一個優秀的圖像操作類庫。它可以快捷地存取、顯示、轉換各種圖像。有的讀者可能說,有那麼多優秀的圖形庫,如OpenIL,FreeImage,PaintLib等等,它們可謂是功能強大,齊全,沒必要用其它的類庫。但我要說,這些類庫基本上沒有免費的,使用這些類庫,你要被這樣那樣的許可協議所束縛。在這點上,CxImage類庫是完全免費的。另外,在使用上述類庫時,你會遇到重重麻煩。因為它們大部分是平台無關的,且用C語言寫成,有的還夾雜著基本的C++ wrapper和成堆的編譯選項的聲明需要你去處理。而CxImage類庫在這方面做得很好。作者完全公開了源代碼。相對於那些封裝好的圖形庫和GDI+來說,這一點使我們可以進一步學習各種編解碼技術,而不再浮於各種技術的表面。


9. FreeImage

FreeImage 是一款免費的、開源的、跨平台(Windows 、Linux 和Mac OS X )的,支持20 多種圖像類型的(如BMP 、JPEG 、GIF 、PNG 、TIFF 等)圖像處理庫。其最大優點就是採用插件驅動型架構,具有快速、靈活、簡單易用的特點,得到了廣泛使用。

FreeImage 的主要功能有多格式位圖的讀寫;方便的位圖信息獲取;位深度轉換;位圖頁面訪問;基本的幾何變換和點處理;通道合併與混合等。FreeImage 暫時不支持矢量圖形和高級圖像處理,位圖繪製需要由用戶來完成。

FreeImage 中的所有函數都以FreeImage_ 開頭,如圖像文件的讀寫函數分別為FreeImage_Load 和FreeImage_Save 。FIBITMAP 數據結構保存著位圖信息和像素數據,是FreeImage 的核心。


10. paintlib

paintlib是一個可移植的用於圖像加載、保存和處理的C++類庫。可從BMP, GIF, JPEG, PCX, PGM, PICT, PNG, PSD, TGA, TIFF和WMF文件中加載圖像,且可保存為BMP, JPEG, PNG和TIFF格式。既可通過在過濾器類中執行過濾, 也可通過直接訪問位圖來進行圖像處理。提供了完整的C++源碼。


11. AGG

AGG,全名:Anti-Grain Geometry,是一個開源的、高效的2D圖形庫

AGG是一個高效的、高質量的、開源的矢量圖形庫,類似的有:GTK+的Cairo,Microsoft的GDI+。在三者中,AGG的性能是最高的(不討論Skia和Direct2D,他們有OGL和DX的硬件加速,繪圖速度根本不是一個檔次的)。

特點:

AGG的功能與GDI+的功能非常類似,但提供了比GDI+更靈活的編程接口,其產生的圖形的質量也非常高,而且它是跨平台的,其宣傳可以在非常多的操作系統上運行.

AGG的功能

1). 支持ALPHA、GAMMA等變色處理,以及用戶自定義的變色處理;

2). 支持任意2D圖形變換;

3). 支持SVG和PostScript描述,適於網上圖形生成;

4). 支持高質量的圖形處理,支持反走樣插值等高級功能;

5). 支持任意方式的慚變色處理;

6). 支持所有顏色格式;

7). 支持對位圖的多種處理;

8). 支持直線的多種處理,類似於GDI+;

9). 支持GPC,即通用多邊形裁剪方法;

10). 支持多種字體輸出,包括漢字的處理;

效率高,質量高(有反鋸齒),功能強大,跨平台和平台GUI支持,缺點:沒有硬件加速,文檔少,門檻略高。


12. IPL

Intel 的IPL image library雖然沒有開源但是進行普通的圖像處理非常好用,像拉布拉斯算子,索貝爾算子等等邊緣提取和銳化的函數。如果目標平台是PC機或者工控機又是Intel的CPU,這是一個非常不錯的選擇。

現在已經沒有IPL了,IPL已經是IPP的一部分了,不過還是可以下載早期版本。IPP的教育版50$,不是很貴,集成大部分算法1D signal processing, 語音信號處理;2D signal prodessing, image processing, video processing. Open CV的模式將很類似於IPL.

特點:

IPL 圖像處理庫,免費,起初開源,後來不開源。


13. visDSK

MICROSOFT圖像處理庫,免費、開源。OpenCV未出現時很受追捧,但是現在visDSK能做的OpenCV都可以做,在速度上,OpenCV還有Intel公司的優化支持。visDSK的時代已然成為過去。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *