摘要:實驗室技能控制相機利用程序控制相機采集圖片可以實現(xiàn)采集任務的自動化,極大地提高實驗效率。安裝相機控制軟件下載并安裝預備資源中的相機控制軟件。安裝之后會解壓控制相機所需要的文件。
??利用程序控制相機采集圖片可以實現(xiàn)采集任務的自動化,極大地提高實驗效率。本文將系統(tǒng)性地介紹如何掌握這一技能。從環(huán)境配置 -> GUI界面使用 -> 腳本編寫 -> 項目實踐幾大方面進行介紹。PCO有三種可支持的matlab控制方法——adaptor、flim package和sdk,本文主要介紹方便實用的adaptor方法(特別感謝課題組袁海明同學的幫助)。本文所介紹的邏輯思路也適用于其它相機的控制(不限于PCO相機)。
為了檢驗你是否掌握了這一技能,可以通過解決以下問題來檢驗:
該技巧的特點:
備注:如果已經(jīng)熟練配置環(huán)境,可以直接跳過第二節(jié)。
?
??正常工作之前,需要配置好matlab控制PCO所需要的環(huán)境,其基本流程如下:
環(huán)境配置很簡單,下面給出了具體配置時的中間過程,如果能理解其意思可以迅速跳過。
??下載并安裝預備資源中的PCO相機控制軟件camware。首先確保能在PCO相機控制軟件下正常采集到圖片:
??測試完相機控制軟件,就說明相機與電腦之前的串口通信是正常的。接下來下載并安裝預備資源中的PCO的matlab配套包。安裝之后會解壓matlab控制相機所需要的文件。安裝后的文件如下:
??該安裝包支持三種matlab控制相機的方式,本文主要介紹adaptor的方式。
??打開上一節(jié)安裝的adaptor文件夾,其中“readme.txt”介紹了配置流程。
整理一下需要配置的內(nèi)容包括:
(1) 安裝附加工具包“MinGW-w64”編譯器
流程:點擊matlab菜單欄主頁 -> 點擊附加功能 -> 搜索安裝“MinGW-w64”(可能需要登錄mathwork的賬戶,沒有注冊一個即可);
(2) 安裝附加工具包“image acquisition toolbox”
流程:點擊matlab菜單欄主頁 -> 點擊附加功能 -> 搜索安裝“image acquisition toolbox”;
(3) 在matlab命令窗口輸入“pco_imaqregister”,它會自動安裝所需的dll文件
設置adaptor文件夾作為當前matlab的路徑,然后在命令行窗口運行“pco_imaqregister”;
(4) 在命令行輸入“imaqhwinfo”來檢驗環(huán)境是否配置成功
如果運行上述指令后,彈出的結(jié)果中InstalledAdaptors:有內(nèi)容,則說明環(huán)境配置成功,接下來就可以實現(xiàn)matlab控制PCO了。
?
??在環(huán)境配置成功后,打開matlab菜單欄app中“image acquisition”工具包,會彈出matlab的相機控制窗口。熟練掌握這一技能是后面靈活編寫代碼的關鍵,往后需要設置的指令都可以直接從GUI的操作中查找。如下圖所示,筆者已對關鍵信息做出標注。
特點:
??在熟練掌握GUI操作的基礎上,我們就可以根據(jù)指令提示編寫自己的相機控制腳本了。其基本流程主要如下:
根據(jù)上述流程和GUI的指令提示,我們可以編寫出如下最簡單的采集程序:
% control camera by matlab codeclc,clearclose all% get sourcevid = videoinput("pcocameraadaptor_r2020a", 0, "USB 3.0");src = getselectedsource(vid);% initialize camera propertiesvid.FramesPerTrigger = 1; % setting the collecting number in each triggersrc.E1ExposureTime_unit = "us"; src.E2ExposureTime = 10000;% collecting imagesstart(vid);while get(vid,"FramesAvailable")<vid.FramesPerTriggerendimg = getdata(vid);% save and display imagemkdir("./images");imwrite(img,"./images/test.tif");imshow(img);% close viddelete(vid);
程序的運行結(jié)果如下,可以靈活便捷地采集到不同的圖像:
??在這個程序中,采集指令其實只有中間的三行代碼,其余部分都是屬性設置或者保存顯示文件。因此,在這個框架下,我們可以非常靈活地編寫自己的采集程序,并且可以增加圖像處理算法到程序中。下一節(jié)將介紹幾種應用此框架的編程實例。
?
??本項目旨在通過算法實現(xiàn)相機的自動曝光,從而適應不同亮度的拍照環(huán)境,特別是對于亮度變化迅速的應用場景。以調(diào)節(jié)鏡頭的光圈作為場景亮暗的變化模擬,本項目程序的運行結(jié)果如下。在改變光圈大小后(模擬場景亮度變化),程序能夠自動地調(diào)整曝光時間,使得采集圖像的強度分布充滿相機整個動態(tài)范圍,從而實現(xiàn)最大動態(tài)范圍的利用率。
大光圈的結(jié)果:
小光圈的結(jié)果:
該自動曝光模型具有以下特點:
??問題核心:如果相機曝光時間不合適,可能會造成圖像過暗或者過曝,傳統(tǒng)方法是人工調(diào)試,其主要缺點就是速度慢。所以核心問題就是如何找到合適的曝光時間,并且能同時解決過暗或者過曝的情況。
??模型思路:
按照偽代碼的思路,其程序?qū)崿F(xiàn)方法如下:
% 編寫程序?qū)崿F(xiàn)PCO相機自動曝光% 流程:設置一個初始曝光時間10ms -> 采集一張圖片 -> 計算前2%數(shù)值的均值V -> % e_t=6553/V*e_t -> 重新采集圖像 -> 計算前2%數(shù)值的均值V ->e_t=65535/V*e_t;clc, clearclose all% get sourcevid = videoinput("pcocameraadaptor_r2020a",0,"USB 3.0");src = getselectedsource(vid);% initializationvid.FramesPerTrigger = 1;exposure_time = 10000; src.E1ExposureTime_unit = "us";src.E2ExposureTime = exposure_time;fprintf("測試程序?qū)崿F(xiàn)自動曝光/n");% capture imagestart(vid);while get(vid,"FramesAvailable")<vid.FramesPerTriggerend % ensure that vid had capture enough imagesimg1 = getdata(vid);% upgrate the first stage exposure_time[A1,~] = sort(img1(:),"descend");V1 = mean(A1(1:round(numel(A1)/50)));exposure_time1 = 6553./V1.*exposure_time;src.E2ExposureTime = exposure_time1;% disp(["upgrade the first stage exposure_time is: ",...% num2str(exposure_time1/1000),"ms"]);pause(0.001);start(vid);while get(vid,"FramesAvailable")<vid.FramesPerTriggerend % ensure that vid had capture enough imagesimg2 = getdata(vid);% upgrate the second stage exposure_time[A2,~] = sort(img2(:),"descend");V2 = mean(A2(1:round(numel(A2)/50)));exposure_time = 65535./V2.*exposure_time1;src.E2ExposureTime = exposure_time;disp(["upgrade the final exposure_time is: ",... num2str(exposure_time/1000),"ms"]);pause(0.001);% capture the needing imagesstart(vid);while get(vid,"FramesAvailable")<vid.FramesPerTriggerend % ensure that vid had capture enough imagesimg = getdata(vid);figure(1),set(gcf,"Units","Pixel","position",[934 238 985 409]);subplot(121), imshow(img);subplot(122), imhist(img);pause(0.001);% close viddelete(vid)
模型中計算前1%的數(shù)值也是可以的,只是其曝光程度有微小的差別。
?
??本項目主要演示如何將圖像處理算法增加到采集過程中,從而實現(xiàn)實時的處理圖像。以圖像的熱力估計模型(僅道具,非真實)為例,其運行結(jié)果為:
如圖,左邊為相機實時采集到的圖像,右邊為經(jīng)過模型處理后實時顯示的結(jié)果。
程序?qū)崿F(xiàn):
% control camera by matlab codeclc,clearclose all% get sourcevid = videoinput("pcocameraadaptor_r2020a", 0, "USB 3.0");src = getselectedsource(vid);% initialize camera propertiesvid.FramesPerTrigger = 1; % setting the collecting number in each triggersrc.E1ExposureTime_unit = "us"; src.E2ExposureTime = 15000;% collecting imagesn = 0;while n<100 n = n+1; start(vid); while get(vid,"FramesAvailable")<vid.FramesPerTrigger end img = im2double(getdata(vid)); img_gray = im2uint8(img); img_tmp = repmat(img_gray,1,1,3); img_deal = label2rgb(gray2ind(img_gray, 255), jet(255)); figure(1), imshow([img_tmp img_deal]); pause(0.001);end% close viddelete(vid);
??本文系統(tǒng)性地介紹了如何掌握matlab控制PCO相機這一技能,從環(huán)境配置 -> GUI操作介紹 -> 腳本編寫 -> 實例演示,相信掌握這項技能的你們一定能實驗做得更順利,哈哈哈~
??在筆者掌握這項技能之后,發(fā)現(xiàn)其用處很大,所以專門為它寫了這篇指南,也感謝課題組師弟師妹幫忙準備了素材(* ̄︶ ̄)。
??歡迎廣大讀者們批評指正,學習交流,加油!
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/125569.html
摘要:是兩個詞的組合,意為矩陣工廠矩陣實驗室,軟件主要面對科學計算可視化以及交互式程序設計的高科技計算環(huán)境。MATLAB是矩形實驗室(Matrix laboratory)的簡稱,是由美國MathWorks公司開發(fā)的,它是一款出品的商業(yè)數(shù)學軟件,它常常用于數(shù)據(jù)分析、無線通信、深度學習、圖像處理與計算機視覺、信號處理、量化金融與風險管理、機器人,控制系統(tǒng)等領域。MATLAB是matrix&l...
摘要:一個不小心,代碼里就出現(xiàn)了不少等不可維護的代碼。因此,我覺得一個團隊或者是一個項目,需要一個校驗工具,簡化我們的工作。只看這一小段代碼我希望我的校驗工具也是鏈式調(diào)用,鏈式調(diào)用可以極大的簡化代碼。 源碼:git倉庫 歡迎star & fork ~~ 首發(fā)于 掘金 做過校驗需求的小伙伴們都知道,校驗其實是個麻煩事。 規(guī)則多,需要校驗的字段多,都給我們前端帶來巨大的工作量。 一個不小心,代碼...
摘要:此發(fā)行版還添加了新的重要的深度學習功能,可簡化工程師研究人員及其他領域?qū)<以O計訓練和部署模型的方式。內(nèi)部基準測試顯示,在部署階段為深度學習模型產(chǎn)生的代碼,比的性能提高倍,比的性能提高倍。 MATLAB Release 2017b (R2017b) 今日正式推出,其中包括 MATLAB 和 Simulink 的若干新功能、六款新產(chǎn)品以及對其他 86 款產(chǎn)品的更新和修復補丁。此發(fā)行版還添加了新的...
摘要:為了你最好的未來,請不斷的學習創(chuàng)始人兼首席執(zhí)行官人工智能和機器學習的時代已經(jīng)到來了,這些領域都有可能對印度的行業(yè)產(chǎn)生重大的影響。在印度努力重振生產(chǎn)力增長的同時,人工智能和機器學習有望填補這一空白。 showImg(http://upload-images.jianshu.io/upload_images/13825820-702c6873cd07cfc3.jpg?imageMogr2/...
閱讀 3735·2023-01-11 11:02
閱讀 4244·2023-01-11 11:02
閱讀 3050·2023-01-11 11:02
閱讀 5180·2023-01-11 11:02
閱讀 4737·2023-01-11 11:02
閱讀 5534·2023-01-11 11:02
閱讀 5313·2023-01-11 11:02
閱讀 3989·2023-01-11 11:02