国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

COI實驗室技能:MATLAB控制PCO相機

不知名網(wǎng)友 / 2560人閱讀

摘要:實驗室技能控制相機利用程序控制相機采集圖片可以實現(xiàn)采集任務的自動化,極大地提高實驗效率。安裝相機控制軟件下載并安裝預備資源中的相機控制軟件。安裝之后會解壓控制相機所需要的文件。

COI實驗室技能:MATLAB控制PCO相機

??利用程序控制相機采集圖片可以實現(xiàn)采集任務的自動化,極大地提高實驗效率。本文將系統(tǒng)性地介紹如何掌握這一技能。從環(huán)境配置 -> GUI界面使用 -> 腳本編寫 -> 項目實踐幾大方面進行介紹。PCO有三種可支持的matlab控制方法——adaptor、flim package和sdk,本文主要介紹方便實用的adaptor方法(特別感謝課題組袁海明同學的幫助)。本文所介紹的邏輯思路也適用于其它相機的控制(不限于PCO相機)。


PS: 本文篇幅較長,如果只是想簡單地實現(xiàn)matlab程序控制相機,只需閱讀第三、四節(jié)即可。
?

1. 預備資源和知識點

為了檢驗你是否掌握了這一技能,可以通過解決以下問題來檢驗:

  • 配置好環(huán)境并通過image acquisition工具箱預覽;
  • 利用matlab實現(xiàn)PCO相機的自動曝光;
  • 基于某一模型實時地采集并處理圖像。

該技巧的特點:

  • 僅需要USB連接電腦即可,不需要額外的圖像采集卡;
  • 方便快捷地的實現(xiàn)控制;

備注:如果已經(jīng)熟練配置環(huán)境,可以直接跳過第二節(jié)。
?

2. 環(huán)境配置

??正常工作之前,需要配置好matlab控制PCO所需要的環(huán)境,其基本流程如下:

環(huán)境配置很簡單,下面給出了具體配置時的中間過程,如果能理解其意思可以迅速跳過。

2.1 安裝PCO相機控制軟件

??下載并安裝預備資源中的PCO相機控制軟件camware。首先確保能在PCO相機控制軟件下正常采集到圖片:

2.2安裝PCO的matlab配套包

??測試完相機控制軟件,就說明相機與電腦之前的串口通信是正常的。接下來下載并安裝預備資源中的PCO的matlab配套包。安裝之后會解壓matlab控制相機所需要的文件。安裝后的文件如下:

??該安裝包支持三種matlab控制相機的方式,本文主要介紹adaptor的方式。

2.3 配置matlab環(huán)境

??打開上一節(jié)安裝的adaptor文件夾,其中“readme.txt”介紹了配置流程。

整理一下需要配置的內(nèi)容包括:

  • 安裝附加工具包“MinGW-w64”編譯器;
  • 安裝附加工具包“image acquisition toolbox”;
  • 設置adaptor文件夾為matlab的當前路徑;
  • 在matlab命令窗口輸入“pco_imaqregister”,它會自動安裝所需的dll文件;
  • 在命令行輸入“imaqhwinfo”來檢驗環(huán)境是否配置成功;

(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了。

?

3. matlab控制相機的GUI介紹(★★★)

??在環(huán)境配置成功后,打開matlab菜單欄app中“image acquisition”工具包,會彈出matlab的相機控制窗口。熟練掌握這一技能是后面靈活編寫代碼的關鍵,往后需要設置的指令都可以直接從GUI的操作中查找。如下圖所示,筆者已對關鍵信息做出標注。

特點:

  • 通過GUI可以檢測matlab環(huán)境是否配置成功;
  • 通過GUI的相機屬性設置和右下角的命令指示窗口,可以獲取屬性設置的代碼指令;
  • 指令包括設置曝光時間、每次采集的數(shù)量、是否添加時間戳、是否增加delay、觸發(fā)模式、快門模式等等;
    ?

4. 用腳本的形式實現(xiàn)相機控制(★★★)

??在熟練掌握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é)將介紹幾種應用此框架的編程實例。
?

5. 實踐項目(★★★★★)

5.1 基于matlab程序?qū)崿F(xiàn)最大的動態(tài)范圍利用率

??本項目旨在通過算法實現(xiàn)相機的自動曝光,從而適應不同亮度的拍照環(huán)境,特別是對于亮度變化迅速的應用場景。以調(diào)節(jié)鏡頭的光圈作為場景亮暗的變化模擬,本項目程序的運行結(jié)果如下。在改變光圈大小后(模擬場景亮度變化),程序能夠自動地調(diào)整曝光時間,使得采集圖像的強度分布充滿相機整個動態(tài)范圍,從而實現(xiàn)最大動態(tài)范圍的利用率。

大光圈的結(jié)果:
小光圈的結(jié)果:

該自動曝光模型具有以下特點:

  • 實現(xiàn)百毫秒量級自動曝光的調(diào)整;
  • 面對極大程度地過曝,程序也能快速地調(diào)整到合適的曝光時間;
  • 實現(xiàn)了最大動態(tài)范圍的利用率,并可以通過調(diào)整模型參數(shù)實現(xiàn)不同程度的自適應。

5.1.1 最大化利用率的模型

??問題核心:如果相機曝光時間不合適,可能會造成圖像過暗或者過曝,傳統(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ù)值也是可以的,只是其曝光程度有微小的差別。
?

5.2 基于matlab程序?qū)崟r演示模型對采集圖像的處理結(jié)果

??本項目主要演示如何將圖像處理算法增加到采集過程中,從而實現(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);

6. 總結(jié)

??本文系統(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

相關文章

  • matlab是什么?

    摘要:是兩個詞的組合,意為矩陣工廠矩陣實驗室,軟件主要面對科學計算可視化以及交互式程序設計的高科技計算環(huán)境。MATLAB是矩形實驗室(Matrix laboratory)的簡稱,是由美國MathWorks公司開發(fā)的,它是一款出品的商業(yè)數(shù)學軟件,它常常用于數(shù)據(jù)分析、無線通信、深度學習、圖像處理與計算機視覺、信號處理、量化金融與風險管理、機器人,控制系統(tǒng)等領域。MATLAB是matrix&l...

    3119555200 評論0 收藏0
  • 一百行js代碼實現(xiàn)一個校驗工具

    摘要:一個不小心,代碼里就出現(xiàn)了不少等不可維護的代碼。因此,我覺得一個團隊或者是一個項目,需要一個校驗工具,簡化我們的工作。只看這一小段代碼我希望我的校驗工具也是鏈式調(diào)用,鏈式調(diào)用可以極大的簡化代碼。 源碼:git倉庫 歡迎star & fork ~~ 首發(fā)于 掘金 做過校驗需求的小伙伴們都知道,校驗其實是個麻煩事。 規(guī)則多,需要校驗的字段多,都給我們前端帶來巨大的工作量。 一個不小心,代碼...

    TZLLOG 評論0 收藏0
  • 加強深度學習能力以簡化設計、訓練和部署模型

    摘要:此發(fā)行版還添加了新的重要的深度學習功能,可簡化工程師研究人員及其他領域?qū)<以O計訓練和部署模型的方式。內(nèi)部基準測試顯示,在部署階段為深度學習模型產(chǎn)生的代碼,比的性能提高倍,比的性能提高倍。 MATLAB Release 2017b (R2017b) 今日正式推出,其中包括 MATLAB 和 Simulink 的若干新功能、六款新產(chǎn)品以及對其他 86 款產(chǎn)品的更新和修復補丁。此發(fā)行版還添加了新的...

    pf_miles 評論0 收藏0
  • 一份關于人工智能、機器學習和大數(shù)據(jù)的報告

    摘要:為了你最好的未來,請不斷的學習創(chuàng)始人兼首席執(zhí)行官人工智能和機器學習的時代已經(jīng)到來了,這些領域都有可能對印度的行業(yè)產(chǎn)生重大的影響。在印度努力重振生產(chǎn)力增長的同時,人工智能和機器學習有望填補這一空白。 showImg(http://upload-images.jianshu.io/upload_images/13825820-702c6873cd07cfc3.jpg?imageMogr2/...

    Carbs 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<