隔行扫描 和 逐行扫描
隔行掃描
每一幀被分割為兩場,每一場包含了一幀中所有的奇數掃描行或者偶數掃描行,通常是先掃描奇數行得到第一場,然后掃描偶數行得到第二場。
無論是逐行掃描還是隔行掃描,都有視頻文件、傳輸和顯像三個概念,這三個概念相通但不相同。最早出現的是隔行掃描顯像,同時就配套產生了隔行傳輸。而隔行掃描視頻文件是到數字視頻時代才出現的,其目的是為了兼容原有的隔行掃描體系(隔行掃描還依然在廣泛應用)。
通常顯示器分“隔行掃描” 和 “逐行掃描”兩種掃描方式。逐行掃描相對于隔行掃描是一種先進的掃描方式,它是指顯示屏顯示圖像進行掃描時,從屏幕左上角的第一行開始逐行進行,整個圖像掃描一次完成。因此圖像顯示畫面閃爍小,顯示效果好。先進的顯示器大都采用逐行掃描方式。
隔行掃描情況下,由于視覺暫留效應,人眼將會看到平滑的運動而不是閃動的半幀半幀的圖像。但是這種方法造成了兩幅圖像顯示的時間間隔比較大,從而導致圖像畫面閃爍較大。 因此該種掃描方式較為落后,通常用在早期的顯示產品中。
掃描區別
每一幀圖像由電子束順序地一行接著一行連續掃描而成,這種掃描方式稱為逐行掃描。把每一幀圖像通過兩場掃描完成則是隔行掃描,兩場掃描中,第一場(奇數場)只掃描奇數行,依次掃描1、3、5…行,而第二場(偶數場)只掃描偶數行,依次掃描2、4、6…行。隔行掃描技術在傳送信號帶寬不夠的情況下起了很大作用,逐行掃描和隔行掃描的顯示效果主要區別在穩定性上面,隔行掃描的行間閃爍比較明顯,逐行掃描克服了隔行掃描的缺點,畫面平滑自然無閃爍。
在電視的標準顯示模式中,i表示隔行掃描,p表示逐行掃描。
說隔行顯示不如逐行,這又是為什么?這就要看這兩種模式在顯像時的具體過程。
我們有一部30p的視頻用作測試。假設有一臺高速攝影機,對著平板電視拍攝(CRT存在掃描過程,解釋起來稍微有些復雜,所以以平板電視為例)。接著我們用慢鏡頭重新觀看電視機的工作狀況,就會看到下列景象。
1080p(逐行) :每秒顯示30個畫面(實際上是60個場,由于第一個1/60秒和第二個1/60秒內顯示的畫面是一樣的,所以看不到區別)。
1080i(隔行): 每秒顯示60個場,我們用“第一場”、“第二場”、“第三場”等表示在第一個、第二個、第三個1/60秒內發生的事。
如圖:
第一場:顯示上場的畫面,下場還沒出來,所以是空的
第二場:下場顯示出來了,而上場依然存在,所以我們看到了一張完整的畫面。
第三場:上場刷新成第2幀的內容,而下場沒動
第四場:下場跟進刷新,于是我們就看到完整的第2幀了
第五場:上場變成了第3幀,而下場仍然還是第2幀中的內容
第六場:下場繼續跟進,我們又看到了完整的第3幀
……
可以看到1080p和1080i在顯示上根本的不同了。由于單位時間內總會有一半時間看到交錯的畫面,所1080i的顯示會略有模糊。
隔行掃描視頻編碼(interlaced-scan video coding)
隔行掃描圖像的每幀包括兩個場,所以對于隔行掃描圖像有三種編碼方式:
1、將兩場合并為一幀進行編碼;
2、將兩場分別編碼;
3、將兩場合 并為一幀,但是在宏塊級別上,將一個幀宏塊劃分為兩個場宏塊進行編碼。
前兩種編碼方式稱為圖像自適應幀/場編碼(Picture-adaptive frame-field, PicAFF or PAFF)
第三種稱為宏塊自適應幀/場編碼(Macroblock-adaptive frame-field, MBAFF)。
PAFF:對于一個運動圖像,由于場之間存在著較大的掃描間隔,所以幀中相鄰兩行之間的空間相關性相對于逐行掃描圖像較小,因此對兩個場分別編碼 會更節省碼流。對于一個非運動圖像,相鄰兩行之間存在較大的空間相關性,將兩場合并為一幀編碼更有效。所以PAFF編碼方式可以針對整個圖像的編碼方式做 自適應調整,選擇幀編碼或場編碼。
MBAFF:當圖像同時存在運動區域和非運動區域時,PAFF的劣勢便顯現出來,PAFF的自適應粒度太粗,無法實現滿足更加精細的編碼要求,于 是MBAFF應運而生。MBAFF對幀編碼或場編碼的選擇是基于宏塊的,MBAFF將兩場合并為一幀進行編碼,但將每一個幀宏塊(16x16)劃分為場宏 塊對(8x16),針對每一個幀宏塊,比較幀編碼和場編碼產生的碼流大小,使用最節省碼流的方式。
運動補償
一種描述相鄰幀(相鄰在這里表示在編碼關系上相鄰,在播放順序上兩幀未必相鄰)差別的方法,具體來說是描述前面一幀(相鄰在這里表示在編碼關系上的前面,在播放順序上未必在當前幀前面)的每個小塊怎樣移動到當前幀中的某個位置去。這種方法經常被視頻壓縮/視頻編解碼器用來減少視頻序列中的時域冗余。它也可以用來進行去交織(deinterlacing)以及運動插值(motion interpolation)的操作。
一個視頻序列包含一定數量的圖片--通常稱為幀(frame)。相鄰的圖片通常很相似,也就是說,包含了很多冗余。使用運動補償的目的是通過消除這種冗余,來提高壓縮比。
最早的運動補償的設計只是簡單的從當前幀中減去參考幀,從而得到通常含有較少能量(或者稱為信息)的"殘差",從而可以用較低的碼率進行編碼。解碼器可以通過簡單的加法完全恢復編碼幀。
一個稍微復雜一點的設計是估計一下整幀場景的移動和場景中物體的移動,并將這些運動通過一定的參數編碼到碼流中去。這樣預測幀上的像素值就是由參考 幀上具有一定位移的相應像素值而生成的。這樣的方法比簡單的相減可以獲得能量更小的殘差,從而獲得更好的壓縮比--當然,用來描述運動的參數不能在碼流中 占據太大的部分,否則就會抵消復雜的運動估計帶來的好處。
通常,圖像幀是一組一組進行處理的。每組的第一幀(通常是第一幀)在編碼的時候不使用運動估計的辦法,這種幀稱為幀內編碼幀(Intra frame)或者I幀。該組中的其它幀使用幀間編碼幀(Inter frame),通常是P幀。這種編碼方式通常被稱為IPPPP,表示編碼的時候第一幀是I幀,其它幀是P幀。
在進行預測的時候,不僅僅可以從過去的幀來預測當前幀,還可以使用未來的幀來預測當前幀。當然在編碼的時候,未來的幀必須比當前幀更早的編碼,也就是說,編碼的順序和播放的順序是不同的。通常這樣的當前幀是使用過去和未來的I幀或者P幀同時進行預測,被稱為雙向預測幀,即B幀。這種編碼方式的編碼順序的一個例子為IBBPBBPBBPBB。
總結
以上是生活随笔為你收集整理的隔行扫描 和 逐行扫描的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c linux 判断ip合法_shell
- 下一篇: js实现字符串切割并转换成对象格式保存到