图像处理之:Video Processing Subsystem(三)

免责声明:

本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。

读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。

本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。

若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。


Color Space Conversion and Correction

1. 颜色再现的挑战

在图像系统中,准确地再现颜色可能会受到多种因素的影响,这些因素会导致图像颜色与实际场景的颜色不一致:

  • 光学系统的光谱特性

    • 镜头和滤镜的光谱响应:镜头和光学滤镜对不同波长的光有不同的响应,这可能会导致某些颜色在图像中被强调或抑制。例如,镜头可能对红色光线更敏感,而对蓝色光线较不敏感,从而影响图像中的颜色平衡。
  • 光源变化

    • 不同光源的色温:光源的类型(如日光、荧光灯、钨丝灯)影响场景的色温。不同光源发出的光的色温不同,这会导致图像颜色偏向某种色调。例如,白色光源(如日光)和黄色光源(如钨丝灯)的颜色温度不同,因此拍摄的图像可能会有色彩偏差。
  • 传感器的颜色滤镜特性

    • 传感器中的颜色滤镜:传感器使用颜色滤镜(如红、绿、蓝滤镜)来捕捉不同颜色的光线。滤镜的特性和均匀性可能会影响颜色的捕捉。例如,某些滤镜可能对某些颜色的灵敏度较低,导致图像中某些颜色的细节丢失。

2. 颜色空间转换/校正功能

为了纠正这些颜色偏差,图像系统中通常会使用颜色空间转换和校正功能:

  • 颜色空间转换

    • 目的:将图像数据从一种颜色空间转换到另一种颜色空间。例如,将 RGB 颜色空间转换为 YUV 颜色空间。这有助于在不同的显示设备或处理环境中保持颜色的一致性,因为不同的设备可能使用不同的颜色空间。
    • 操作:这个过程可以调整图像数据,使其适应目标颜色空间的特性,从而减少颜色失真。
  • 颜色校正

    • 目的:修正由光学系统、光源和传感器特性导致的颜色偏差。通过对图像数据进行调整,校正功能可以弥补由于上述因素造成的色彩失真。
    • 操作:调整图像的色彩值,使其更接近实际场景的颜色。校正可能包括调整色温、补偿光源色差、修正传感器滤镜的特性等。

3.处理蓝色通道的过程

  1. 光源到图像的处理

    • 原始蓝色光子:从场景中射出的蓝色光子。
    • 蓝色滤镜的响应:传感器中的蓝色滤镜对蓝色光子的响应。滤镜可能会根据不同波长的光有所不同的透过率。
    • 硅的响应:传感器中的硅对蓝色光子的响应。硅的响应可能与人眼对蓝色的感知不同。

    结合这三者(蓝色光子、蓝色滤镜响应、硅的响应),传感器捕捉到的蓝色值(B)与人眼的蓝色感知可能存在差异。为了使捕捉到的蓝色更符合人眼的感知,需要对蓝色通道进行校正。

  2. 颜色空间转换/校正功能

    • 目的:通过调整像素值,使处理后的颜色更接近人眼的感知。例如,校正蓝色通道以匹配人眼对蓝色的感知。
    • 操作:通过以下步骤实现校正:
      • 应用增益:将蓝色通道的像素值乘以一个系数,以增强或减弱蓝色的强度。这是通过调整增益来实现的。
      • 混合其他颜色:在蓝色通道中添加绿色或红色的混合,使最终的蓝色值更符合预期的颜色。
  3. 数学表达

To express this processing mathematically, the new blue (Bc) is related to the old blue (B), red (R), and green (G) according to:

where K1, K2, and K3 are the weights for each of the mix of red, green, and blue to the new blue.

4.颜色校正矩阵

扩展这个概念,一个标准的3 × 3矩阵乘法可以同时并行应用于每个颜色通道。这是一个矩阵操作,其中权重定义了一个颜色校正矩阵。在典型应用中,色彩校正还包含偏移补偿,以确保达到黑色[0,0,0]级别。下面的矩阵操作也可以用于色彩校正:

Matrix Operation: The 3x3 Matrix (and offsets) can be used to perform color space conversion
between RGB and YUV 4:4:4:

5.Features

色彩空间转换和校正功能为各种色彩校正应用提供了3 × 3矩阵乘法。系数矩阵是完全可编程的,包括偏移补偿,并且输出的裁剪和夹紧也是可定义的。

偏移量(Offsets)

  • 宽度: 偏移量的位宽为数据宽度加1位。例如,如果数据宽度为 8 位,则偏移量的位宽为 9 位。

  • 数值范围: 偏移量是一个带符号整数,具体范围由以下公式给出:

6.Color Mode


7.Frame Size

列数必须是每个时钟的样本数的倍数。如果视频格式为4:2:2或4:2:0,则列数必须为偶数。如果视频格式为4:2:0,则行数必须为偶数。

8.Window

Linux驱动不支持window函数。如果在硬件中没有启用Window特性,那么以下寄存器将不存在:

• HwReg.ColStart
• HwReg.ColEnd
• HwReg.RowStart
• HwReg.RowEnd
• HwReg.K11_2
• HwReg.K12_2
• HwReg.K13_2
• HwReg.K21_2
• HwReg.K22_2
• HwReg.K23_2
• HwReg.K31_2
• HwReg.K32_2
• HwReg.K33_2
• HwReg.ROffset_2
• HwReg.GOffset_2
• HwReg.BOffset_2
• HwReg.ClampMin_2
• HwReg.ClipMax_2

Chroma Resampling

1. 人眼对亮度和色度的敏感度

  • 亮度(Luminance): 代表图像的亮度信息,对应于人眼对光强的感知。

  • 色度(Chrominance): 包含色彩信息,通常分为两个色差信号 U 和 V。人眼对色度的细节敏感度较低。

2. 颜色空间转换(Color-Space Conversion)

  • 在视频处理中,RGB 颜色空间可以转换为 YUV 颜色空间。Y 表示亮度信息,U 和 V 是色差信号。

  • 通过降低对 U 和 V 信号的采样率,可以实现简单有效的视频压缩,从而减少存储和传输的成本。这种压缩通常不会影响视觉质量,因为人眼对色度变化不敏感。

3. 色度重采样(Chroma Resampling)

  • 色度重采样功能: 用于在不同的色度子采样格式之间进行转换,如 4:4:4、4:2:2 和 4:2:0。

    • 4:4:4: 每个像素都有完整的 Y、U、V 数据。

    • 4:2:2: U 和 V 信号的水平分辨率减半,每两个像素共享一组 U、V 数据。

    • 4:2:0: U 和 V 信号的水平和垂直分辨率都减半,每四个像素共享一组 U、V 数据。

  • 转换方法: 转换通过有限脉冲响应(FIR)滤波器实现,一些转换仅需要在水平或垂直维度进行滤波,而另一些则需要在两个维度进行滤波。

    • 插值操作: 使用两相的多相 FIR 滤波器实现,用于从低分辨率上采样到高分辨率。

    • 抽取操作: 使用低通两相多相 FIR 滤波器实现,用于从高分辨率下采样到低分辨率,抑制色度混叠现象。

4.Features

色度重采样器功能用于在不同的色度子采样格式之间进行转换。支持的格式包括 4:4:4、4:2:2 和 4:2:0。为了适应不同的应用场景,色度重采样器提供了三种不同的插值和抽取选项:

  1. 高性能应用: 允许定义一个可配置的滤波器,并提供可编程的滤波器系数。
  2. 低资源占用应用: 使用预定义的静态滤波器,该滤波器具有 2 的幂系数,适用于资源有限的应用场景。
  3. 最小资源占用应用: 通过简单地复制或丢弃像素来实现色度重采样,占用最少的资源。

5.Sub-sampled Video Formats

6.Chroma Resampling Configuration

Convert 4:2:2 to 4:4:4: This conversion is a 1:2 horizontal interpolation operation,
implemented using a two-phase polyphase FIR filter. One of the two output pixels is co-sited
with one of the input sample. The ideal output is achieved simply by replicating this input
sample

Convert 4:4:4 to 4:2:2: This conversion is a horizontal 2:1 decimation operation, implemented
using a low-pass FIR filter to suppress chroma aliasing. In order to evaluate output pixel ox, y,
the FIR filter in the core convolves COEFk_HPHASE0, where k is the coefficient index, ix,y are
pixels from the input image, and [ ]Mm represents rounding with clipping at M, and clamping at
m. DW is the Data Width or number of bits per video component. Ntaps is the number of filter
taps.

7.Resampling Filters:

在重采样滤波过程中,进行色度格式转换时的上采样和下采样是通过低通滤波器来实现的,分别用于插值(上采样)和抗混叠(下采样)。

滤波器配置

  • 水平滤波器:最多可以有10个抽头(taps)和两个相位(phases)。
  • 垂直滤波器:同样最多支持10个抽头和两个相位。
  • 2D分离滤波器:对于同时需要在水平方向和垂直方向上进行上/下采样的转换,提供二维分离滤波器。

在选择滤波器抽头数量时,必须选择偶数抽头,支持的选项包括4、6、8或10个抽头。根据具体的转换类型和滤波器的尺寸,某些系数可能不会被使用,此时可以将这些不需要的系数设置为零。

系数格式

  • 每个系数占16位,采用二进制补码(2's complement)表示。
  • 该格式包含4个整数位(包括1个符号位)和12个小数位。符号位是最高有效位(MSB)。
  • 例如,值为1的系数可以表示为 0001 0000 0000 0000

重要注意事项

  • 所有系数的和应精确为1,以实现单位增益。如果系数之和小于1,则会出现动态范围损失。

8. Computation Bit Width Growth:

Full precision (DATA_WIDTH+16+log2(NTaps) bits) is
maintained during the horizontal and/ or vertical FIR convolution operation.
FIR filter outputs are rounded to DATA_WIDTH bits by adding half an output LSB in the full
precision domain prior to truncation. Clipping and clamping of the output data prevents
overflows and underflows. Data is clipped and clamped at 2DATA_WIDTH-1 and 0.


9. Edge Padding:

The edge pixels of images are replicated prior to filtering to avoid image
artifacts.

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/404297.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【硬件模块】震动传感器模块

震动传感器模块实物图 DO:数字信号量输出,接单片机管脚; AO:模拟输出,无效,一般不接。 无震动,DO输出高电平,信号指示灯灭; 有震动,DO输出低电平,…

DHCP的原理与配置

目录 DHCP的原理 DHCP是什么 DHCP的好处 DHCP的分配方式 DHCP的工作原理 DHCP的配置 环境设置 DHCP配置 验证配置是否成功 DHCP的原理 DHCP是什么 DHCP:Dynamic Host Configuration Protocol,动态主机配置协议。由Internet工作小组开发,专门用…

牛客网习题——通过C++实现

一、目标 实现下面4道练习题增强C代码能力。 1.求123...n_牛客题霸_牛客网 (nowcoder.com) 2.计算日期到天数转换_牛客题霸_牛客网 (nowcoder.com) 3.日期差值_牛客题霸_牛客网 (nowcoder.com) 4.打印日期_牛客题霸_牛客网 (nowcoder.com) 二、对目标的实现 1.求123...n_…

【unity小技巧】下载原神模型,在Blender中PMX模型转FBX模型,导入到Unity中实现基于光照模型的内置和URP卡通渲染

最终效果 前言 最近在研究人物模型的使用和卡通渲染效果,这里我们就使用原神的模型来演示。 一、原神模型下载 原神的模型可以在官网直接下载到。 1、第一期模型 官网:https://ys.biligame.com/gczj/ 2、第二期模型 官网:http://ys.bi…

Axure高端交互元件库:助力产品与设计

用户体验(UX)和用户界面(UI)设计对于任何产品的成功都至关重要。为了在这个竞争激烈的市场中脱颖而出,设计师和产品开发团队需要依赖强大的工具来创造引人注目且功能丰富的交互界面。下面介绍一款Axure精心制作的"…

背包问题的模板及各个等价变形

目录 0-1背包 —— 二维二重循环 01背包 —— 一维二重循环 完全背包 —— 二维三重循环 完全背包 —— 二维二重循环 完全背包 —— 一维二重循环 0-1背包 —— 二维二重循环 #include <bits/stdc.h> using namespace std; const int N 1010; int dp[N][N]; int v…

鸿蒙内核源码分析——(自旋锁篇)

本篇说清楚自旋锁 读本篇之前建议先读系列篇 进程/线程篇. 内核中哪些地方会用到自旋锁?看图: 概述 自旋锁顾名思义&#xff0c;是一把自动旋转的锁&#xff0c;这很像厕所里的锁&#xff0c;进入前标记是绿色可用的&#xff0c;进入格子间后&#xff0c;手一带&#xff0c…

Github 2024-08-19 开源项目周报Top15

根据Github Trendings的统计,本周(2024-08-19统计)共有15个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目7JavaScript项目3TypeScript项目3Dart项目2HTML项目1PowerShell项目1Clojure项目1C++项目1Rust项目1Bootstrap 5: Web上开发响应式、…

嵌入式软件--模电基础 DAY 2

强电和弱电&#xff0c;简单一点是以电死人为标准的&#xff0c;交流电36伏特以下&#xff0c;直流电24V以下&#xff0c;为安全电压&#xff0c;是为弱电&#xff0c;反则强电。 市电进入家庭&#xff0c;连接你的电脑&#xff0c;220V的电压为什么没有让你感到危险&#xff…

YOLO知识点总结:

分类&#xff1a; 即是将图像结构化为某一类别的信息&#xff0c;用事先确定好的类别(category)或实例ID来描述图片。这一任务是最简单、最基础的图像理解任务&#xff0c;也是深度学习模型最先取得突破和实现大规模应用的任务。其中&#xff0c;ImageNet是最权威的评测集&…

【区块链+金融服务】基于区块链的一站式绿色金融开放平台 | FISCO BCOS应用案例

科技的进步为绿色金融发展提供了新的机遇&#xff0c;但银行、企业、第三方金融机构等在进行绿色金融业务操作过程中&#xff0c; 存在着相关系统和服务平台建设成本高、迭代难度大、数据交互弱、适配难等痛点。 基于此&#xff0c;中碳绿信采用国产开源联盟链底层平台 FISCO …

【Android 远程数据库操作】

按正常情况下&#xff0c;前端不应该直接进行远程数据库操作&#xff0c;这不是一个明智的方式&#xff0c;应该是后端提供对应接口来处理&#xff0c;奈何公司各方面原因需要前端这样做。 对此&#xff0c;我对远程数据库操作做了总结&#xff0c;便于自己复盘&#xff0c;同…

【Qt】常用控件QCheckBox

常用控件QCheckBox QCheckBox表示复选按钮&#xff0c;可以允许选中多个。 QCheckBox继承自QAbstractButton 例子&#xff1a;获取复选按钮的取值 使用Qt Designer先大体进行设计 代码实现&#xff1a; #include "widget.h" #include "ui_widget.h"Widge…

【网络】套接字(socket)编程——TCP版

接着上一篇文章&#xff1a;http://t.csdnimg.cn/GZDlI 在上一篇文章中&#xff0c;我们实现的是UDP协议的&#xff0c;今天我们就要来实现一下TCP版本的 接下来接下来实现一批基于 TCP 协议的网络程序&#xff0c;本节只介绍基于IPv4的socket网络编程 基于 TCP 的网络编程开…

【leetcode详解】T3137(思路详解 代码优化感悟)

思路详解 要解决这个问题&#xff0c;我们的大致思路是这样&#xff1a;找到长度为k的字符串 (记为stringA) &#xff0c;统计重复次数最多的那一个&#xff0c;则最终对应的k周期字符串就是 [stringA * n] 的形式( n word.length() / k&#xff09; 要实现多对象的计数&…

iOS 18.1 Beta 2评测:新变化与体验升级

苹果公司近日向开发者推送了iOS 18.1 Beta 2更新&#xff0c;这一版本基于beta1版本进行多个方面优化和改进&#xff0c;为用户带来了更加流畅和个性化的使用体验。作为一位热衷于体验新系统的用户&#xff0c;小编也是第一时间升级了Beta 2版本&#xff0c;并对其进行了全面的…

51 无显式主键时 mysql 增加的 DB_ROW_ID

前言 这里主要是 探讨, 在我们创建了一个 无主键的数据表, 然后 mysql 会为我们增加的这一个 DB_ROW_ID 的相关 新建一个无主键字段的数据表如下 CREATE TABLE implicit_id_table (username varchar(16) DEFAULT NULL,age int(11) DEFAULT NULL ) ENGINEInnoDB DEFAULT CH…

Docker 部署loki日志 用于微服务

因为每次去查看日志都去登录服务器去查询相关日志文件&#xff0c;还有不同的微服务&#xff0c;不同日期的文件夹&#xff0c;超级麻烦&#xff0c;因为之前用过ELK&#xff0c;原本打算用ELK&#xff0c;在做技术调研的时候发现了一个轻量级的日志系统Loki&#xff0c;果断采…

如何一键删除iPhone相册所有照片

拍照已成为我们记录日常生活的常态。但是&#xff0c;大量照片便会积累在设备上&#xff0c;这不仅占用了大量存储空间&#xff0c;而且随着时间的推移&#xff0c;管理这些照片也变得越来越困难。如果你决定清理旧照片&#xff0c;或者出于隐私考虑需要删除所有照片&#xff0…

【数据结构】链式结构实现:二叉树

二叉树 一.快速创建一颗二叉树二.二叉树的遍历1.前序、中序、后序遍历&#xff08;深度优先遍历DFS&#xff09;2.层序遍历&#xff08;广度优先遍历BFS&#xff09; 三.二叉树节点的个数四.二叉树叶子节点的个数五.二叉树的高度六.二叉树第k层节点个数七.二叉树查找值为x的节点…