当前位置: 首页 > article >正文

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进行包装和现实。
  1. 显示纯原始数据图像(RGB,yuv420p)或者jpg等常见的格式
  2. rgb24分离r/g/b
  3. yuvp420 分割 yuv
  4. yuvp420转RGB24
  5. rgb24转yuvp420
  6. yuv420p转灰度
  7. yuv420亮度减半
  8. PSNR-质量评价
  9. 支持直接将文件拖拽到软件上显示

注意:如果是原始数据比如.rgb等,需要在名称上加上分辨率比如img_256x256.rgb。如果没加上需要手动指定分辨率*
在这里插入图片描述


http://www.kler.cn/a/613339.html

相关文章:

  • uniapp中的本地存储API
  • uniapp自定义圆形滑杆
  • 社区医疗服务可视化系统+论文源码视频演示
  • 企业数据怎么防泄露?天锐蓝盾筑牢企业网络安全防线
  • 攻破tensorflow,勇创最佳agent(2)---损失(loss) 准确率(accuracy)问题
  • DefogNet 与 TSID-Net:两种单图像去雾方法的对比分析
  • 天气预警API:守护安全的数字防线
  • Nacos Console 模块的作用是什么?是如何与 Server 端交互的?
  • 李宏毅机器学习笔记(1)—机器学习基本概念+深度学习基本概念
  • DBeaver配置postgresql数据库连接驱动
  • TF32 与 FP32 的区别
  • C++设计模式-状态模式:从基本介绍,内部原理、应用场景、使用方法,常见问题和解决方案进行深度解析
  • 如何保证LabVIEW软件开发的质量?
  • Vue 的响应式机制未生效——v-model 绑定的冰淇淋输入框值不更新
  • 每日一题之日期统计
  • 多个git账户团队写作
  • Python爬虫如何检测请求频率?
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分页表格拖拽排序
  • Java制作简单的聊天室(复习)
  • 高精度除法