999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenCV和OpenGL的計算機視覺虛擬實驗開發

2021-05-29 11:56:28陶鏞澤郭天太胡佳成吳曉康王雅婷
實驗室研究與探索 2021年4期
關鍵詞:實驗室計算機實驗

陶鏞澤,郭天太,胡佳成,吳曉康,王雅婷

(中國計量大學計量測試工程學院,杭州 310018)

0 引言

隨著自動化行業的發展和人工智能的崛起,計算機視覺實驗教學成為高校理工科專業必不可缺的一部分,它對學生編程及創造能力的提高起著重要的作用。在實際中,計算機視覺實驗資源無序分布、多元異構、沒有統一標準的特點使實驗抽象難懂,不利于達到預期的教學效果[1]。如果單純從數字圖像處理角度出發優化實驗內容,很難提高學生的興趣、調動學生的積極性,可以說是治標而不治本。

隨著虛擬現實技術的發展,在教育領域,利用虛擬現實技術可降低實驗器材所需的成本,并將教學過程與多媒體技術相融合,創造出動靜結合的三維環境[2],甚至在現實中危險性較大或難以實現的環境。虛擬實驗室的可移植性使學生不受時空限制,充分利用虛擬實驗軟件提供的便利,在自主學習中開拓思維[3],故虛擬實驗室被稱為“沒有圍墻的實驗室”[4]。

目前,虛擬實驗室在醫學圖像處理方面的應用較為成熟。研發人員開發了基于VTK和ITK的VolView系統[5],建立了虛擬仿真實驗教學中心,以實現醫學圖像濾波、分割和三維可視化等功能[6],模擬真實工業環境,對機械零件和電子元件進行檢測[7]。通過在LabVIEW中嵌入Matlab 圖像處理程序[8]的方式建立計算機視覺虛擬實驗室。由于此類仿真的動態效果往往不及靜態效果,故有的高校開發了基于Unity3D 和3ds max的計算機視覺虛擬實驗室,創建可漫游的虛擬環境。

由于目前計算機視覺實驗側重于利用計算機對圖像進行處理,對計算機視覺中的“視覺”的關注度不及前者,提出了基于OpenCV 和OpenGL 的計算機視覺虛擬實驗室。其使用流程如圖1 所示,學生在圖形用戶界面中發出指令,進入虛擬環境,以虛擬相機的視角在虛擬環境中移動,獲取圖像,并通過數字圖像處理程序得到實驗結果,最后將其保存。

圖1 計算機視覺虛擬實驗室操作流程

計算機視覺虛擬實驗室開發包括5 個步驟:虛擬環境的創建、數字圖像處理模塊的設計、圖形用戶界面的開發、模塊聯立和系統測試。開發的虛擬實驗室結構圖如圖2所示,其中,虛擬環境、圖形用戶界面和數字圖像處理模塊構成了該實驗室的3 大組成模塊,與其對應的第3 方庫分別為OpenGL、Qt 和OpenCV,開發環境為Pycharm+Anaconda。

圖2 計算機視覺虛擬實驗室結構圖

1 虛擬環境的創建

虛擬環境創建的重點在于理解相機是如何實現人的雙目功能以及如何將真實相機轉換為虛擬相機。利用OpenGL對3D模型創建和渲染,將虛擬場景轉化為虛擬相機里的三維世界,再將虛擬相機里的三維世界轉化為平面圖形。

1.1 計算機視覺原理

計算機視覺就是讓機器跟人一樣,通過視覺獲取信息,感知外部場景,此處的機器可以理解為相機。對于計算機視覺虛擬實驗室而言,相機和相機觀察到的事物都是虛擬的,即利用OpenGL 創建虛擬相機和虛擬場景,以模擬真實相機觀察外界事物,達到逼真的效果。在虛擬環境中,虛擬場景保持靜止;虛擬相機不斷運動,通過鼠標/鍵盤控制虛擬相機,實現移動、旋轉和鏡頭縮放等功能。

1.2 OpenGL庫

OpenGL是開源的圖形庫,用戶可通過OpenGL創建交互式程序產生運動的三維圖形對象,如使用計算機圖形學技術產生真實圖像,或通過虛構的方式產生虛擬圖像[9]。同時,OpenGL 允許用戶直接使用現有模型,較為有效地節省了建模時間[10]。

OpenGL具有豐富的圖形加工功能,能實現模型繪制、顏色模式指定、光照、圖像效果增強、紋理映射、實時動畫及人機交互。OpenGL 被廣泛應用于工業、建筑等領域的靜態和動態仿真。

1.3 相機標定

相機生成圖像時,將穿過鏡頭的光線投射到圖像傳感器上來捕捉場景,使三維場景投影到二維平面上。場景和它的圖像之間以及同一場景的不同圖像之間都有著重要的關聯。

如圖3 所示,光線從被攝場景發出后穿過前置孔徑,被相機捕獲,捕獲到的光線觸發相機后面的成像平面(即圖像傳感器)。

圖3 相機成像原理圖

在圖3 中:do為透鏡到被攝物體的距離;di為透鏡到成像平面的距離;f 為透鏡焦距。這些數據的關系就是透鏡成像公式:

因為大多數情況下do?di,故可通過成像平面處于焦點位置來簡化這一相機模型。根據成像原理,成像平面上的圖像是反轉的。因此,只要把成像平面放在鏡頭前面,就能得到跟原來幾乎一樣但未反轉的圖像。該簡化模型即為針孔照相機模型,如圖4 所示。

圖4 針孔照相機模型

圖中:ho為物體高度;hi為圖像高度;do為物體到相機的距離。由該模型和相似三角形的性質,可得出表示場景和圖像關系的投影方程:

式(2)表明:hi與do成反比,這個關系決定了三維坐標在成像平面上的投影位置。若坐標系位于透鏡焦點上,則點(X,Y,Z)處的三維坐標在成像平面的投影點(x,y)=(fX/Z,fY/Z)。Z 方向的值取決于點的深度,即式(2)中的do。引入齊次坐標后,上述關系可用矩陣表示(即二維坐標用3 個向量表示,三維坐標用4 個向量表示):

式中:s為可任意縮放的因子;3 ×4 矩陣為投影矩陣。若坐標系未與焦點對齊,則需引入旋轉量r 和偏移量t。引入后即可把被投影的三維點表示為一個以相機為中心的坐標系:

式(4)中的3 ×3 矩陣中含有相機焦距等內部參量,3 ×4 矩陣中含有相機位置等外部參量,即相機與外部環境相關的參量。

在同一設備上安裝兩臺相機,讓它們觀察同一場景,并且二者間有固定的基線(相機中心點的連線),就構成了一個立體視覺裝置,如圖5 所示。

圖5 兩臺相機觀察同一個場景

沿三維坐標X和相機中心點的連線,可在成像平面上得到對應坐標x。為從成像平面中的坐標找到另一個成像平面中的對應坐標,需對第2 個成像平面上虛線的投影進行搜索,虛線的投影即x的對極線。

在雙目系統幾何形狀中,所有對極線的公共點即為極點。極點是一個相機中心點在另一個相機上的投影(圖5 中的e和e′)。

記點x的坐標為(x,y),X在另一成像平面的對應坐標為(x′,y′)。成像平面上的坐標和其對極線之間的關系,可以用3 ×3 矩陣F表示:

式(5)中的l′1、l′2和l′3滿足約束條件:

因為式(6)為x 的對極線方程,且二維直線可由三維向量表示,故式(5)中的F 相當于把一個視圖上的坐標映射到另一個視圖上的對極線上。當F 確定后,由兩個成像平面上的坐標可得三維坐標的深度。

1.4 虛擬圖形加工

虛擬圖形加工使圖形在視覺上呈現立體化,產生逼真的效果,包括正方體貼圖和光照渲染等環節。

正方體貼圖等價于對紋理對象投影,如同“木板”將紋理對象包圍,最終在視覺上形成“木箱”,如圖6(a)、(b)所示。

圖6 木箱的“2D”和“3D”圖形

根據光照和反射原理,分別如圖7(a)、(b)所示,對“木板”和“木箱”進行光照渲染。

圖7 光照渲染后的“木箱”和“木板”

1.5 虛擬環境展示

用戶通過鍵盤控制虛擬相機平移,更新相機位置。平移前后效果分別如圖8(a)、(b)所示。

圖8 相機平移前后的效果圖

用戶通過鼠標按鍵控制虛擬相機自由旋轉,更新相機視角。旋轉前后的效果分別如圖9(a)、(b)所示。

圖9 相機旋轉前后的效果圖

用戶通過鼠標滾輪控制虛擬相機鏡頭縮放,改變虛擬場景在相機中所成像的大小。縮放前后的效果分別如圖10(a)、(b)所示。

圖10 相機鏡頭縮放前后的效果

2 數字圖像處理模塊

本章將設計合理的實驗內容,完成圖像處理程序的編寫。在設計實驗內容時,結合學校實際教學情況,并充分考慮學生的能力差異。在進行數字圖像處理時,主要調用OpenCV庫,結合輸入圖像的特點完成程序設計,達到實驗預期的效果。

2.1 數字圖像處理

數字圖像處理的定義是通過計算機來處理數字圖像,其過程可大致分為圖像預處理和特征提取兩個環節。其中,圖像預處理是特征提取的基礎,對特征提取的質量和圖像分析的結果有很大的影響。

2.2 OpenCV庫

OpenCV是一個開源的計算機視覺庫。1999 年,Gary Bradski對其啟動研發工作。OpenCV庫涵蓋計算機視覺各個領域,兼容多種操作系統。它旨在提供一個簡潔而高效的接口,幫助開發人員快速構建視覺應用[11]。

OpenCV庫擁有豐富的資源,如opencv_features2d用于興趣點檢測、描述和匹配;opencv_calib3d 用于相機標定、和立體視覺[12]等。OpenCV 在計算機視覺研發人員中很流行,被用作主要開發工具[13]。

2.3 實驗內容設計

在計算機視覺教學中,側重點在于圖像預處理環節。為了適應課堂教學,在設計實驗內容時,以圖像預處理為主,同時補充少量特征提取實驗結果。圖像預處理內容分為顏色空間轉換、幾何變換、形態學轉換、直方圖、傅里葉變換、圖像濾波、自適應閾值處理和Canny邊緣檢測等部分;特征提取內容為Harris 角點檢測。

2.4 顏色空間轉換

在數字圖像處理中,為減少計算機運算時間并使結果不受自然光照的影響,將彩色圖像轉換為灰度圖像,如圖11 所示。

圖11 彩色圖像轉換為灰度圖像

RGB 是一種被廣泛接受的顏色空間,也是一種在電子成像系統中采集和顯示顏色的有效方法,但它并不直觀,也不符合人對于顏色的感知方式。為直觀地描述顏色,可采用HSV顏色空間,即色調、飽和度和亮度。原始圖像的HSV圖像如圖12 所示。

圖12 彩色圖像轉換為HSV圖像

2.5 幾何變換

幾何變換是將一幅圖像映射到另外一幅圖像的操作,可視為矩陣的線性變換。OpenCV 提供了多個與映射相關的函數,這些函數使用起來方便靈活,能快速完成圖像的映射。如圖13、14 所示,分別為對圖像進行仿射變換和透視變換后的效果圖。

圖13 映射變換效果圖

圖14 透視變換效果圖

2.6 形態學操作

形態學用于分析和處理離散圖像,從圖像內提取描述圖像形狀的分量信息,通常是理解圖像時使用的本質形狀特征。形態學定義了一系列運算,用預先定義的形狀元素探測圖像,實現圖像的轉換。形狀元素與像素領域的相交方式決定了運算的結果。如圖15、16 所示,分別為對圖像進行腐蝕操作和膨脹操作后的效果圖。

圖15 腐蝕操作效果圖

圖16 膨脹操作效果圖

2.7 直方圖

直方圖是數字圖像處理中典型的分析方法,從圖像灰度級的角度對圖像進行描述,包含豐富而重要的信息。從直方圖的角度對圖像進行處理,可達到增強圖像顯示效果的目的。在數字圖像處理中,一般會統計一幅圖像中具有某個值的像素的數量,產生一個簡單的圖標,如圖17 所示。

圖17 灰度圖像的直方圖

直方圖均衡化通過均衡所有像素強度值的使用頻率讓圖像的直方圖盡可能地平穩,改善圖像對比度,提高圖像質量,如圖18 所示。

圖18 直方圖均衡化后的灰度圖像

2.8 圖像平滑

圖像平滑是在保留圖像原有信息的情況下,過濾掉圖像的噪聲。5 ×5 中值濾波獲得5 ×5 結果像素鄰域內像素值的中位數,其效果如圖19 所示。

圖19 中值濾波效果圖

2.9 傅里葉變換及逆變換

傅里葉變換將圖像從時域轉換到頻域,如圖20 所示,高亮度區域表示低頻分量,低亮度區域表示高頻分量。對頻域圖像高通濾波可去除低頻分量,保留高頻分量,最后由逆傅里葉變換得到二值圖像,如圖21 所示。結果表明:高通濾波能對圖像進行邊緣檢測。

圖20 傅里葉變換后的頻域圖像

圖21 逆傅里葉變換后的二值圖像

2.10 自適應閾值處理

當圖像色彩不均衡時,使用某個確定閾值的閾值化處理很難得到令人滿意的閾值處理結果,采用自適應閾值處理,處理后的效果如圖22 所示。結果表明:自適應閾值處理能對圖像進行邊緣檢測。

圖22 自適應閾值處理效果圖

2.11 Canny邊緣檢測

Canny邊緣檢測能有效消除檢測結果中邊緣厚度過大的問題,并且檢測到重要邊緣,排除無關邊緣。Canny邊緣檢測分為去噪、計算梯度、非極大值抑制和確定邊緣4 個步驟,效果如圖23 所示。

圖23 Canny邊緣檢測效果圖

2.12 Harris角點檢測

在提取圖像的局部特征時,可選擇角點作為局部特征。角點很容易被精確地檢測到。Harris角點檢測將灰度圖像轉換為浮點數型輸出圖像,輸出圖像中的每個像素值表示角點強度。之后對輸出圖像閾值處理,獲得角點,如圖24 所示。

圖24 Harris角點檢測效果圖

3 圖形用戶界面的開發

圖形用戶界面的開發主要調用Qt,在設計上應滿足人性化、易于上手等條件,并充分考慮用戶的特點和實驗教學的需要。

3.1 Qt庫

Qt是GUI設計類庫和可視化應用程序開發類庫,它提供了設計現代GUI 和開發應用程序的API。Qt由許多模塊組成,如Qt Charts 用于二維圖表顯示;Qt Data Visualization 用于數據三維顯示等[14]。Qt 在國防、移動設備、后端管理系統等領域廣泛應用[15]。

3.2 圖形用戶界面展示

初始化后圖形用戶界面將顯示文本框,如圖25 所示。文本框顯示和圖像顯示之間的切換通過交替調用setParent函數和addWidget函數實現。

圖25 初始化的圖形用戶界面

在圖形用戶界面中,第1 行的按鍵實現基礎功能,點擊“原始圖像”將實驗結果與輸入圖像進行對比;點擊“保存圖像”按鍵保存實驗結果,如圖26 所示。第2~5 行的按鍵用于數字圖像處理。在第6 行的按鍵中,點擊“使用說明”獲取軟件使用說明書;點擊“數字圖像處理程序”查看實現代碼和原理。

圖26 保存圖像

4 模塊聯立和系統測試

4.1 模塊聯立

程序的編譯環境使用Pycharm,并選用Anaconda作為Python語言,以調用各種第3 方庫。在開發圖形用戶界面時,采用clicked.connect 函數將按鍵與實現功能的函數連接。從圖形用戶界面進入虛擬環境時,采用subprocess.run 函數啟動虛擬環境程序;從虛擬環境提取圖像時,使用glReadBuffer 函數和glReadPixels函數獲取虛擬環境的窗口信息。

由于不同第3 方庫采用的標準不同,如OpenCV對圖像采用BGR格式,OpenGL和Qt對圖像采用RGB格式;OpenCV 采用標準像素大小,OpenGL 和Qt 采用相對像素大小,因此,在編寫程序時,采取了必要的優化,從而排除此類問題對最終效果的影響。

4.2 系統測試

模塊聯立完成后,采用pyinstaller 打包工具將編寫好的.py文件轉化為.exe 文件,并將.exe 文件移植到多臺計算機上進行測試。在檢測.exe 文件是否能正常啟動時發現,該軟件適用于64 bit Windows 操作系統。

測試過程中,計算機視覺虛擬實驗室運行過程流暢,在按下按鍵時均能迅速生成相應結果,不會因為點擊按鍵頻率過高而導致程序崩潰。為獲得數字圖像處理程序執行時間,在代碼中使用getTickCount 函數進行測試,測試結果見表1。

表1 數字圖像處理程序執行時間測試結果

表1 結果表明:數字圖像處理程序執行速度較快,處于ms 量級。當執行時間小于100ms 時,用戶會認為顯示實驗結果和按下按鍵是同時發生的。但是,第7、9、10 組的實驗執行時間均超過100ms,相比于其他組而言慢了很多,原因是這3 組實驗的程序中調用了matplotlib,在圖片格式轉換上較為復雜。

因此,該計算機視覺虛擬實驗室可以投入到實際教學中,滿足目前計算機視覺實驗教學需求。

5 結語

本文結合虛擬現實技術和計算機視覺技術,進行了基于OpenCV和OpenGL的計算機視覺虛擬實驗室的開發。計算機視覺虛擬實驗室建立后,學生可以不受臺套數和時空的限制,隨時、多次、全方位地進行計算機視覺實驗,深刻理解計算機視覺的內涵,掌握數字圖像處理的過程和原理;教師則可以通過這一渠道降低計算機視覺實驗的教學難度,讓學生輕松地學習計算機視覺,把原來乏味的實驗變得生動有趣,從而改善課堂氛圍。

猜你喜歡
實驗室計算機實驗
記一次有趣的實驗
計算機操作系統
基于計算機自然語言處理的機器翻譯技術應用與簡介
科技傳播(2019年22期)2020-01-14 03:06:34
做個怪怪長實驗
電競實驗室
電子競技(2019年22期)2019-03-07 05:17:26
電競實驗室
電子競技(2019年21期)2019-02-24 06:55:52
電競實驗室
電子競技(2019年20期)2019-02-24 06:55:35
電競實驗室
電子競技(2019年19期)2019-01-16 05:36:09
信息系統審計中計算機審計的應用
消費導刊(2017年20期)2018-01-03 06:26:40
NO與NO2相互轉化實驗的改進
主站蜘蛛池模板: 日韩二区三区无| 亚洲精品午夜天堂网页| 高清国产在线| 欧美人与动牲交a欧美精品| 日韩亚洲综合在线| 日韩a级片视频| 91久久偷偷做嫩草影院| 欧美区一区二区三| 欧美视频二区| 久久窝窝国产精品午夜看片| 一本大道东京热无码av| 欧美视频免费一区二区三区| 欧美性久久久久| 亚洲第一香蕉视频| 色婷婷在线影院| 国产精品手机在线播放| 日韩无码精品人妻| 欧美不卡在线视频| 香蕉视频在线观看www| 潮喷在线无码白浆| 国产h视频免费观看| 亚洲国产精品日韩欧美一区| 中文无码伦av中文字幕| 激情午夜婷婷| 91美女在线| 国产成人a毛片在线| 成人91在线| 国产小视频a在线观看| 啊嗯不日本网站| 国产亚洲欧美在线人成aaaa| 国产又黄又硬又粗| 91小视频在线| 在线欧美国产| 日韩在线成年视频人网站观看| 一级毛片在线免费视频| 无码中文AⅤ在线观看| 亚洲色图在线观看| 在线国产欧美| 国产呦视频免费视频在线观看| 国产91在线|日本| 99人体免费视频| 精品国产免费人成在线观看| 中字无码av在线电影| 亚洲综合亚洲国产尤物| 免费看a毛片| 天天摸夜夜操| 国产亚洲高清在线精品99| 国产成人免费| 亚洲乱伦视频| 久久精品丝袜高跟鞋| 国产系列在线| 丝袜美女被出水视频一区| 日韩av在线直播| 国产综合另类小说色区色噜噜| 人妻丰满熟妇啪啪| 日本一区二区三区精品国产| 亚洲中久无码永久在线观看软件| 色综合久久88| 最新日韩AV网址在线观看| 欧美在线综合视频| 国产成人av大片在线播放| 女同久久精品国产99国| 国产高清国内精品福利| 色男人的天堂久久综合| 亚洲人成网站18禁动漫无码| 婷婷丁香色| www.亚洲一区二区三区| 亚洲国产91人成在线| 毛片网站观看| 依依成人精品无v国产| 国产成年女人特黄特色大片免费| 日韩在线欧美在线| 精品人妻系列无码专区久久| 手机在线国产精品| 老司机aⅴ在线精品导航| 国产精品第页| 久久精品国产999大香线焦| 日韩在线第三页| 真实国产乱子伦视频| 色天堂无毒不卡| 91青青在线视频| 婷婷六月天激情|