亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Mjpg-streamer的輕量級無線圖傳系統(tǒng)設(shè)計(jì)

        2017-02-09 03:12:20唐文瑩張海峰
        關(guān)鍵詞:圖傳線程攝像頭

        唐文瑩,張海峰

        (杭州電子科技大學(xué) 電子信息學(xué)院,杭州310018)

        ?

        基于Mjpg-streamer的輕量級無線圖傳系統(tǒng)設(shè)計(jì)

        唐文瑩,張海峰

        (杭州電子科技大學(xué) 電子信息學(xué)院,杭州310018)

        提出了基于開源視頻處理軟件Mjpg-streamerh和嵌入式處理器S3C6410的無線圖傳系統(tǒng),并設(shè)計(jì)了一種快速YUV2RGB轉(zhuǎn)換算法;通過修改Mjpg-streamer源碼并交叉編譯后移植到嵌入式設(shè)備中,實(shí)現(xiàn)了視頻圖像采集和傳輸?shù)墓δ?,并設(shè)計(jì)了用于顯示圖傳畫面的安卓客戶端。實(shí)驗(yàn)結(jié)果表明,該系統(tǒng)可以很方便地用于無人機(jī)圖傳或無線視頻監(jiān)控方案,并可以在安卓手機(jī)端流暢地播放視頻畫面。

        Mjpg-streamer;S3C6410; YUV2RGB;無線傳輸;移動終端

        引 言

        無線圖傳系統(tǒng)在安防監(jiān)控、機(jī)器人技術(shù)以及機(jī)器視覺等領(lǐng)域均有廣泛的用途,應(yīng)用于嵌入式設(shè)備的無線圖傳系統(tǒng)需要滿足硬件資源消耗少、便攜、圖像清晰、帶寬占用率低等條件。Mjpg-streamer是輕型的視頻處理軟件,可應(yīng)用在基于IP協(xié)議的網(wǎng)絡(luò)中,從圖像采集設(shè)備中獲得格式為JPEG的視頻數(shù)據(jù),并以流的形式傳送到接收端,使用者通過輸入視頻服務(wù)器地址和端口號,就能方便地獲得圖像。圖傳系統(tǒng)資源消耗的主要部分是色彩空間轉(zhuǎn)換和圖像壓縮,在對比了三種常用的YUV2RGB算法后,設(shè)計(jì)了一種適用于嵌入式設(shè)備的快速算法。針對Mjpg-streamer數(shù)據(jù)傳輸方式設(shè)計(jì)的客戶端MjpgClient,可以運(yùn)行于任意Android 4.0以上設(shè)備,具有界面友好、操作簡便、圖像清晰、畫面流暢等特點(diǎn)。

        1 系統(tǒng)設(shè)計(jì)與組成

        本設(shè)計(jì)采用了將嵌入式視頻處理軟件Mjpg-streamer和安卓客戶端相結(jié)合的方法,提出了一種基于C/S(客戶端/服務(wù)器)架構(gòu)的無線圖傳系統(tǒng)。系統(tǒng)主要由4個模塊組成:

        ① 視頻采集模塊,由UVC攝像頭和USB接口組成。攝像頭選用HP 720P高清網(wǎng)絡(luò)攝像頭,分辨率為1280×720P,100萬像素,輸出視頻格式為MJPG或YUY2,具有體積小、免驅(qū)動、即插即用、價格低廉的優(yōu)點(diǎn)。該模塊完成了將攝像頭采集到的圖像數(shù)據(jù)以JPEG格式通過USB接口傳輸給ARM開發(fā)板的功能。

        ② 視頻圖像處理模塊,對圖像數(shù)據(jù)的處理主要由S3C6410開發(fā)板和視頻流服務(wù)器軟件Mjpg-streamer來完成。該模塊主要完成了圖像的編碼、打包及發(fā)送功能。

        ③ 視頻圖像傳輸模塊,主要功能是在無線局域網(wǎng)中將經(jīng)過處理器處理的數(shù)據(jù)利用無線網(wǎng)卡傳送給客戶端。

        ④ 安卓客戶端,用于連接到服務(wù)器以及瀏覽視頻圖像。系統(tǒng)設(shè)計(jì)如圖1所示。

        圖1 無線圖傳系統(tǒng)結(jié)構(gòu)

        2 Mjpg-streamer源碼分析

        2.1 V4L2視頻采集流程

        圖2 V4L2視頻采集操作流程

        視頻采集應(yīng)用程序編程接口V4L(Video for Linux)是Linux內(nèi)核里支持影像設(shè)備的一組API函數(shù),V4L2是V4L的第2個版本,與V4L相比,它在擴(kuò)展性和靈活性方面得到了很大的提高,并且可以支持更多的硬件設(shè)備,已成為Linux2.6下的標(biāo)準(zhǔn)接口。但由于它在V4L的基礎(chǔ)上改動很大,所以與V4L并不兼容,V4L2的操作更加簡單直觀。V4L2的驅(qū)動結(jié)構(gòu)分為兩層:上層為videodev模塊,下層為V4L2驅(qū)動程序。V4L2視頻采集操作流程如圖2所示[1]。Mjpg-streamer的視頻采集和參數(shù)設(shè)置程序遵循了V4L2打開視頻設(shè)備、設(shè)置圖像格式、數(shù)據(jù)處理、關(guān)閉設(shè)備的基本操作流程。

        2.2 Mjpg-streamer軟件架構(gòu)

        Mjpg-streamer采用模塊化設(shè)計(jì),以模塊為單位進(jìn)行功能設(shè)計(jì)和行為描述,這些功能模塊被稱作組件(plugins),其架構(gòu)主要分為三部分:主線程mjpg_streamer.c、輸入組件input和輸出組件output。其中主線程主要實(shí)現(xiàn)了對命令行參數(shù)的解析以及調(diào)用子線程運(yùn)行各組件的功能函數(shù)。在mjpg-streamer.h頭文件中定義了_globals結(jié)構(gòu)體,該結(jié)構(gòu)體聲明了存放一幀JPEG數(shù)據(jù)的容器*buf、輸入組件input和輸出組件output[2]。Mjpg-streamer的軟件架構(gòu)如圖3所示。

        2.3 相關(guān)組件

        Mjpg-streamer的組件分為輸入組件input和輸出組件output,程序中定義好了各個組件的輸入、輸出以及組件之間的銜接關(guān)系,用戶可以根據(jù)需求方便地選擇、刪改所需的模塊,具有高內(nèi)聚、低耦合的優(yōu)點(diǎn)。Mjpg-streamer最常用的輸入組件為針對UVC(USB video class)攝像頭的input_uvc,輸出組件為針對B/S(Browser/Server)架構(gòu)的output_http。

        2.3.1 input_uvc輸入組件

        input_uvc輸入組件主要完成的工作是獲取攝像頭拍攝的圖片并將其進(jìn)行壓縮編碼,共包括5個組件接口函數(shù)與其他接口銜接。input_run函數(shù)是輸入通道的運(yùn)行函數(shù),利用pthread_create函數(shù)建立工作線程,調(diào)用cam_thread抓取攝像頭采集的一幀圖像并進(jìn)行格式轉(zhuǎn)換,等待線程執(zhí)行完畢后,調(diào)用pthread_detach函數(shù)回收線程資源。其中抓圖線程cam_thread的執(zhí)行流程如圖4所示。

        圖3 Mjpg-streamer的軟件架構(gòu)

        圖4 抓圖線程cam_thread執(zhí)行流程

        2.3.2 output_http輸出組件

        output_http輸出組件主要完成的工作為創(chuàng)建http服務(wù)器線程、以socket套接字形式將視頻數(shù)據(jù)發(fā)送出去,并創(chuàng)建客戶端線程、定義服務(wù)器對客戶端請求的響應(yīng)。服務(wù)器線程server_thread被定義在httpd.c中,由output_http.c的output_run函數(shù)創(chuàng)建,作用是打開一個TCP socket套接字并等待客戶端連接。如有客戶端連接,則為每一個連接到服務(wù)器的客戶端創(chuàng)建一個client_thread,服務(wù)于該客戶端,設(shè)置可同時監(jiān)聽10個客戶端??蛻舳司€程client_thread的主要工作為接收客戶端發(fā)送的請求并進(jìn)行解析,根據(jù)請求類型作出相應(yīng)操作。客戶端接收的請求類型如表1所列。

        表1 客戶端請求類型

        3 YUV2RGB快速轉(zhuǎn)換算法設(shè)計(jì)

        目前市售攝像頭輸出圖像格式多為YUV,包括亮度信號Y、飽和度Cb和色彩度Cr,最常用的模型是YUV422格式,在將YUV數(shù)據(jù)壓縮前需要將其轉(zhuǎn)換為RGB(紅、綠、藍(lán))數(shù)據(jù)。在Mjpg-streamer的輸入組件input_uvc中,使用compress_yuyv_to_jpeg函數(shù)實(shí)現(xiàn)YUV轉(zhuǎn)RGB再壓縮為JPEG的功能。

        RGB與YUV轉(zhuǎn)換方程如下:

        式中,Y表示亮度值,Cr為紅色的色度值,Cb為藍(lán)色的色度值。

        經(jīng)矩陣運(yùn)算的轉(zhuǎn)換公式如下:

        3.1 整型算法

        由于YUV2RGB的轉(zhuǎn)換會涉及到浮點(diǎn)運(yùn)算,為了進(jìn)行快速轉(zhuǎn)換,可以通過移位將浮點(diǎn)運(yùn)算變?yōu)檎瓦\(yùn)算[3]。算法設(shè)計(jì)如下:

        u = YUVdata[UPOS] - 128;

        v = YUVdata[VPOS] - 128;

        rdif = v + ((v * 103)>>8);

        invgdif = ((u * 88)>>8) +((v * 183) >> 8);

        bdif = u +( (u*198) >> 8);

        r=YUVdata[YPOS] + rdif;

        g=YUVdata[YPOS] - invgdif;

        b=YUVdata[YPOS] + bdif;

        對計(jì)算結(jié)果進(jìn)行判斷,防止溢出:

        if (r>255) r=255;

        if (r<0) r=0;

        從RGB24格式到RGB565格式的轉(zhuǎn)換如下:

        RGBdata[1] =( (r & 0xF8) | ( g >> 5) );

        RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );

        3.2 部分查表法

        除了使用公式實(shí)現(xiàn)YUV2RGB的轉(zhuǎn)換,還可以使用查表法,查表法分部分查表法和完全查表法。部分查表法是指將算法中一些復(fù)雜的運(yùn)算直接通過數(shù)據(jù)之間的映射關(guān)系得到,而保留較為簡單的運(yùn)算。將上述算法中的乘法用部分查表法代替,可以加快處理速度[4-5]。

        算法改進(jìn)如下:

        rdif = fac_1_4075[u];

        invgdif = fac_m_0_3455[u] + fac_m_0_7169[v];

        bdif = fac_1_779[u];

        3.3 完全查表法

        完全查表法是根據(jù)YUV與RGB數(shù)據(jù)的映射關(guān)系,直接通過查表得到對應(yīng)的RGB值,但以最復(fù)雜的G分量為例,由于G與Y、U、V三種分量都有聯(lián)系,如G = YUV2G[Y][U][V]運(yùn)算,需要用到下標(biāo)均為255的三維數(shù)組,約占16 MB空間,內(nèi)存消耗過大。對于G分量,實(shí)際上能通過二次查表法,將其運(yùn)算簡化為對兩個二維數(shù)組的操作[5]:

        G = yig2g_table[y][uv2ig_table[u][v]];

        而R分量和B分量本身就只與YU分量或YV分量相關(guān),共需4個8×8的二維表,占4×216=256 KB內(nèi)存空間[6-7]。由于在嵌入式設(shè)備中,數(shù)據(jù)最終會被轉(zhuǎn)換成RGB565格式,用于顯示在LCD屏上;根據(jù)完全查表法可以將描述RGB的8位(0~255)精度簡化為高6位的數(shù)據(jù),所以可以將轉(zhuǎn)換映射表改為4個6×6的二維表,占用16 KB內(nèi)存,加快運(yùn)算速率,降低內(nèi)存消耗。

        最終設(shè)計(jì)的優(yōu)化YUV2RGB快速轉(zhuǎn)換算法如下:

        y = (YUVdata[Y1POS]>>2);

        u = (YUVdata[UPOS]>>2);

        v = (YUVdata[VPOS]>>2);

        r = yv2r_table[y][v];

        g = yig2g_table[y][uv2ig_table[u][v]];

        b = yu2b_table[y][u];

        RGBdata[1] =((r&0xF8)|(g>>5));

        RGBdata[0] =(((g&0x1C)<<3)|(b>>3));

        4 Android客戶端設(shè)計(jì)及系統(tǒng)測試

        4.1 Android客戶端設(shè)計(jì)

        針對Mjpg-streamer的數(shù)據(jù)發(fā)送模式,設(shè)計(jì)了Android客戶端MjpgClient,用于連接到視頻服務(wù)器并瀏覽視頻畫面。軟件架構(gòu)如圖5所示。

        圖5 客戶端軟件架構(gòu)

        程序設(shè)計(jì)了三個包:Activity、IO和View。其中Activity包用于存放登錄界面LoginActivity和主界面MainActivity;IO包中的MjpegInputStream類繼承了DataInputStream類,實(shí)現(xiàn)了Serializable接口,用于獲取視頻流,并進(jìn)行數(shù)據(jù)解析;View包中的MjpegView類繼承了SurfaceView類,實(shí)現(xiàn)了SurfaceHolder.Callback接口,用于獲取一幀圖像并顯示在畫布Canvas上。程序設(shè)計(jì)了兩個主要的工作線程:繼承于異步任務(wù)AsyncTask的ConnectTask,用于創(chuàng)建http客戶端與視頻服務(wù)器連接、獲取輸入流并通過按鈕實(shí)現(xiàn)Activity的跳轉(zhuǎn);繼承于Thread、服務(wù)于MjpegView的渲染線程MjpegViewThread,用于抓圖和顯示視頻畫面。程序的執(zhí)行流程如圖6所示。

        圖6 MjpegClient執(zhí)行流程

        4.2 系統(tǒng)測試

        硬件平臺方面,攝像頭選用HP 720P高清網(wǎng)絡(luò)攝像頭,分辨率為1280×720P,100萬像素,輸出視頻格式為MJPG或YUY2;網(wǎng)卡選用EOUP 2.4G USB無線網(wǎng)卡,帶寬為300 Mbps;視頻服務(wù)器選用ARM11開發(fā)板,CPU為S3C6410,主頻700 MHz,內(nèi)存512 MB。軟件平臺方面,視頻服務(wù)器平臺操作系統(tǒng)為基于Debian GUN/Linux的原生系統(tǒng)Raspbian;視頻服務(wù)器軟件為mjpg-streamer-r63;客戶端手機(jī)操作系統(tǒng)為Android 4.2.2,APP為MjpegClient。實(shí)驗(yàn)步驟如下:

        ① 根據(jù)軟件平臺修改Mjpg-streamer源碼,移植到開發(fā)板中并編譯通過;

        ② 編寫自啟動腳本,修改/etc/rc.local文件,實(shí)現(xiàn)Mjpg-streamer開機(jī)自啟動;

        ③ 打開手機(jī)熱點(diǎn),設(shè)置開發(fā)板為固定IP并指定連接的熱點(diǎn);

        ④ 打開手機(jī)端的APP-MjpegClient,輸入視頻服務(wù)器IP地址和端口號,按下connect按鈕控件,即可瀏覽視頻畫面。實(shí)測效果如圖7所示。

        圖7 無線圖傳系統(tǒng)實(shí)測

        實(shí)測數(shù)據(jù)如表2所列。

        表2 無人機(jī)中圖傳系統(tǒng)測試環(huán)境與測試結(jié)果

        結(jié) 語

        [1] 劉登誠,沈蘇彬.嵌入式Linux設(shè)備驅(qū)動程序開發(fā)技術(shù)的研究[D].南京:南京郵電大學(xué),2011:48-65.

        [2] 周鵬飛,潘地林.基于MJPG-Streamer的移動視頻監(jiān)控系統(tǒng)的設(shè)計(jì)與研究[D].淮南:安徽理工大學(xué),2013:36-42.

        [3] H NOBUHARA,K HIROTA,F DIMARTINO,et al.Fuzzy Relation Equations for Compression/Decompression Processes of Colour Images in the RGB and YUV Colour Spaces[J].Fuzzy Optimization and Decision Making,2005(4):235-246.

        [4] YIYUN YAN,HUIDONG DAI,XINGJIONG LIU,et al.Colored adaptive compressed imaging with a single photodiode[J].Applied Optics,2016,55(14):3711-3718.

        [5] 馮永超,羅敏,賀貴明.一種快速YUV-RGB彩色空間變換方法[J].微型機(jī)與應(yīng)用,2002(7):59-60.

        [6] 劉小龍,何勇.基于無人機(jī)遙感平臺圖像采集處理系統(tǒng)的研究[D].杭州:浙江大學(xué),2013:60-63.

        [7] 陳坤,蘇韓松.微型無人機(jī)圖像傳輸系統(tǒng)研究[D].天津:天津大學(xué),2011:10-15.

        [8] 肖征宇,鄭耀,宋廣華.無人機(jī)地面站軟件的設(shè)計(jì)與實(shí)現(xiàn)[D].杭州:浙江大學(xué),2010:3-5.

        [9] 陳書益,黃永慧.開源視頻服務(wù)器軟件MJPG-streamer的研究和應(yīng)用[J].電子設(shè)計(jì)工程,2012,20(5):172-176.

        唐文瑩(在讀碩士研究生),主要研究方向?yàn)榍度胧较到y(tǒng)應(yīng)用;張海峰(副教授),主要研究方向?yàn)橹悄軆x器設(shè)備。

        [3] 李娟.基于藍(lán)牙技術(shù)的無線數(shù)據(jù)包采集系統(tǒng)的設(shè)計(jì)[J].微計(jì)算機(jī)信息,2008(24):2.

        [4] 趙霄.基于單片機(jī)的藍(lán)牙接口設(shè)計(jì)及數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)[D].北京:北京交通大學(xué),2008.

        [5] 楊戰(zhàn)社.基于藍(lán)牙技術(shù)的數(shù)據(jù)傳輸[D].西安:西安科技大學(xué),2005.

        [6] 李浩瑜,唐榮斌.Android設(shè)備與STM32單片機(jī)通信方式的研究[J].通信設(shè)計(jì)與應(yīng)用,2014(11).

        [7] 謝景明.Android移動開發(fā)教程[M].北京:人民郵電出版社,2013.

        [8] 唐霞.基于單片機(jī)的LED漢字顯示屏的設(shè)計(jì)與Proteus仿真

        [J].電子技術(shù),2009(2):19-22.

        [9] Joshua Bloch.Effective Java[M].2版.楊春花,俞黎敏,譯.北京:機(jī)械工業(yè)出版社,2009.

        [10] 譚浩強(qiáng).C程序設(shè)計(jì)[M].4版.北京:清華大學(xué)出版社,2010:142-165.

        [11] 翟震,張春玲.用74HC595芯片驅(qū)動LED的電路設(shè)計(jì)[J].機(jī)床與液壓,2004,151(12):151-152.

        鄧高旭、王一鳴(在讀研究生),研究方向?yàn)榍度胧綉?yīng)用與研究;鄧琛(教授),研究方向?yàn)閿?shù)字信號處理與智慧交通等。

        (責(zé)任編輯:薛士然 收稿日期:2016-07-04)

        Light Wireless Image Transmission System Design Based on Mjpg-streamer

        Tang Wenying,Zhang Haifeng

        (College of Eletronic Information,Hangzhou Dianzi University,Hangzhou 310018,China)

        In the paper,the light wireless image transmission system based on Mjpg-streamer and S3C6410 is proposed,and a fast YUV2RGB conversion algorithm is designed.The Mjpg-streamer source is transplanted into the embedded system after modifying and cross-compiling,then the functions of video capture and transmission are realized.The Android client is used to display the video images.The experiment results show that the system can be easily used in unmanned aerial vehicle image transmission or wireless video monitoring scheme,and can display the video image smoothly in the Android terminal.

        Mjpg-streamer;S3C6410;YUV2RGB;wireless transmission;mobile terminal

        TP311.1

        A

        ?士然

        2016-07-14)

        猜你喜歡
        圖傳線程攝像頭
        浙江首試公路非現(xiàn)場執(zhí)法新型攝像頭
        攝像頭連接器可提供360°視角圖像
        一種無線可視化有害氣體探測儀的設(shè)計(jì)
        科技視界(2019年19期)2019-08-29 02:58:06
        DJI Goggles Racing Edition FPV眼鏡
        航空模型(2017年12期)2018-05-08 11:00:48
        淺談linux多線程協(xié)作
        Arkbird天線追蹤模塊
        航空模型(2016年5期)2016-07-25 08:59:26
        奔馳360°攝像頭系統(tǒng)介紹
        《材料圖傳》
        --關(guān)于材料發(fā)展史的對話
        Linux線程實(shí)現(xiàn)技術(shù)研究
        么移動中間件線程池并發(fā)機(jī)制優(yōu)化改進(jìn)
        欧美日韩国产在线观看免费| 欧美白人战黑吊| 中文字幕在线日亚洲9| 人妻少妇看a偷人无码精品| 一区二区免费电影| 国产成人亚洲综合二区| 变态调教一区二区三区女同| 亚洲精品成人网线在线播放va| 国产精品情侣呻吟对白视频| 天堂aⅴ无码一区二区三区 | 漂亮人妻被中出中文字幕久久| 中文字幕精品亚洲人成| 亚洲妇女av一区二区| 亚洲女同恋中文一区二区| 最新日本女优中文字幕视频| 色天使久久综合网天天| 久久精品国产亚洲av香蕉| 亚洲aⅴ无码成人网站国产app| 欧美色五月| 国产大学生自拍三级视频| 国产一区高清在线观看| 日本丰满熟妇hd| 亚洲黄色在线看| 日本精品一区二区在线看| 日韩精品视频高清在线| 丝袜人妻一区二区三区| 极品夫妻一区二区三区 | 在线看高清中文字幕一区| 欧洲美女熟乱av| 日本三级欧美三级人妇视频| 国产成人啪精品视频免费网| 精品熟女视频一区二区三区国产| 国产亚av手机在线观看| 亚洲av成本人无码网站| 亚洲av精品一区二区三| 97人妻精品一区二区三区男同| 免费人成在线观看视频播放| 久久亚洲日本免费高清一区| 麻豆视频av在线观看| 18精品久久久无码午夜福利| 人妻无码αv中文字幕久久琪琪布 美女视频黄的全免费视频网站 |