演算法原理視頻
Ⅰ 攝像頭視頻採集壓縮及傳輸 基本原理
攝像頭視頻採集壓縮及傳輸
引言 :
攝像頭基本的功能還是視頻傳輸,那麼它是依靠怎樣的原理來實現的呢?所謂視頻傳輸:
就是將圖片一張張傳到屏幕,由於傳輸速度很快,所以可以讓大家看到連續動態的畫面,就像放電影一樣。一般當畫面的傳輸數量達到 每秒24幀 時,畫面就有了連續性。
下邊我們將介紹攝像頭視頻採集壓縮及傳輸的整個過程。
一.攝像頭的工作原理(獲取視頻數據)
攝像頭的工作原理大致為:景物通過 鏡頭(LENS) 生成的 光學圖像 投射到 圖像感測器 表面上,然後轉為 電信號 ,經過 A/D (模數轉換)轉換後變為 數字圖像信號 ,再送到 數字信號處理晶元 (DSP)中加工處理,再通過 USB介面 傳輸到電腦中處理,通過顯示器就可以看到圖像了。下圖是攝像頭工作的流程圖:
注1:圖像感測器(SENSOR)是一種半導體晶元,其表麵包含有幾十萬到幾百萬的光電二極體。光電二極體受到光照射時,就會產生電荷。
注2:數字信號處理晶元DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通過一系列復雜的數學演算法運算,對數字圖像信號參數進行優化處理,並把處理後的信號通過USB等介面傳到PC等設備。
1. ISP(image signal processor)(鏡像信號處理器)
2. JPEG encoder(JPEG圖像解碼器)
3. USB device controller(USB設備控制器)
而視頻要求將獲取的視頻圖像通過互聯網傳送到異地的電腦上顯示出來這其中就涉及到對於獲得的視頻圖像的傳輸。
在進行這種圖片的傳輸時,必須將圖片進行壓縮,一般壓縮方式有如H.261、JPEG、MPEG等,否則傳輸所需的帶寬會變得很大。大家用RealPlayer不知是否留意,當播放電影的時候,在播放器的下方會有一個傳輸速度250kbps、400kbps、1000kbps…畫面的質量越高,這個速度也就越大。而攝像頭進行視頻傳輸也是這個原理,如果將攝像頭的解析度調到640×480,捕捉到的圖片每張 大小約為50kb左右,每秒30幀,那麼攝像頭傳輸視頻所需的速度為50×30/s=1500kbps=1.5Mbps。而在實際生活中,人們一般用於網路視頻聊天時的解析度為320×240甚至更低,傳輸的幀數為每秒24幀。換言之,此時視頻傳輸速率將不到300kbps,人們就可以進行較為流暢的視頻傳輸聊天。如果採用更高的壓縮視頻方式,如MPEG-1等等,可以將傳輸速率降低到200kbps不到。這個就是一般視頻聊天時,攝像頭所需的網路傳輸速度。
二.視頻壓縮部分
視頻的壓縮 是視頻處理的核心,按照是否實時性可以分為非實時壓縮和實時壓縮。而視頻傳輸(如QQ視頻即時聊天)屬於要求視頻壓縮為實時壓縮。
下面對於視頻為什麼能壓縮進行說明。
視頻壓縮是有損壓縮,一般說來,視頻壓縮的壓縮率都很高,能夠做到這么高的壓縮率是因為視頻圖像有著非常大的 時間和空間的冗餘度 。所謂的 時間冗餘度 指的是兩幀相鄰的圖像他們相同位置的像素值比較類似,具有很大的相關性,尤其是靜止圖像,甚至兩幀圖像完全相同,對運動圖像,通過某種運算(運動估計),應該說他們也具有很高的相關性;而空間相關性指的是同一幀圖像,相鄰的兩個像素也具備一定的相關性。這些相關性是視頻壓縮演算法的初始假設,換句話說,如果不滿足這兩個條件(全白雜訊圖像,場景頻繁切換圖像等),視頻壓縮的效果是會很差的。
去除時間相關性的關鍵演算法是運動估計,它找出當前圖像宏塊在上一幀圖像中最匹配的位置,很多時候,我們只需要把這個相對坐標記錄下來,就夠了,這樣就節省了大量碼字,提高了壓縮率。視頻壓縮演算法中,運動估計永遠是最關鍵最核心的部分。去除空間相關性是通過DCT變換來實現的,把時域上的數據映射到頻域上,然後對DCT系數進行量化處理,基本上,所有的有損壓縮,都會有量化,它提高壓縮率最明顯。
圖像的原始文件是比較大的,必須經過圖像壓縮才能夠進行快速的傳輸以及順暢的播放。而壓縮比正是來衡量影像壓縮大小的參數。 一般來說,攝像頭的壓縮比率大都是5:1。也就是說,如果在未壓縮之前30秒的圖像的容量是30MB,那麼按照攝像頭5:1的壓縮比率來對圖像進行壓縮以後,它的大小就變成了6MB了。
主要的視頻壓縮演算法包括:M-JPEG、Mpeg、H.264、Wavelet(小波壓縮)、JPEG 2000、AVS。
基本上視頻壓縮的核心就這些。
三.視頻傳輸部分
為了保證數字視頻網路傳輸的實時性和圖像的質量,傳輸層協議的選擇是整個設計和實現的關鍵。Internet在IP層上使用兩種傳輸協議:一種是TCP(傳輸控制協議),它是面向連接的網路協議;另一種是UDP(用戶數據報協議),它是無連接的網路協議。
TCP 傳輸 :TCP(傳輸控制協議)是一種面向連接的網路傳輸協議。支持多數據流操作,提供流控和錯誤控制,乃至對亂序到達報文的重新排序,因此,TCP傳輸提供了可靠的數據傳輸服務。
使用TCP傳輸的一般的過程:
客戶機向伺服器發出連接的請求後,伺服器接收到後,向客戶機發出連接確認,實現連接後,雙方進行數據傳輸。
UDP 傳輸 : UDP(用戶數據報協議)是一種無連接的網路傳輸協議。提供一種基本的低延時的稱謂數據報的傳輸服務。不需要像TCP傳輸一樣需預先建立一條連接。UDP無計時機制、流控或擁塞管理機制。丟失的數據不會重傳。因此提供一種不可靠的的應用數據傳輸服務。但在一個良好的網路環境下如 區域網內,使用UDP傳輸數據還是比較可靠,且效率很高。
IP 組播技術: 組播技術是一種允許一個或多個發送者發送單一或多個發送者的數據包到多個接收者的網路技術。組播源把數據報發送到特定的組播組,而只有加入到該組播組的主機才能接收到這些數據包。組播可大大節省網路寬頻,因為無論有多少個目標地址,在整個網路的任何一條鏈路上只船送單一的數據包。
1.TCP/IP 協議和實時傳輸
TCP/IP協議最初是為提供非實時數據業務而設計的。IP協議負責主機之間的數據傳輸,不進行檢錯和糾錯。因此,經常發生數據丟失或失序現象。為保證數據的可靠傳輸,人們將TCP協議用於IP數據的傳輸,以提高接收端的檢錯和糾錯能力。當檢測到數據包丟失或錯誤時,就會要求發送端重新發送,這樣一來就不可避免地引起了傳輸延時和耗用網路的帶寬。因此傳統的TCP/IP協議傳輸實時音頻、視頻數據的能力較差。當然在傳輸用於回放的視頻和音頻數據時,TCP協議也是一種選擇。如果有足夠大的緩沖區、充足的網路帶寬,在TCP協議上,接近實時的視音頻傳輸也是可能的。然而,如果在丟包率較高、網路狀況不好的情況下,利用TCP協議進行視頻或音頻通信幾乎是不可能的。
TCP和其它可靠的傳輸層協議如XTP不適合實時視音頻傳輸的原因主要有以下幾個方面:
1 .TCP的重傳機制
我們知道,在TCP/IP協議中,當發送方發現數據丟失時,它將要求重傳丟失的數據包。然而這將需要一個甚至更多的周期(根據TCP/IP的快速重傳機制,這將需要三個額外的幀延遲),這種重傳對於實時性要求較高的視音頻數據通信來說幾乎是災難性的,因為接收方不得不等待重傳數據的到來,從而造成了延遲和斷點(音頻的不連續或視頻的凝固等等)。
2 . TCP的擁塞控制機制
TCP的擁塞控制機制在探測到有數據包丟失時,它就會減小它的擁塞窗口。而另一方面,音頻、視頻在特定的編碼方式下,產生的編碼數量(即碼率)是不可能突然改變的。正確的擁塞控制應該是變換音頻、視頻信息的編碼方式,調節視頻信息的幀頻或圖像幅面的大小等等。
3 . TCP報文頭的大小
TCP不適合於實時視音頻傳輸的另一個缺陷是,它的報文頭比UDP的報文頭大。TCP的報文頭為40個位元組,而UDP的報文頭僅為12個位元組。並且,這些可靠的傳輸層協議 不能提供時間戳(Time Stamp)和編解碼信息(Encoding Information) ,而這些信息恰恰是接收方(即客戶端)的應用程序所需要的。因此TCP是不適合於視音頻信息的實時傳輸的。
4 . 啟動速度慢
即便是在網路運行狀態良好、沒有丟包的情況下,由於TCP的啟動需要建立連接,因而在初始化的過程中,需要較長的時間,而在一個實時視音頻傳輸應用中,盡量少的延遲正是我們所期望的。
由此可見,TCP協議是不適合用來傳輸實時視音頻數據的,為了實現視音頻數據的實時傳輸,我們需要尋求其它的途徑。
2.RTP 協議適合實時視音頻傳輸
RTP(Real-Time Transport Protocol)/RTCP(Real-Time Transport Control Protocol)是一種應用型的傳輸層協議,它並不提供任何傳輸可靠性的保證和流量的擁塞控制機制。它是由IETF(Internet Engineering Task Force)為視音頻的實時傳輸而設計的傳輸協議。RTP協議位於UDP協議之上,在功能上獨立於下面的傳輸層(UDP)和網路層,但不能單獨作為一個層次存在,通常是利用低層的UDP協議對實時視音頻數據進行組播(Multicast)或單播(Unicast),從而實現多點或單點視音頻數據的傳輸。
UDP是一種無連接的數據報投遞服務,雖然沒有TCP那麼可靠,並且無法保證實時視音頻傳輸業務的服務質量(QoS),需要RTCP實時監控數據傳輸和服務質量,但是,由於UDP的傳輸延時低於TCP,能與音頻和視頻流很好地匹配。因此,在實際應用中,RTP/RTCP/UDP用於音視頻媒體,而TCP用於數據和控制信令的傳輸。
總結 :如果接收端和發送端處於同一個區域網內,由於有充分的帶寬保證,在滿足視頻傳輸的實時性方面,TCP也可以有比較好的表現,TCP和基於UDP的RTP的視頻傳輸性能相差不大。由於在區域網內帶寬不是主要矛盾,此時視頻數據傳輸所表現出來的延時主要體現為處理延時,它是由處理機的處理能力以及採用的處理機制所決定的 。但是當在廣域網中進行視頻數據傳輸時,此時的傳輸性能極大地取決於可用的帶寬,由於TCP是面向連接的傳輸層協議,它的重傳機制和擁塞控制機制,將使網路狀況進一步惡化,從而帶來災難性的延時。同時,在這種網路環境下,通過TCP傳輸的視頻數據,在接收端重建、回放時,斷點非常明顯,體現為明顯的斷斷續續,傳輸的實時性和傳輸質量都無法保障。相對而言,採用RTP傳輸的視頻數據的實時性和傳輸質量就要好得多。
四.視頻圖像的異地顯示
當壓縮過的視頻通過互聯網傳輸到異地的時候,對於互聯網傳輸過來的視頻信息,首先是要進行解碼,然後才是顯示。解碼的晶元有一定的性能要求,比編碼器低些,但是畢竟是視頻數據處理,通用的晶元(不支持MMX等多媒體指令)可能會比較吃力。顯示設備主要有電視、監視器和顯示器,他們的信號介面是不一樣的,電視監視器是模擬的電信號,顯示器的輸入應該是數字信號。
以上是攝像頭如何獲取圖像數據及獲取的數據存放在什麼地方,如何壓縮和傳輸及如何在異地釋放和播放出來的整個過程
Ⅱ 關於視頻壓縮的原理
視頻壓縮的原理是視頻圖像數據有很強的相關性,也就是說有大量的冗餘信息。其中冗餘信息可分為空域冗餘信息和時域冗餘信息。壓縮技術就是將數據中的冗餘信息去掉(去除數據之間的相關性),壓縮技術包含幀內圖像數據壓縮技術、幀間圖像數據壓縮技術和熵編碼壓縮技術。
(2)演算法原理視頻擴展閱讀:
視頻是連續的圖像序列,由連續的幀構成,一幀即為一幅圖像。由於人眼的視覺暫留效應,當幀序列以一定的速率播放時,我們看到的就是動作連續的視頻。由於連續的幀之間相似性極高,為便於儲存傳輸,我們需要對原始的視頻進行編碼壓縮,以去除空間、時間維度的冗餘。
視頻壓縮技術是計算機處理視頻的前提。視頻信號數字化後數據帶寬很高,通常在20MB/秒以上,因此計算機很難對之進行保存和處理。採用壓縮技術通常數據帶寬降到1-10MB/秒,這樣就可以將視頻信號保存在計算機中並作相應的處理。
Ⅲ 數據結構與演算法 徐鏡春的視頻教程,求高清版
浙江大學數據結構與演算法 全40講 主講-徐鏡春
鏈接: https://pan..com/s/1dRAH5KPof2ujIJxk3Q5UwQ?pwd=i8hi 提取碼: i8hi
浙江大學數據結構與演算法 全40講 主講-徐鏡春 網路網盤