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

基于Mjpg-streamer的輕量級無線圖傳系統設計

2017-02-09 03:12:20唐文瑩張海峰
單片機與嵌入式系統應用 2017年1期
關鍵詞:設計

唐文瑩,張海峰

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

?

基于Mjpg-streamer的輕量級無線圖傳系統設計

唐文瑩,張海峰

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

提出了基于開源視頻處理軟件Mjpg-streamerh和嵌入式處理器S3C6410的無線圖傳系統,并設計了一種快速YUV2RGB轉換算法;通過修改Mjpg-streamer源碼并交叉編譯后移植到嵌入式設備中,實現了視頻圖像采集和傳輸的功能,并設計了用于顯示圖傳畫面的安卓客戶端。實驗結果表明,該系統可以很方便地用于無人機圖傳或無線視頻監控方案,并可以在安卓手機端流暢地播放視頻畫面。

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

引 言

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

1 系統設計與組成

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

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

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

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

④ 安卓客戶端,用于連接到服務器以及瀏覽視頻圖像。系統設計如圖1所示。

圖1 無線圖傳系統結構

2 Mjpg-streamer源碼分析

2.1 V4L2視頻采集流程

圖2 V4L2視頻采集操作流程

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

2.2 Mjpg-streamer軟件架構

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

2.3 相關組件

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

2.3.1 input_uvc輸入組件

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

圖3 Mjpg-streamer的軟件架構

圖4 抓圖線程cam_thread執行流程

2.3.2 output_http輸出組件

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

表1 客戶端請求類型

3 YUV2RGB快速轉換算法設計

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

RGB與YUV轉換方程如下:

式中,Y表示亮度值,Cr為紅色的色度值,Cb為藍色的色度值。

經矩陣運算的轉換公式如下:

3.1 整型算法

由于YUV2RGB的轉換會涉及到浮點運算,為了進行快速轉換,可以通過移位將浮點運算變為整型運算[3]。算法設計如下:

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;

對計算結果進行判斷,防止溢出:

if (r>255) r=255;

if (r<0) r=0;

從RGB24格式到RGB565格式的轉換如下:

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

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

3.2 部分查表法

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

算法改進如下:

rdif = fac_1_4075[u];

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

bdif = fac_1_779[u];

3.3 完全查表法

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

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

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

最終設計的優化YUV2RGB快速轉換算法如下:

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客戶端設計及系統測試

4.1 Android客戶端設計

針對Mjpg-streamer的數據發送模式,設計了Android客戶端MjpgClient,用于連接到視頻服務器并瀏覽視頻畫面。軟件架構如圖5所示。

圖5 客戶端軟件架構

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

圖6 MjpegClient執行流程

4.2 系統測試

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

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

② 編寫自啟動腳本,修改/etc/rc.local文件,實現Mjpg-streamer開機自啟動;

③ 打開手機熱點,設置開發板為固定IP并指定連接的熱點;

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

圖7 無線圖傳系統實測

實測數據如表2所列。

表2 無人機中圖傳系統測試環境與測試結果

結 語

[1] 劉登誠,沈蘇彬.嵌入式Linux設備驅動程序開發技術的研究[D].南京:南京郵電大學,2011:48-65.

[2] 周鵬飛,潘地林.基于MJPG-Streamer的移動視頻監控系統的設計與研究[D].淮南:安徽理工大學,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].微型機與應用,2002(7):59-60.

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

[7] 陳坤,蘇韓松.微型無人機圖像傳輸系統研究[D].天津:天津大學,2011:10-15.

[8] 肖征宇,鄭耀,宋廣華.無人機地面站軟件的設計與實現[D].杭州:浙江大學,2010:3-5.

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

唐文瑩(在讀碩士研究生),主要研究方向為嵌入式系統應用;張海峰(副教授),主要研究方向為智能儀器設備。

[3] 李娟.基于藍牙技術的無線數據包采集系統的設計[J].微計算機信息,2008(24):2.

[4] 趙霄.基于單片機的藍牙接口設計及數據傳輸的實現[D].北京:北京交通大學,2008.

[5] 楊戰社.基于藍牙技術的數據傳輸[D].西安:西安科技大學,2005.

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

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

[8] 唐霞.基于單片機的LED漢字顯示屏的設計與Proteus仿真

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

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

[10] 譚浩強.C程序設計[M].4版.北京:清華大學出版社,2010:142-165.

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

鄧高旭、王一鳴(在讀研究生),研究方向為嵌入式應用與研究;鄧琛(教授),研究方向為數字信號處理與智慧交通等。

(責任編輯:薛士然 收稿日期: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)

猜你喜歡
設計
二十四節氣在平面廣告設計中的應用
河北畫報(2020年8期)2020-10-27 02:54:06
何為設計的守護之道?
現代裝飾(2020年7期)2020-07-27 01:27:42
《豐收的喜悅展示設計》
流行色(2020年1期)2020-04-28 11:16:38
基于PWM的伺服控制系統設計
電子制作(2019年19期)2019-11-23 08:41:36
基于89C52的32只三色LED搖搖棒設計
電子制作(2019年15期)2019-08-27 01:11:50
基于ICL8038的波形發生器仿真設計
電子制作(2019年7期)2019-04-25 13:18:16
瞞天過海——仿生設計萌到家
藝術啟蒙(2018年7期)2018-08-23 09:14:18
設計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
從平面設計到“設計健康”
商周刊(2017年26期)2017-04-25 08:13:04
主站蜘蛛池模板: 亚洲第一黄片大全| 欧美三级视频网站| h网站在线播放| 免费av一区二区三区在线| 亚洲男人天堂2018| 超碰91免费人妻| 欧美在线视频a| 亚洲欧美自拍中文| 无遮挡国产高潮视频免费观看| 亚洲天堂久久久| 亚洲九九视频| 第九色区aⅴ天堂久久香| 精品成人一区二区三区电影| 日韩精品欧美国产在线| 噜噜噜久久| 国产欧美日韩va另类在线播放| 国产第三区| 99激情网| www.狠狠| 久996视频精品免费观看| 中文字幕亚洲另类天堂| 五月丁香伊人啪啪手机免费观看| 国产亚洲一区二区三区在线| 露脸真实国语乱在线观看| www.日韩三级| 99成人在线观看| 欧美人人干| 国产一区二区三区夜色| 日韩一区精品视频一区二区| 九九热精品在线视频| 青青久视频| 台湾AV国片精品女同性| 国产日韩精品欧美一区灰| 日韩在线2020专区| 中文字幕无码av专区久久| 亚洲天堂视频在线播放| 婷婷六月天激情| 91色在线观看| 国产国语一级毛片在线视频| 不卡午夜视频| 伊人久久久大香线蕉综合直播| 国产网站免费看| 国产成人精品在线1区| 国产精品性| 高清无码一本到东京热| 国产爽爽视频| 毛片手机在线看| 狠狠色噜噜狠狠狠狠色综合久 | 亚洲视频四区| 老司国产精品视频91| 色网站免费在线观看| 国产美女免费| 国产亚洲欧美在线视频| 欧美综合区自拍亚洲综合绿色| 日韩福利在线视频| 久久精品这里只有精99品| 欧美三级不卡在线观看视频| 国产精品专区第一页在线观看| 中文无码日韩精品| 黄色一级视频欧美| 亚欧美国产综合| 自拍欧美亚洲| 伊人中文网| 台湾AV国片精品女同性| 日韩欧美中文亚洲高清在线| 麻豆国产在线不卡一区二区| 国产在线视频福利资源站| 国产成人亚洲欧美激情| 久久这里只有精品免费| 都市激情亚洲综合久久| 精品久久久无码专区中文字幕| 美女国产在线| 亚洲a级毛片| 久久国产精品嫖妓| 国产青榴视频在线观看网站| 亚洲女同欧美在线| 99资源在线| 在线亚洲天堂| 国产在线第二页| h视频在线播放| 亚洲精品第一在线观看视频| 九九九久久国产精品|