10 12 14bit图像存储格式

目前大多数图像和视频是采用每个像素8bit的方式存储,恰好是一个字节的长度。随着图像和视频向超高清方向发展,8bit已经不能满足对画质和色彩的需求。已经出现了每个像素用10bit、12bit、14bit的应用,由于它们无法用1个字节表示,如果使用2个字节又会浪费空间,所有需要将每个像素拆分表示。

一般将每像素10bit的RGB和YUV图像分别表示为PRGB10和PYUV10,每像素12bit的RGB和YUV图像分别表示为PRGB12和PYUV12,每像素10bit的RGB和YUV图像分别表示为PRGB14和PYUV14。下面分别介绍其在内存中的存储方式。

PRGB10和PYUV10

对于10bit的图像,要将连续的4个像素(按从左到右从上到下的顺序)用5个字节表示。图像的像素数需要是4的整数倍。

其在内存中的存储方式如图:

 

第1个像素:低8位为第1个字节,高2位在第2个字节的低2位。

第2个像素:低6位为第2个字节高6位,高4位在第3个字节的低4位。

第3个像素:低4位为第3个字节高4位,高6位在第4个字节的低6位。

第4个像素:低2位为第4个字节高2位,高8位在第5个字节。

 

从内存中读出像素的方式如上式所示。

PRGB12和PYUV12

对于12bit的图像,要将连续的2个像素(按从左到右从上到下的顺序)用3个字节表示。图像的像素数需要是2的整数倍。

其在内存中的存储方式如图:

 

第1个像素:低8位为第1个字节,高4位在第2个字节的低4位。

第2个像素:低4位为第2个字节高4位,高8位在第3个字节。

从内存中读出像素的方式如下式:

 

PRGB14和PYUV14

对于14bit的图像,要将连续的4个像素(按从左到右从上到下的顺序)用7个字节表示。图像的像素数需要是4的整数倍。

其在内存中的存储方式如图:

 

第1个像素:低8位为第1个字节,高6位在第2个字节的低6位。

第2个像素:低2位为第2个字节高2位,第3-10位在第3字节,高4位在第4个字节的低4位。

第3个像素:低4位为第4个字节高4位,第3-10位在第5字节,高2位在第6个字节的低2位。

第4个像素:低6位为第6个字节高6位,高8位在第7个字节。

从内存中读出像素的方式如下式:

 

以上便是10bit、12bit、14bit图像在内存中的存储格式和读取方法。

感兴趣的可以关注微信公众号Video Coding

 

 

要正确显示10-bit色深的图像,需要从硬件、软件以及图像格式等多个方面进行支持和配置。以下是具体的方法和技术要点: ### 1. 硬件支持 为了正确显示10-bit图像,显示器必须支持10-bit色彩深度。目前许多专业级和高端消费级显示器都具备这一功能,尤其是在Adobe RGB或DCI-P3色域覆盖广泛的设备中[^1]。此外,显卡也应支持输出10-bit信号,现代GPU(如NVIDIA和AMD的主流产品)通常能够通过DisplayPort接口传输10-bit色彩数据。 如果使用HDMI连接,请确认版本是否为2.0或更高,因为早期版本的HDMI仅支持8-bit色彩输出[^1]。 ### 2. 操作系统与驱动程序 - **Windows**:确保操作系统为最新版本,并启用“高色深”模式。在NVIDIA控制面板或AMD Radeon设置中,可以手动选择输出10-bit色彩。 - **macOS**:大多数Apple设备默认支持10-bit色彩输出,但需确认显示器是否兼容。 - **Linux**:通过Xorg或Wayland配置启用10-bit色彩输出,可能需要手动编辑配置文件以激活相关功能。 显卡驱动程序也需要更新至最新版本,以确保对10-bit色彩的支持稳定可靠。 ### 3. 图像查看软件 并非所有图像查看器都能处理10-bit图像。以下是一些支持10-bit色彩的专业软件: - **Adobe Photoshop**:支持读取并显示10-bit图像,前提是系统硬件支持。 - **dcraw** 或 **RawTherapee**:用于处理RAW图像时,可保留10-bit及以上色彩深度。 - **XnView MP** 和 **FastStone Image Viewer**(需确认版本):某些版本支持高级色彩显示功能。 - **专业HDR视频播放器**:如DaVinci Resolve、HDR10兼容播放器等,也能很好地呈现10-bit图像效果。 ### 4. 图像格式与编码 10-bit图像通常存储于支持高位深的格式中,例如: - **PNG**(支持16位/通道) - **TIFF**(支持16位/通道) - **OpenEXR** - **JPEG XT**(扩展JPEG标准,支持10/12位) 确保图像未被压缩为8-bit格式(如标准JPEG),否则将丢失高位深信息。 ### 示例代码:使用Python检查图像位深 ```python from PIL import Image # 打开图像 img = Image.open('example.tiff') # 获取图像模式,例如 'I;16' 表示16位灰度图像 print(f"Image mode: {img.mode}") # 获取每个像素的位数 bit_depth = int(img.mode.replace('L', '').replace('I;', '').replace('F', '')) if 'I;' in img.mode else 8 print(f"Bit depth per channel: {bit_depth}") ``` ### 5. 校准与环境设置 即使硬件和软件均支持10-bit色彩,仍需进行色彩校准以确保准确显示。使用专业的色彩校准仪(如Datacolor Spyder或X-Rite i1)可以帮助优化显示效果。此外,在强光环境下,低对比度的10-bit图像细节可能难以分辨,因此建议在可控光照条件下使用高对比度显示器。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值