鷹眼視圖——《圖樣,too simple》系列之二

      網友投稿 1049 2022-05-29

      引言:最近為FPGA驗證做圖片生成器,檢索了多種圖片格式的介紹文檔,這里做一個總結,希望對剛接觸數字圖像處理的新同事有所幫助。本系列分三部分,介紹工作中常見的YUV、RAW等各種圖片格式,不求艱深晦澀,但求簡潔明了。

      本文是第二部分:YUV?什么鬼?à so easy!

      1????? YUV簡介

      與RGB類似,YUV也是3個分量的組合,其中Y表示明亮度,也就是灰度值;U和V表示色彩(色度)。YUV等同于YCbCr,其中Cb是Component blue的縮寫,即藍色分量,表示輸入信號藍色部分與亮度值之間的差異,Cr是Component red的縮寫,即紅色分量,表示輸入信號紅色部分與亮度值之間的差異。

      可見YUV實現了亮度信號Y與色度信號U/V的分離,可以獨立存儲和傳輸,另外可以根據人眼特性進行壓縮采樣(下采樣),從而顯著降低圖像存儲容量及傳輸帶寬。

      研究表明,人眼對亮度的敏感超過色度,色度信息減少一點,人眼幾乎難以察覺。基于此,人們保留了每個像素點的亮度Y信息,對UV信息進行隔行或隔列采樣(多像素共享一個U分量和V分量);按照不同的采樣率,衍生出YUV4:4:4、YUV4:2:2和YUV4:2:0三種常見格式。

      2????? YUV444

      YUV444格式是YUV4:4:4的簡寫,表示Y:U:V=4:4:4,即沒有壓縮采樣,每一個像素的YUV三分量都得到保留。

      3????? YUV422

      YUV422格式是YUV4:2:2的簡寫,表示Y:U:V=4:2:2,從字面上看,即相鄰的4個像素點除了保留4個Y分量,另外只保留2個U分量和2個V分量。實際表現在整幅圖像上,就是每行像素中,隔列丟棄一組UV信息,下圖中黑點表示像素點的Y分量,空心圓表示采用該像素點的UV分量:

      按照YUV分量存儲順序不同,又分為YUYV、UYVY和YUV422P三種格式:

      3.1????? YUYV

      為了一目了然,以2行x4列像素點為例,以下為采樣壓縮前的數據,下標為像素點序號:

      上圖中兩個相鄰的像素組成一個宏像素(Macro-Pixel),如紅框所示為第一個宏像素。第一個宏像素經4:2:2采樣壓縮后,只保留Y0、Y1、U0和V0,如果存儲順序為Y0U0Y1V0,這種存儲格式就是YUYV(有的文檔也稱YUY2)。依此類推,上述8個像素采樣后的數據排列如下:

      相應的存儲順序為:Y0U0Y1V0 ?Y2U2Y3V2 ?Y4U4Y5V4 ?Y6U6Y7V6

      進而可以擴展到1024*768分辨率及更大尺寸的YUYV圖片。

      3.2????? UYVY

      與YUYV類似,只是每個宏像素內部YUV分量存儲的順序不同,按照UYVY的順序存儲,就叫UYVY格式(顧名思義)。

      同樣以上述2行x4列像素點為例,則采樣后的數據排列如下

      相應的存儲順序為:U0Y0V0Y1 ?U2Y2V2Y3 ?U4Y4V4Y5 ?U6Y6V6Y7

      進而可以擴展到1024*768分辨率及更大尺寸的UYVY圖片。

      3.3????? YUV422P

      上述兩種格式都是packed存儲方式,即每個宏像素點的YUV分量都是打包起來逐個包進行存儲。YUV422P格式與此不同,這里的P是planar的縮寫,即平面存儲方式,分Y/U/V三個平面分別存儲:先連續存儲所有像素點的Y,緊接著存儲所有像素點的U,最后是所有像素點的V。

      鷹眼視圖——《圖樣,too simple》系列之二

      同樣以上述2行x4列像素點為例,采樣后的數據存儲順序為:

      Y0Y1Y2Y3Y4Y5Y6Y7? U0U2U4U6? V0V2V4V6

      進而可以擴展到1024*768分辨率及更大尺寸的YUV422P圖片。

      4????? YUV420

      YUV420格式是YUV4:2:0的簡寫,但并不表示整幅圖像中Y:U:V的采樣率為4:2:0,即并不表示丟棄了所有V分量。而是表示在某一行中丟棄所有V分量,此行內Y:U:V=4:2:0,但在緊鄰的下一行中保留一半V分量,丟棄所有U分量,此行內Y:U:V=4:0:2。從整幅圖上看,所有Y分量被保留,每個2x2小窗口構成一個宏像素(Macro-Pixel),共享一個UV分量,如下圖所示,黑色實心圓代表Y,空心圓代表UV:

      按照YUV分量存儲順序不同,又分為I420、YV12、NV12、NV21四種格式:

      4.1????? I420

      I420屬于420P中的一種,即平面存儲方式:Y、U、V三分量分開獨立存儲。先存儲所有Y,然后U,最后是V。同樣以上述2行x4列像素點矩陣為例:

      采樣后I420格式圖片數據的存儲順序為:

      Y0Y1Y2Y3Y4Y5Y6Y7? U0U2? V4V6

      進而可以擴展到1024*768分辨率及更大尺寸的I420圖片。

      4.2????? YV12

      YV12也屬于420P中的一種,即平面存儲方式:Y、U、V三分量分開獨立存儲。但UV分量存儲順序調換,先存儲所有Y,然后V,最后是U。同樣以上述2行x4列像素點矩陣為例:

      采樣后YV21格式圖片數據的存儲順序為:

      Y0Y1Y2Y3Y4Y5Y6Y7? V4V6? ??U0U2

      進而可以擴展到1024*768分辨率及更大尺寸的YV12圖片。

      4.3????? NV12

      NV12屬于YUV420sp中的一種,這里的sp是semi-planar的縮寫,即半平面存儲方式:不再是3個平面,而是兩個平面——Y平面和UV平面,分別獨立存儲Y分量和UV分量。先存儲所有Y,然后UV平面中UV交錯存儲。同樣以上述2行x4列像素點矩陣為例:

      采樣后NV12格式圖片數據的存儲順序為:

      Y0Y1Y2Y3Y4Y5Y6Y7? U0V4U2V6

      進而可以擴展到1024*768分辨率及更大尺寸的NV12圖片。

      4.4????? NV21

      NV21也屬于YUV420sp中的一種,先存儲所有Y,然后UV平面中UV交錯存儲,與NV12不同的是UV平面中UV分量先后順序是顛倒的。同樣以上述2行x4列像素點矩陣為例:

      采樣后NV21格式圖片數據的存儲順序為:

      Y0Y1Y2Y3Y4Y5Y6Y7? V4U0V6U2

      進而可以擴展到1024*768分辨率及更大尺寸的NV21圖片。

      5????? Y8

      最后提一下最簡單的Y8格式,顧名思義,就是每個像素點只保存Y分量,每個Y分量用8個bit位表示,取值為0-255。這與我們上篇提到的單通道256階灰度圖非常類似,是YUV色彩空間中的灰度圖。

      另外澄清一下,檢索國外文獻的時候要注意,他們稱這種格式為Luma 8bits。

      OK,常用的YUV格式基本介紹完了,希望對大家有幫助。后面敬請關注《圖樣 too simple》系列之三:RAW10? 12? 14? bggr? 原來如此原始+土豪!

      其他

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Laravel 虛擬開發環境 Homestead
      下一篇:Linux文件共享服務之NFS
      相關文章
      亚洲国产成人久久99精品| 老汉色老汉首页a亚洲| 亚洲一区精品视频在线| 亚洲最大福利视频网站| 亚洲自偷自偷精品| 亚洲免费视频网站| 亚洲性天天干天天摸| 亚洲av无码一区二区乱子伦as| 亚洲熟妇丰满多毛XXXX| 亚洲午夜久久久久妓女影院 | 亚洲线精品一区二区三区| 久久久久亚洲AV成人网| 亚洲无码视频在线| 丁香五月亚洲综合深深爱| 伊人婷婷综合缴情亚洲五月| 中文字幕亚洲一区二区va在线| 亚洲综合精品网站| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲av片一区二区三区| 男人的天堂亚洲一区二区三区 | 亚洲Av高清一区二区三区| 亚洲制服丝袜一区二区三区| 自拍日韩亚洲一区在线| 亚洲色精品VR一区区三区| 亚洲国产成人手机在线观看| 色偷偷亚洲男人天堂| 亚洲欧洲日产国码一级毛片| 国产亚洲成归v人片在线观看| 亚洲中文字幕无码一区二区三区 | 亚洲精品国精品久久99热一| 亚洲AV永久精品爱情岛论坛| 亚洲一区二区三区电影| 亚洲成aⅴ人在线观看| 亚洲一区二区三区国产精品无码| 亚洲AV男人的天堂在线观看| 亚洲av综合av一区二区三区| 亚洲人成色7777在线观看不卡| 亚洲日韩中文字幕在线播放| 亚洲人成在线影院| 亚洲国产成人精品无码区在线秒播 | 亚洲精品网站在线观看不卡无广告|