Bayer滤镜转换颜色方案

news/2024/12/4 17:12:46/

Bayer滤镜转换颜色方案

Bayer模式是颜色模式,被广泛应用于CCD和CMOS摄像头。相机使用了拜耳滤镜,分别过滤得到红绿蓝三种颜色。既然要得到的是红绿蓝频段光线的强度,要通过的就是红绿蓝光,就反射了其他频段的光线。

在这里插入图片描述

比如说红色滤镜应该是
反射 了除去红色那一个波段的其他光。这里有一个疑问:它是 保留 了人眼可见的感觉是红的500–700nm波长的光可以通过,还是保留那个特定的人眼反应是最红的那个波长可以通过?

因为这好像涉及到复合光(即自然界的各种波长的光叠加)与单纯的RGB(即只有特定那个颜色频率的光,只改变光强叠加出来的光)的转换问题。虽然所有他们可以表示的颜色看起来是不差的(即可以用RGB表示看到的几乎所有复合光的一样的颜色),可是怎么把看起来是某一颜色的自然复合光不差地转换为看起来颜色一样的RGB数值呢?只要看起来是最红的那个波长的光就可以了吗?还是只要有点红的都要。这怎么取舍?取舍之后拍出来照片的颜色是在一定范围内人眼看不出来,但和实际看到的自然色应该是有误差的。

如果是反射其他波长的光那么RGB滤镜看起来是青色(0, 255, 255),紫色(255, 0, 255),黄色(255, 255 ,0)这三个颜色,而非示意图上的红绿蓝。

因为人眼三种视锥细胞对波长的响应是有重叠的部分的。它反射了其余波长的光看起来到底会是什么颜色的?

RGB
Bayer Color分析

Bayer色彩滤波阵列

在这里插入图片描述

拜耳色彩滤波阵列(Bayer Color Filter Array,CFA)是非常有名的彩色图片的数字采集格式。色彩滤波器的模式如上图所示,由一半的G,1/4的R,1/4的B组成。

拜耳色彩滤波器的模式、序列、滤波器有很多种,但最常见的模式是由Kodak提出的2*2模式。

在这里插入图片描述

当Image Sensor往外逐行输出数据时,像素的序列为GRGRGR…/BGBGBG…(顺序RGB)。这样阵列的Sensor设计,使得RGB传感器减少到了全色传感器的1/3,如下所示。

在这里插入图片描述

图像传感器的结构如下所示,每一个感光像素之间都有金属隔离层,光纤通过显微镜头,在色彩滤波器过滤之后,投射到相应的漏洞式硅的感光元件上。

在这里插入图片描述

白平衡调节(White Balance)

色彩传感器并不能像人眼那样直接感应图像,因此为了保证最终图像的真实性,必须经过一些白平衡处理以及色彩校正等算法来修正图像。

原始像素的第一步处理操作就是白平衡调节。一个白色物体每通道的白平衡都应该是相同的,即R=G=B。通过白色物体的采集以及直方图分析,拥有最高级别白平衡的通道被作为目标通道,而其他两个通道通过增益达到匹配,如下:R’=aG’=bB’。同时,随着光源的不同,白平衡也应该相应的调节。

Bayer插值补偿算法(Bayer Interpolation)

  1. 插值红蓝算法实现

每一个像素仅仅包括了光谱的一部分,必须通过插值来实现每个像素的RGB值。为了从Bayer格式得到每个像素的RGB格式,需要通过插值填补缺失的2个色彩。插值的方法有很多(包括领域、线性、3*3等),速度与质量权衡,最好的线性插值补偿算法。其中算法如下:

R和B通过线性领域插值,但这有四种不同的分布,如下图所示:

在这里插入图片描述

在(a)与(b)中,R和B分别取领域的平均值。

  1. 插值绿算法实现

在(c)与(d)中,取领域的4个B或R的均值作为中间像素的B值。

在这里插入图片描述

由于人眼对绿光反应最敏感,对紫光和红光则反应较弱,因此为了达到更好的画质,需要对G特殊照顾。在上述(c)与(d)中,扩展开来就是上图的(e)与(f)中间像素G的取值,者也有一定的算法要求,不同的算法效果上会有差异。经过相关的研究,(e)中间像素G值的算法如下:

在这里插入图片描述

(f)中间像素G值的算法如下:

在这里插入图片描述

CMOS摄像头这部分转换是在内部用ADC或者ISP完成的,生产商为了降低成本必然会使得图像失真。当然用外部处理器来实现转换,如果处理器的速度足够NB,能够胜任像素的操作,用上面的算法来进行转换。不过上述算法将直接成倍提高了算法的复杂度,速度上将会有所限制。因此为了速度的提成,可以直接通过来4领域G取均值来中间像素的G值,将会降低一倍的速率,而在性能上差之甚微,算法如下:

在这里插入图片描述

如果能够通过损失图像的额质量,来达到更快的速度,还可以取G1、G2的均值来实现,但是这样的做法会导致边沿以及跳变部分的失真。

从一个单独平面中得到彩色图像,该平面的R/G/B像素点如下表所示安排。

在这里插入图片描述

对像素输出的RGB分量由该像素的1、2或者4邻域中具有相同颜色的点插值得到。Bayer模式可以通过向左或向上平移一个像素点来进行一些修改。比如说,Bayer模式具有很流行的BG类型。

在这里插入图片描述

实际上不明白用RGB来表示可见颜色以后。RGB的三个分量的叠加关系是线性叠加。那么对RGB应用数值变换,比如说减去红分量一个数。

CFA的滤过波段不是完美的单一波长的,其实很希望能这样做,因为这样的话各通道分离度越高,对色彩的还原就会越准确。而这个现象反向的话,最极端的结果就是黑白传感器,不能获得任何有效的色彩信息。

CFA的波长透过曲线各个CIS(CMOS Image Sensor)各不相同,这也是拍摄出来图像的色彩表现的一个重要影响因素,比如大家一直说的SONY的色彩表现不佳,这个问题和CFA的性能是绝对离不开的。

比如,CFA透过曲线,就是一个很典型的例子,通过提高RGB分离度来获得更高的色准。

在这里插入图片描述

RYYB这种排列,就会导致色彩反算的准确度降低。
CFA的取舍非常重要,这个也算是各个厂商一直在各种攻关的一点了。

拍到的照片的颜色和实际颜色差别是很大的。这个需要通过色彩管理来实现,如何获取XYZ坐标,如何向RGB空间映射,这些展开的话就太多了。

然后是第二问,CFA不是反射无法透过的光,是吸收无法透过的光,所以理论上完美的CFA应该是黑的,不过实际上大家都知道不存在这种完美材料,基本颜色就是和CFA像素对应的颜色看起来是一致的。

然后其实你的最后一个问题是很好的,如果把拍照看作一个图像信息获取的过程的话,其实是非常希望得到全光谱数据而不是单单的RGB数据的。比如微软就做过类似的工作。

这个例子里,对RGB的数值进行变换,本质上是加权减去一部分光谱能量的。但不能从RGB的图片中提取出原始的光谱信息,因为从光谱到RGB的这个映射过程实际上已经把那些数据都拍平了,是一种“降维打击”。

在这里插入图片描述

CFA根据techinsight的报告,拍下来看就是红蓝绿的颜色。


http://www.ppmy.cn/news/614374.html

相关文章

摄像头硬件组成模块

摄像头硬件组成模块 一.概述 摄像头可分为数字摄像头和模拟摄像头两大类。数字摄像头可以将视频采集设备产生的模拟视频信号转换成数字信号,进而将其储存在计算机里。模拟摄像头捕捉到的视频信号必须经过特定的视频捕捉卡将模拟信号转换成数字模式&…

YOLOv4实用训练实践

YOLOv4实用训练实践 准备工作 推荐使用Ubuntu 18.04 CMake > 3.8: https://cmake.org/download/ CUDA > 10.0: https://developer.nvidia.com/cuda-toolkit-archive OpenCV > 2.4: https://opencv.org/releases.html cuDNN > 7.0 for CUDA 10.0https:/…

3D惯导Lidar仿真

3D惯导Lidar仿真 LiDAR-Inertial 3D Plane Simulator 摘要 提出了最近点平面表示的形式化方法,并分析了其在三维室内同步定位与映射中的应用。提出了一个利用最近点平面表示的无奇异平面因子,并在基于图的优化框架中证明了它与惯性预积测量的融合。所…

tensorflow-yolov4实施方法

tensorflow-yolov4实施方法 tensorflow-yolov4-tflite YOLOv4: Optimal Speed and Accuracy of Object Detection 文献链接:https://arxiv.org/abs/2004.10934 代码链接:https://github.com/AlexeyAB/darknet 摘要 有大量的特征被认为可以提高卷积…

YOLOv4:目标检测(windows和Linux下Darknet 版本)实施

YOLOv4:目标检测(windows和Linux下Darknet 版本)实施 YOLOv4 - Neural Networks for Object Detection (Windows and Linux version of Darknet ) YOLOv4论文链接:https://arxiv.org/abs/2004.10934 链接地址:https…

语义分割改进:通过视频传播和标签松弛

语义分割改进:通过视频传播和标签松弛 Improving Semantic Segmentation via Video Propagation and Label Relaxation 论文地址:https://arxiv.org/abs/1812.01593 摘要 本文提出了一个视频预测-以方法论为基础,通过综合新的训练样本&am…

《计算机系统与网络安全》第七章 身份认证

🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1f33…

git 无法拉取新的远程分支

我们常常会根据远程分支创建本地分支,命令如下 git checkout -b dev origin/dev 上面的命令我是想把远程分支 dev 拉到本地来,但是有时候没有用,提示远程分支不存在,我们需要通过下面的命令来操作 git fetch origin 可以运行 git…