一文概括機(jī)器視覺(jué)常用算法以及常用開(kāi)發(fā)庫(kù)
點(diǎn)擊上方“小白學(xué)視覺(jué)”,選擇加"星標(biāo)"或“置頂”
重磅干貨,第一時(shí)間送達(dá)
本篇就軟件部分,對(duì)機(jī)器視覺(jué)的算法處理進(jìn)行大致概括分析。
一、算法(預(yù)處理算法、檢測(cè)算法)
在采集完圖像后,首先會(huì)對(duì)圖像進(jìn)行預(yù)處理操作。保證圖像的對(duì)比度清晰,水平。方便后續(xù)圖像處理。
常用的圖像處理算法:
1,圖像變換:(空域與頻域、幾何變換、色度變換、尺度變換)
幾何變換:圖像平移、旋轉(zhuǎn)、鏡像、轉(zhuǎn)置;
尺度變換:圖像縮放、插值算法(最近鄰插值、線性插值、雙三次插值);
空間域與頻域間變換:由于圖像陣列很大,直接在空間域中進(jìn)行處理,涉及計(jì)算量很大。因此,有時(shí)候需要將空間域變換到頻域進(jìn)行處理。例如:傅立葉變換、沃爾什變換、離散余弦變換等間接處理技術(shù),將空間域的處理轉(zhuǎn)換為頻域處理,不僅可減少計(jì)算量,而且可獲得更有效的處理(如傅立葉變換可在頻域中進(jìn)行數(shù)字濾波處理)。
2、圖像增強(qiáng):
圖像增強(qiáng)不考慮圖像降質(zhì)的原因,突出圖像中所感興趣的部分。如強(qiáng)化圖像高頻分量,可使圖像中物體輪廓清晰,細(xì)節(jié)明顯;如強(qiáng)化低頻分量可減少圖像中噪聲影響。
灰度變換增強(qiáng)(線性灰度變換、分段線性灰度變換、非線性灰度變換);
直方圖增強(qiáng)(直方圖統(tǒng)計(jì)、直方圖均衡化);
圖像平滑/降噪(鄰域平均法、加權(quán)平均法、中值濾波、非線性均值濾波、高斯濾波、雙邊濾波);
圖像(邊緣)銳化:梯度銳化,Roberts算子、Laplace算子、Sobel算子等;
3、紋理分析(取骨架、連通性);
4、圖像分割:
圖像分割是將圖像中有意義的特征部分提取出來(lái),其有意義的特征有圖像中的邊緣、區(qū)域等,這是進(jìn)一步進(jìn)行圖像識(shí)別、分析和理解的基礎(chǔ)。
(1)閾值分割(固定閾值分割、最優(yōu)/OTSU閾值分割、自適應(yīng)閾值分割);
(2)基于邊界分割(Canny邊緣檢測(cè)、輪廓提取、邊界跟蹤);
(3)Hough變換(直線檢測(cè)、圓檢測(cè));
(4)基于區(qū)域分割(區(qū)域生長(zhǎng)、區(qū)域歸并與分裂、聚類(lèi)分割);
(5)色彩分割;
(6)分水嶺分割;
5、圖像特征:
(1)幾何特征(位置與方向、周長(zhǎng)、面積、長(zhǎng)軸與短軸、距離(歐式距離、街區(qū)距離、棋盤(pán)距離));
(2)形狀特征(幾何形態(tài)分析(Blob分析):矩形度、圓形度、不變矩、偏心率、多邊形描述、曲線描述);
(3)幅值特征(矩、投影);
(4)直方圖特征(統(tǒng)計(jì)特征):均值、方差、能量、熵、L1范數(shù)、L2范數(shù)等;直方圖特征方法計(jì)算簡(jiǎn)單、具有平移和旋轉(zhuǎn)不變性、對(duì)顏色像素的精確空間分布不敏感等,在表面檢測(cè)、缺陷識(shí)別有不少應(yīng)用。
(5)顏色特征(顏色直方圖、顏色矩)
(6)局部二值模式( LBP)特征:LBP對(duì)諸如光照變化等造成的圖像灰度變化具有較強(qiáng)的魯棒性,在表面缺陷檢測(cè)、指紋識(shí)別、光學(xué)字符識(shí)別、人臉識(shí)別及車(chē)牌識(shí)別等領(lǐng)域有所應(yīng)用。由于LBP 計(jì)算簡(jiǎn)單,也可以用于實(shí)時(shí)檢測(cè)。
6、圖像/模板匹配:
輪廓匹配、歸一化積相關(guān)灰度匹配、不變矩匹配、最小均方誤差匹配
7、色彩分析:
色度、色密度、光譜、顏色直方圖、自動(dòng)白平衡
8、圖像數(shù)據(jù)編碼壓縮和傳輸:
圖像編碼壓縮技術(shù)可減少描述圖像的數(shù)據(jù)量(即比特?cái)?shù)),以便節(jié)省圖像傳輸、處理時(shí)間和減少所占用的存儲(chǔ)器容量。壓縮可以在不失真的前提下獲得,也可以在允許的失真條件下進(jìn)行。編碼是壓縮技術(shù)中最重要的方法,它在圖像處理技術(shù)中是發(fā)展最早且比較成熟的技術(shù)。
9、表面缺陷目標(biāo)識(shí)別算法:
傳統(tǒng)方法:貝葉斯分類(lèi)、K最近鄰(KNN)、人工神經(jīng)網(wǎng)絡(luò)(ANN)、支持向量機(jī)(SVM)、K-means等;
10、圖像分類(lèi)(識(shí)別):
圖像分類(lèi)(識(shí)別)屬于模式識(shí)別的范疇,其主要內(nèi)容是圖像經(jīng)過(guò)某些預(yù)處理(增強(qiáng)、復(fù)原、壓縮)后,進(jìn)行圖像分割和特征提取,從而進(jìn)行判決分類(lèi)。
11、圖像復(fù)原:
圖像復(fù)原要求對(duì)圖像降質(zhì)的原因有一定的了解,一般講應(yīng)根據(jù)降質(zhì)過(guò)程建立“降質(zhì)模型”,再采用某種濾波方法,恢復(fù)或重建原來(lái)的圖像。
二、現(xiàn)有的視覺(jué)檢測(cè)軟件/庫(kù)
1、做工業(yè)視覺(jué)檢測(cè)的公司有哪些?
比較出名的有:大恒圖像(亞洲Halcon最大代理商)、凌云光技術(shù)(VisionPro視覺(jué)平臺(tái):印刷、3C電子、顯示屏、玻璃、線路板檢測(cè))、大族激光(振靜系統(tǒng):視覺(jué)激光焊接,定視覺(jué)位、缺陷檢測(cè))、康耐視、基恩士、深圳精銳視覺(jué)、深圳市視覺(jué)龍科技有限公司、廣州超音速、深圳市創(chuàng)科自動(dòng)化等等。
可二次開(kāi)發(fā)的視覺(jué)系統(tǒng):Labview、DVT、Halcon、OpenCV等。
2、常用的視覺(jué)檢測(cè)軟件/庫(kù)
視覺(jué)開(kāi)發(fā)軟件工具 Halcon、VisionPro、LabView、OpenCV, 還有eVision、Mil、Sapera等。
(一)、Halcon:底層功能算法多,運(yùn)算性能快,功能齊全,容易上手,開(kāi)發(fā)項(xiàng)目周期短。非開(kāi)源項(xiàng)目,商用收費(fèi),價(jià)格較貴。
Halcon:Halcon是德國(guó)MVtec公司開(kāi)發(fā)的一套完善的標(biāo)準(zhǔn)的機(jī)器視覺(jué)算法包,擁有應(yīng)用廣泛的機(jī)器視覺(jué)集成開(kāi)發(fā)環(huán)境。它是一套image processing library,由一千多個(gè)各自獨(dú)立的函數(shù),以及底層的數(shù)據(jù)管理核心構(gòu)成。其中包含了各類(lèi)濾波,色彩以及幾何,數(shù)學(xué)轉(zhuǎn)換,型態(tài)學(xué)計(jì)算分析,校正,分類(lèi)辨識(shí),形狀搜尋等等基本的幾何以及影像計(jì)算功能。整個(gè)函數(shù)庫(kù)可以用C,C++,C#,Visual basic和Delphi等多種普通編程語(yǔ)言訪問(wèn)。Halcon為大量的圖像獲取設(shè)備提供接口,保證了硬件的獨(dú)立性。
(二)OpenCV:功能算法相對(duì)較多(比Halcon少),開(kāi)源,可用于商用,開(kāi)發(fā)周期較長(zhǎng)(比Halcon長(zhǎng)),有些算法要自己寫(xiě)。
OpenCV是一個(gè)基于(開(kāi)源)發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺(jué)庫(kù),可以運(yùn)行在Linux、Windows和Mac OS操作系統(tǒng)上。其核心輕量級(jí)而且高效——由一系列 C 函數(shù)和少量 C++ 類(lèi)構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。OpenCV用C++語(yǔ)言編寫(xiě),它的主要接口也是C++語(yǔ)言。該庫(kù)也有大量的Python, Java and MATLAB/OCTAVE的接口,如今也提供對(duì)于C#, Ruby的支持。OpenCV可以在 Windows, Android, Maemo, FreeBSD, OpenBSD, iOS,Linux 和Mac OS等平臺(tái)上運(yùn)行。
OpenCV出身:OpenCV是Intel開(kāi)源計(jì)算機(jī)視覺(jué)庫(kù)。其核心由一系列 C 函數(shù)和少量 C++ 類(lèi)構(gòu)成,實(shí)現(xiàn)了圖像處理和計(jì)算機(jī)視覺(jué)方面的很多通用算法。OpenCV 的特點(diǎn)擁有包括300多個(gè)C函數(shù)的跨平臺(tái)的中、高層 API 跨平臺(tái):Windows, Linux;免費(fèi)(FREE):無(wú)論對(duì)非商業(yè)應(yīng)用和商業(yè)應(yīng)用;速度快;使用方便。
OpenCV具有以下的特征:(1)開(kāi)源計(jì)算機(jī)視覺(jué)采用C/C++編寫(xiě)。(2)使用目的是開(kāi)發(fā)實(shí)時(shí)應(yīng)用程序。(3)獨(dú)立與操作系統(tǒng)、硬件和圖形管理器。(4)具有通用的圖象/視頻載入、保存和獲取模塊。(5)具有底層和高層的應(yīng)用開(kāi)發(fā)包。
應(yīng)用OpenCV能夠?qū)崿F(xiàn)以下功能:(1)對(duì)圖象數(shù)據(jù)的操作,包括分配、釋放、復(fù)制和轉(zhuǎn)換數(shù)據(jù)。(2)對(duì)圖象和視頻的輸入輸出,指文件和攝像頭作為輸入,圖象和視頻文件作為輸出。(3)具有對(duì)距陳和向量的操作以及線性代數(shù)的算法程序,包括距陣、解方程、特征值以及奇異值。(4)可對(duì)各種動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu),如列表、隊(duì)列、集合、樹(shù)和圖等進(jìn)行操作。(5)具有基本的數(shù)字圖象處理能力,如可進(jìn)行濾波、邊緣檢測(cè)、角點(diǎn)檢測(cè)、采樣與差值、色彩轉(zhuǎn)換、形態(tài)操作、直方圖和圖象金字塔等操作。
(6)可對(duì)各種結(jié)構(gòu)進(jìn)行分析,包括連接部件分析、輪廓處理、距離變換、各種距的計(jì)算、模板匹配、Hongh變換、多邊形逼近、直線擬合、橢圓擬合和Delaunay三角劃分等。(7)對(duì)攝像頭的定標(biāo),包括發(fā)現(xiàn)與跟蹤定標(biāo)模式、定標(biāo)、基本矩陣估計(jì)、齊次矩陣估計(jì)和立體對(duì)應(yīng)。(8)對(duì)運(yùn)動(dòng)的分析,如對(duì)光流、運(yùn)動(dòng)分割和跟蹤的分析。(9)對(duì)目標(biāo)的識(shí)別,可采用特征法和隱馬爾科夫模型(HMM)法。(10)具有基本的GUI功能,包括圖像與視頻顯示、鍵盤(pán)和鼠標(biāo)事件處理及滾動(dòng)條等。(11)可對(duì)圖像進(jìn)行標(biāo)注,如對(duì)線、二次曲線和多邊形進(jìn)行標(biāo)注,還可以書(shū)寫(xiě)文字(目前之支持中文)。
(三)VisionPro
VisionPro是美國(guó)康耐視Cognex公司提供全套視覺(jué)解決方案。VisionPro提供多種開(kāi)發(fā)工具拖放式界面、簡(jiǎn)單指令碼和編程方式等,全面支持所有模式的開(kāi)發(fā)。用戶利用VisionPro QuickBuild?可以無(wú)需編程配置讀取、選擇并優(yōu)化視覺(jué)工具,決定產(chǎn)品是否合格。用戶也可以利用C++、C#、VB及.NET開(kāi)發(fā)管理應(yīng)用程序。Vision Pro提供的.NET程序接口允許用戶采用面向?qū)ο蟮母呒?jí)語(yǔ)言編程訪問(wèn)所有工具,以高效開(kāi)發(fā)客戶的專用視覺(jué)方案。
(四)LabView
LabView是一種程序開(kāi)發(fā)環(huán)境,由美國(guó)國(guó) 家儀器(NI)公司研制開(kāi)發(fā),使用的是圖形化編輯語(yǔ)言G編寫(xiě)程序,產(chǎn)生的程序是框圖的形式。LabView軟件是NI設(shè)計(jì)平臺(tái)的核心,也是開(kāi)發(fā)測(cè)量或控制系統(tǒng)的理想選擇。LabView開(kāi)發(fā)環(huán)境集成了工程師和科學(xué)家快速構(gòu)建各種應(yīng)用所需的所有工具,旨在幫助工程師和科學(xué)家解決問(wèn)題、提高生產(chǎn)力和不斷創(chuàng)新。
三,HSV顏色識(shí)別-HSV基本顏色分量范圍
一般對(duì)顏色空間的圖像進(jìn)行有效處理都是在HSV空間進(jìn)行的,然后對(duì)于基本色中對(duì)應(yīng)的HSV分量需要給定一個(gè)嚴(yán)格的范圍,下面是通過(guò)實(shí)驗(yàn)計(jì)算的模糊范圍(準(zhǔn)確的范圍在網(wǎng)上都沒(méi)有給出)。
H: 0 — 180
S: 0 — 255
V: 0 — 255
HSV(色度/飽和度/亮度)顏色空間是表示類(lèi)似于RGB顏色模型的顏色空間的模型。根據(jù)色度通道(Channel)對(duì)顏色類(lèi)型進(jìn)行建模,因此在需要根據(jù)顏色對(duì)對(duì)象進(jìn)行分割的圖像處理任務(wù)中非常有用。飽和度的變化代表顏色成分的多少。亮度通道描述顏色的亮度。
下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程,即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺(jué)、目標(biāo)跟蹤、生物視覺(jué)、超分辨率處理等二十多章內(nèi)容。
下載2:Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目52講
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):Python視覺(jué)實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測(cè)、車(chē)道線檢測(cè)、車(chē)輛計(jì)數(shù)、添加眼線、車(chē)牌識(shí)別、字符識(shí)別、情緒檢測(cè)、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺(jué)實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺(jué)。
下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
在「小白學(xué)視覺(jué)」公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講,即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。
交流群
歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺(jué)、傳感器、自動(dòng)駕駛、計(jì)算攝影、檢測(cè)、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競(jìng)賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺(jué)SLAM“。請(qǐng)按照格式備注,否則不予通過(guò)。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


