<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    像素格式

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    像素格式

    像素格式(pixel format)像素色彩按分量的大小和排列。這種格式以每個像素所使用的總位數以及用于存儲像素色彩的紅、綠、藍和 alpha 分量的位數指定。

    目錄 [hide]

    像素格式

    像素格式描述了像素數據存儲所用的格式。定義了像素在內存中的編碼方式。下面的像素格式 (PF_*) 類型定義了:
    本地格式 (PF_A8R8G8B8 以及其他大量的不同的類型)
    這意味著在內存中使用了本地儲存方式(big endian或者little endian,包括16,24,32位)的整形數據。同時意味著可以把PF_A8R8G8B8格式的圖片看作一個32位的整形數組,在16進制表現為0xAARRGGBB。這些字母的意義我們在稍后會提供。
    位組格式Byte formats(PF_BYTE_*)
    在這種格式下每個通道對應一個byte,通道在內存理的組織方式和格式名稱定義的相同。例如PF_BYTE_RGBA格式的像素包含了四個byte,一個對應紅色,一個綠色,一個藍色,以及一個alpha通道。
    Short格式(PF_SHORT_*)
    在這種格式下每個通道對應一個unsigned short數據(16 bit整型),通道在內存里的組織方式和格式名稱定義的相同。例如PF_BYTE_RGBA格式的像素包含了四個unsigned short數據,一個對應紅色,一個綠色,一個藍色,以及一個alpha通道。
    Float16 格式(PF_FLOAT16_*)
    在這種格式下每個通道對應一個16 bit浮點數,通道在內存理的組織方式和格式名稱定義的相同。例如PF_BYTE_RGBA格式的像素包含了四個16 bit浮點數數據,一個對應紅色,一個綠色,一個藍色,以及一個alpha通道。16 bit浮點數也被稱為半浮點(half float),非常類似于IEEE 對32bit單精度浮點數標準,只不過它只有5個exponent位和10個mantissa位而已。值得注意,這并不是一個標準的C++數據,CPU對其支持也不夠好,不過GPU卻能如同處理32bit浮點數一樣高效的處理它。
    Float32格式(PF_FLOAT32_*)
    在這種格式下每個通道對應一個32 bit浮點數,通道在內存理的組織方式和格式名稱定義的相同。例如PF_BYTE_RGBA格式的像素包含了四個32 bit浮點數數據,一個對應紅色,一個綠色,一個藍色,以及一個alpha通道。在C++中,這個數據就是普通的float。just “float”。
    壓縮格式formats (PF_DXT[1-5])
    S3TC壓縮紋理格式。

    顏色通道

    顏色通道中R,G,B,A,L 以及 X 的意義是:
    R
    紅色成分,通常范圍從0.0(沒有紅色)到1.0(全部的紅色)。
    G
    綠色成分,通常范圍從0.0(沒有綠色)到1.0(全部的綠色)。
    B
    藍色成分,通常范圍從0.0(沒有藍色)到1.0(全部的藍色)。
    A
    alpha(不透明度)成分,通常范圍從0.0(完全透明)到1.0(不透明)。
    L
    亮度成分,通常范圍從0.0(黑暗)到1.0(全白)。最終這個成分會被分散到RGB每個中完成最終的圖像效果。
    X
    這個是被系統忽略的成分。
    對于RGBL通道來說,默認的情況下設置為0。而Alpha通道卻不同,在默認的情況下被設定為1,代表不透明。

    全部格式

    位組格式
    PF_BYTE_RGB, PF_BYTE_BGR, PF_BYTE_BGRA, PF_BYTE_RGBA, PF_BYTE_L, PF_BYTE_LA, PF_BYTE_A
    Short格式
    PF_SHORT_RGBA
    Float16 格式
    PF_FLOAT16_R, PF_FLOAT16_RGB, PF_FLOAT16_RGBA
    Float32 格式
    PF_FLOAT32_R, PF_FLOAT32_RGB, PF_FLOAT32_RGBA
    bit 本地格式
    PF_L8, PF_A8, PF_A4L4, PF_R3G3B2
    bit 本地格式
    PF_L16, PF_R5G6B5, PF_B5G6R5, PF_A4R4G4B4, PF_A1R5G5B5
    bit 本地格式
    PF_R8G8B8, PF_B8G8R8
    bit 本地格式
    PF_A8R8G8B8, PF_A8B8G8R8, PF_B8G8R8A8, PF_R8G8B8A8, PF_X8R8G8B8, PF_X8B8G8R8, PF_A2R10G10B10 PF_A2B10G10R10
    壓縮格式
    PF_DXT1, PF_DXT2, PF_DXT3, PF_DXT4, PF_DXT5

    格式筆記

    NUKE:
    nuke的圖像數據保存在channel中,我們只需要用到其中的r,g,b三個channel。這三個channel是相互獨立的,可以分別從中讀取數據,每一次可以讀取圖像的一行像素。這樣看來,最合理的線性存儲方式就是每個channel的數據作為一組來保存,即:RRRR…RRRRGGGG…GGGGBBBB…BBBB的形似。
    FFMPEG:
    ffmpeg支持的編碼比較多,如果按照像素格式來分,主要有兩類,一類是是RGB,另一類是YUV。對于影像類編碼,比如xvid/mpeg4之類,顏色模式只能是YUV,甚至僅僅支持yuv420p這一種。因為要考慮到與nuke相結合,這里只看rgb像素格式中的rgb24。rgb24的線性格式為:RRRR…RRRRGGGG…GGGGBBBB…BBBB,可以很方便的和nuke中的channel數據結合。
    ffmpeg提供了一個函數可以在各種像素格式之間轉換。yuv420p的Cr和Cb分量只有Y分量大小的一半,因此需要的空間只有rgb24的2/3。
    libquicktime:
    libquicktime中沒有與上面RGB24一致的原始rgb格式,有一種rgb888格式。其線性格式為:RGBRGBRGB…。libquicktime在保存幀的時候也要先將rgb轉換為yuv,不過這個過程是自動完成的。
    從rgb24到rgb888的轉換:
    pFrameBufferLinear[y*w*3+3*x] = pFrameRGB_r[Y*w+i]; //R
    pFrameBufferLinear[y*w*3+3*x+1] = pFrameRGB_g[Y*w+i]; //G
    pFrameBufferLinear[y*w*3+3*x+2] = pFrameRGB_b[Y*w+i]; //B

    WPF格式

    在WPF中,圖像的像素格式較之于GDI+中有不少變化。比如新增了CMYK印刷通道的支持,對灰度圖片的灰階支持也有長足的進步,在顏色空間方面,新增了scRGB顏色空間,使圖像的色彩處理能力有很大的提高。
    為了方便加深了解,我將它們按格式性質和色彩空間大致進行了分類。比如將Gray類的放在一起,將Index類的又放在一起….
    (1) BlackWhite:
    用于顯示黑白兩種色值的像素格式(非黑即白)。
    (2) Gray2:
    2BPP(Bits Per Pixel,位/像素)的灰色通道。允許四種灰階。
    (3) Gray4:
    4BPP的灰度通道,允許16種灰階值表示灰色。
    (4) Gray8:
    顯示8BPP的灰度通道,允許256種灰階值表示灰色。
    (5) Gray16:
    16BPP的灰色通道,最多允許65536種灰階值表示灰色。這種格式的Gamma是1.0。
    (6) Gray32Float:
    32BPP的灰度通道,允許超過40億灰階。此格式的Gamma值是1.0。
    (7) Indexed1:
    指定2種顏色作為調色板的像素格式。
    (8) Indexed2:
    指定4種顏色作為調色板的像素格式。
    (9) Indexed4:
    指定16種顏色作為調色板的像素格式。
    (10) Indexed8:
    指定256種顏色作為調色板的像素格式。
    (11) Bgr24:
    Bgr24像素格式是一種采用24BPP的sRGB格式。 每個顏色通道(藍色blue, 綠色green, 紅色red)各占8BPP(位/像素)。
    (12) Bgra32:
    Bgra32像素格式是一種32BPP的sRGB格式。每個顏色通道(藍色blue, 綠色green, 紅色red)各占8BPP(位/像素),與Bgr24不同的是,它還有用于表現不透明度的alpha通道(8BPP)。
    (13) Bgr101010:
    Bgr101010像素格式是一種采用32BPP(位/像素)的sRGB格式。每個顏色通道(藍色blue, 綠色green, 紅色red)各占10BPP(位/像素)。
    (14) Bgr32:
    Bgr32像素格式是一種采用32BPP(位/像素)的sRGB格式。與Bgr101010格式不同的是,它的每個顏色通道(藍色blue, 綠色green, 紅色red)各占8BPP(位/像素)。
    (15) Bgr555:
    Bgr555也是一種sRGB格式,它采用16BPP(位/像素). 它的每個顏色通道(藍色blue, 綠色green, 紅色red)各占5BPP(位/像素)。
    (16) Bgr565:
    Bgr565像素格式是一種16BPP(位/像素)的sRGB格式。它的每個顏色通道(藍色blue, 綠色green, 紅色red)分別占5BPP,6BPP,5BPP(位/像素)。
    (17) Pbgra32:
    采用32BPP的一種基于sRGB的像素格式。每個顏色通道(藍色blue, 綠色green, 紅色red,Alpha通道)各占8BPP(位/像素)。每種顏色通道是經過與Alpha值預處理之后的。
    (18) Prgba64:
    是一種基于sRGB格式,采用64BPP。每個顏色通道(藍色blue, 綠色green, 紅色red,Alpha通道)各占32BPP(位/像素)。每種顏色通道是經過與Alpha值預處理之后的。這種格式的Gamma是1.0。
    (19) Rgb24:
    是一種基于sRGB格式,采用24BPP。每個顏色通道(藍色blue, 綠色green, 紅色red)各占8BPP(位/像素)。
    (20) Rgb48:
    是一種基于sRGB格式,采用48BPP。每個顏色通道(藍色blue, 綠色green, 紅色red)各占16BPP(位/像素)。這種格式的Gamma是1.0。
    (21) Rgba64:
    是一種基于sRGB格式,采用64BPP。每個顏色通道(藍色blue, 綠色green, 紅色red,Alpha通道)各占16BPP(位/像素)。這種格式的Gamma是1.0。
    (22) Rgb128Float:
    是一種基于ScRGB格式,采用128BPP。每個顏色通道各占32BPP(位/像素)。這種格式的Gamma是1.0。
    (23) Rgba128Float:
    是一種基于ScRGB格式,采用128BPP。每個顏色通道(藍色blue, 綠色green, 紅色red,Alpha通道)各占32BPP(位/像素)。這種格式的Gamma是1.0。
    (24) Prgba128Float:
    是一種基于ScRGB格式,采用128BPP。每個顏色通道(藍色blue, 綠色green, 紅色red,Alpha通道)各占32BPP(位/像素)。每種顏色通道是經過與Alpha值預處理之后的。這種格式的Gamma是1.0。
    (25) Cmyk32:
    用于表現印刷色格式,采用32BPP,共四個顏色通道即C、M、Y、K(青色Cyan, 品紅Magenta, 黃色Yellow和黑色blacK),各占8PP。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全