Hi,您好,歡迎來到西安天任軟件科技有限責任公司!

OpenCV是(shì)什麽?

發布時間:2021-04-29 11:03:05


OpenCV是(shì)什麽


OpenCV概述

在說OpenCV之前要說一下什麽是(shì)計算機視覺,計算機視覺是(shì)在圖像基礎上發展起來的一門新興學科,計算機視覺是(shì)研究讓機器如何看世界,認識這個五彩缤紛的世界,就是(shì)讓攝像頭代替人眼來對目标進行識别,跟蹤和測量,并進一步對捕獲的圖像數據(視頻(pín)數據)轉換成一種新的表達方式或者一個新的決策的過程!在轉換過程中進行的轉換都是(shì)爲了達到某一目标。


舉個列子:通過輸入設備(攝像頭、掃描儀)将前方1米處發現(xiàn)的物體輸入到電腦中,并對這些數據進行處理,然後與數據庫裏的模型比對,那麽最後得到的決策可能是(shì)前方有一輛汽車或者站着一個人,處理的過程可能是(shì)把彩色圖像轉換成單通道的灰色圖(灰色圖要比彩色圖容易處理後面會說爲什麽),對圖像降噪聲,或者通過圖像序列分析去(qù)除攝像機晃動的影響,這些轉換過程/處理過程最終将會轉換成一種新的決策,表達方式!


随着計算機視覺的誕生,人工智能技術也随着和誕生,其中人工智能技術中生物識别技術能從計算機處理的圖像數據(多維數據)中獲取信息,并對這個信息進行識别,并做相(xiàng)應的處理,人工智能領域下有很多技術比如最著名的機器學習等等這裏就不做太多的詳細介紹,後面學到機器學習時會和大家詳細介紹人工智能技術下各個領域作用!

因爲計算機視覺是(shì)計算機學科所以在、工程、信号處理、物理學、應用數學和統計學、神經生理學和認知(zhī)科學等都有研究方面,在制造業、檢驗、文檔分析、醫療診斷、和軍事等領域等各種智能/自主應用方面,都有非常廣闊的前景發展!


計算機視覺實現(xiàn)起來難嗎(ma)?
01


人類本身是(shì)視覺動物,所以人類覺得可以很容易實現(xiàn)計算機視覺,假如說讓你從一個場景中找到一輛汽車,顯然很容易,因爲汽車本身較大,容易被眼睛所捕獲,但(dàn)是(shì)其中在捕獲的過程中有着很複雜(zá)的過程:

人腦将視覺信号劃分入很多個通道,将各種不同的信息輸入你的大腦。你的大腦有一個關注系統,會根據任務識别出場景的重要部分,并做重點分析,而其他部分則分析的較少。在人類視覺流中存在着大量的反饋,但(dàn)是(shì)目前人類對之了解甚少。肌肉控制的傳感器以及其他所有傳感器的輸入信息之間存在着廣泛的關聯,這使得大腦可以依賴從出生以來所學到的信息,在大腦中反饋信息。

所以我們要想真正的實現(xiàn)一個人工智能産品的話(huà)就要把人類自己本身的所有信息模拟到計算機上,比如大腦=CPU,眼睛=攝像頭,感官=傳感器,并且要讓之間協調工作,相(xiàng)對來說是(shì)非常複雜(zá)的!

其次計算機接受到的數據主要來源于攝像頭,磁盤文件中的數值矩陣:

圖1.1(取之《學習OpenCV》)中的汽車有一個反光鏡但(dàn)是(shì)計算機隻看到一組數值矩陣:

圖1.1

由于該圖是(shì)單通道(黑白圖)所以一個矩陣數值就可以表示一個像素點,如果是(shì)多通道的RGB顔色就需要三個數值表示,比如194210 201表示一個像素點,而單通道194就可以表示像素點!

其中非常令人頭疼的問題就是(shì)圖像噪聲:

左:正常圖片右:帶圖像噪聲的圖片

如果一張圖裏每個像素點上都摻雜(zá)着圖像噪聲的話(huà)會降低圖像識别的準确率,圖像噪聲産生的問題主要來自輸入設備(攝像機)。

場景物體的幹擾
02

假如我們要做一個能夠自動把房間裏掉地上的書(shū)撿起來放(fàng)到書(shū)架上,那麽我們需要從這個房間場景中找出我們所需要的目标物品:書(shū)。

假如說這個人的房間非常大或者在客廳,那麽時首先如果從右到左或者從左到右采用地毯式的搜索的話(huà)會需要進行大量的分析算法同時因爲CPU運算單元會進行過多的算法運算一直處于高電平狀态。會加快消耗機器人的電能,在這樣的情況下我們可以告訴機器人書(shū)一般會在某個地方出現(xiàn):書(shū)櫃、桌子、床上,沙發的周邊地區。然後将這三個模型導入到撿書(shū)機器人的比對數據庫裏,首先一點是(shì)在拍攝這些配對模型時,要将物品放(fàng)到最能表現(xiàn)其特征的地方:“正中心位置”。

有了這些信息之後那麽機器人可以很快的過濾掉場景中書(shū)籍不可能會掉落的地方,那麽機器人可以很快的找出書(shū)籍并放(fàng)到書(shū)架上!當然你也可以給機器人安裝激光掃描儀使其捕獲的物品體積使其在機器訓練時用捕獲的數據與模型數據進行校正時更加準确!

重建二維圖
03

就像上面說的,要從一個房間裏找到書(shū)可以根據特征來尋找加快尋找時間,那麽在找到一個目标時首先要将這個目标轉換成二維圖,也就是(shì)說三維圖是(shì)立體的,存在前後之分,而二維圖不存在前後之分,隻有寬高,爲什麽要轉換成二維圖?

二維圖的方法就是(shì)從一個三維圖(立體)中根據二維特征(平面)将二維數據提取出來并映射到另外一個圖像數據上!

可以看到二維圖可以更好的方便識别所需表面特征!


OpenCV

image.png

簡單介紹
01

OpenCV是(shì)計算機視覺開源庫,主要算法涉及圖像處理和機器學習相(xiàng)關方法。可以運行在LinuxWindowsAndroidMac OS操作系統上。它輕量級而且高效——由一系列 C 函數和少量 C++ 類構成,同時提供了Python、Ruby、MATLAB等語言的接口,實現(xiàn)了圖像處理和計算機視覺方面的很多通用算法。

OpenCV用C++語言編寫,它具有C ++,PythonJavaMATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實時視覺應用,并在可用時利用MMX和SSE指令, 如今也提供對于C#、Ch、Ruby,GO的支持。


可移植性
02

最新版本是(shì)OpenCV4.5.1,Opencv采用C/C++編寫在不同的系統環境上隻要稍微修改一下代碼就可以編譯通過,可以在Mac/Linux/Windows系統上運行,并且爲python,Ruby,MATLAB等編程語言提供接口!

運行效率
03

OpenCV在設計時的目标就是(shì)執行速度盡量快所以内部函數都是(shì)标C函數來編寫的,如果想要起到硬件加速(内部函數用IPP優化)需要購買IPP庫,購買IPP庫後OpenCV在運行時會自動調用IPP庫做優化!

應用領域
04

目前OpenCV應用領域非常廣泛,在醫療設備、工廠檢驗、立體視覺、機器學習、人臉别識别、圖像拼接、生物醫學分析、無人機、等人工智能領域有廣泛應用,OpenCV可謂大顯身手,而這些,僅僅是(shì)其應用的冰山一角!

甚至計算機視覺可以用在聲譜圖上,對聲音和音樂進行分析!

并且計算機視覺被廣泛應用于工廠檢驗,大規模的産品制造在流水線(xiàn)上的某一環節都使用計算機視覺做檢測!

版權
05

在多數圖像處理相(xiàng)關的應用程序中被采用,BSD許可,可以免費(fèi)應用在商業和研究領域,OpenCV開源協議(yì)允許你使用OpenCV庫的全部代碼,生成商業産品,并且不需要公開源代碼,或對OpenCV庫中的算法改善後的算法!

如今,來自世界各地的各大公司、科研機構的研究人員(yuán),共同維護支持着opencv的開源庫開發。這些公司和機構包括:微軟,IBM,索尼、西門子、google、intel、斯坦福、MIT、CMU、劍橋等。

預備學習OpenCV
06

在學習OpenCV之前要懂得C/C++編程,和一些數學基礎!


盛圖科技
高端IT培訓第一品牌


上一篇:Linux模拟實現(xiàn)僵屍進程
下一篇:關于死鎖的一系列問題