ffmpeg(1)-图片相关知识
图片相关知识
- 1 图片格式
- 1.1 RGB(红、绿、蓝)
- 1.2 RGBA(红、绿、蓝、透明度)
- 1.3 CMYK(青、品红、黄、黑)
- 1.4 灰度(Grayscale)
- 1.5 二值图像(Binary/Bitmap)
- 1.6 YUV(亮度与色度分离)
- 1.7.索引颜色(Indexed Color)
- 1.8 高位深度格式
- 2 PSNR 的核心原理
- 2.1 信号与噪声的定义:
- 2.2 数学公式:
- 2.3 物理意义:
- 3 代码使用
- 3.1 源码
- 3.2 功能
1 图片格式
1.1 RGB(红、绿、蓝)
描述:通过红(R)、绿(G)、蓝(B)三个颜色通道组合表示颜色,是最常见的屏幕显示格式。
位数:通常每个通道占8位(0-255),共24位(如RGB24),可表示约1677万种颜色。
变体:
RGB565:16位格式(R占5位,G占6位,B占5位),用于低带宽场景。
RGB888:24位标准格式(每个通道8位)。
RGBX:类似RGB,但包含一个未使用的填充字节(例如32位存储中的空位)。
应用场景:显示器、摄像头、网页图像(如JPEG、PNG)。
常见格式:JPEG、BMP、PNG(支持RGB)。
排列方式:
rgb rgb rgb rgb
rgb rgb rgb rgb ;
rgb三个是连续的,每个分量占一个字节,也就是说每个像素是3个字节
1.2 RGBA(红、绿、蓝、透明度)
描述:在RGB基础上增加Alpha通道(A),表示透明度(0为完全透明,255为不透明)。
位数:32位(每个通道8位)。
应用场景:需要透明或半透明效果的图像(如UI图标、网页设计)。
常见格式:PNG、WebP、TIFF。
1.3 CMYK(青、品红、黄、黑)
描述:通过减法混色原理表示颜色,用于印刷领域。
位数:通常每个通道占8位,共32位。
特点:与RGB不同,CMYK颜色范围更小,不适合直接用于屏幕显示。
应用场景:印刷品(如海报、书籍)、专业设计软件(如Photoshop)。
常见格式:PDF、TIFF。
1.4 灰度(Grayscale)
描述:仅用单通道表示亮度,从黑到白(0为黑,255为白)。
位数:通常8位(256级灰度),也有更高位深(如12/16位)。
文件格式支持
PNG:支持 8/16 位灰度,支持无损压缩。
JPEG:支持 8 位灰度,有损压缩。
TIFF:支持 8/16/32 位灰度,支持无损压缩。
PGM(Portable Gray Map):专为灰度设计的简单格式。
Grayscale8是一个像素8位占一个字节(0-255,值越大越亮),Grayscale16是一个像素占16位占2个字节,Grayscale12是每个像素1.5个字节(内存不对齐)
1.5 二值图像(Binary/Bitmap)
描述:每个像素仅1位(0或1),表示纯黑或纯白。
应用场景:文字扫描(OCR)、简单图标、传真。
常见格式:TIFF(支持1位深度)、BMP。
1.6 YUV(亮度与色度分离)
描述:将亮度(Y)和色度(U/V)分离,广泛用于视频压缩。
变体:
YUV420:色度通道采样率降低(节省带宽),用于H.264/HEVC视频编码。每个像素1.5个字节
YUV444:全色度采样,质量更高。每个像素3个字节
应用场景:视频流(如MPEG、H.265)、电视信号(NTSC/PAL)。
常见格式:视频文件(MP4、AVI)、摄像头原始数据。
排列方式:如果是yuv420p,前面wh是Y,紧跟着后面的(w/2)(h/2)是u,紧跟着的是(w/2)*(h/2)是v.
Y(亮度):
在广播标准(如 ITU-R BT.601)中,Y 的取值范围是 16 到 235,而不是 0 到 255。
Y = 16 表示黑色,Y = 235 表示白色。
这种范围设计是为了避免信号过载或欠载,预留了“头尾”空间。
U 和 V(色度):
U 和 V 的取值范围是 16 到 240,但它们的中心点是 128。
当 U = 128 和 V = 128 时,表示无色差(灰色)。[-128,128]
U 和 V 偏离 128 时,分别表示蓝色和红色的色度偏移。
1.7.索引颜色(Indexed Color)
描述:使用调色板(Palette)存储有限颜色,每个像素保存调色板索引值。
位数:通常8位(最多256色),也可更少(如4位16色)。
应用场景:低颜色复杂度的图像(如卡通、老式游戏)。
常见格式:GIF、PNG(支持索引颜色)。
1.8 高位深度格式
描述:每个通道使用更多位数存储,提升颜色精度。
变体:
16位/通道:如RGB48(16位x3通道),用于专业摄影和医学成像。
浮点格式:如RGB32F(32位浮点数/通道),用于HDR(高动态范围)图像。
应用场景:HDR渲染、科学成像(如天文摄影)、电影后期制作。
常见格式:EXR、TIFF、RAW。
2 PSNR 的核心原理
2.1 信号与噪声的定义:
信号:原始图像或视频的像素值。
噪声:处理后信号与原始信号之间的差异(即失真)。
2.2 数学公式:
2.3 物理意义:
PSNR 值越高,表示处理后的信号质量越好(失真越小)。
典型范围:
>30 dB:质量较好(人眼难以察觉明显失真)。
20~30 dB:质量一般(可见失真但可接受)。
<20 dB:质量较差(明显失真)。
PSNR 的替代方法
SSIM(结构相似性):考虑亮度、对比度、结构相似性,更贴近人眼感知。
VMAF(Netflix 视频多方法评估融合):结合多种指标,适用于流媒体质量评估。
无参考指标(如 NIQE、BRISQUE):无需原始信号,直接评估处理后的质量。
3 代码使用
3.1 源码
电梯:源码
白嫖:https://gitee.com/mqinglang/qtopen-source
3.2 功能
以下功能是使用QT实现的:
- rgb/yuv/r/g/b等格式文件或数据,qt没法直接加载和现实,需要转换成rgb格式数据使用QImage进行包装和现实。
- 显示纯原始数据图像(RGB,yuv420p)或者jpg等常见的格式
- rgb24分离r/g/b
- yuvp420 分割 yuv
- yuvp420转RGB24
- rgb24转yuvp420
- yuv420p转灰度
- yuv420亮度减半
- PSNR-质量评价
- 支持直接将文件拖拽到软件上显示
注意:如果是原始数据比如.rgb等,需要在名称上加上分辨率比如img_256x256.rgb。如果没加上需要手动指定分辨率*