ISP 图像传感器camera原理

1、Color Filter Array — CFA

随着数码相机、手机的普及,CCD/CMOS 图像传感器近年来得到广泛的关注和应用。 图像传感器一般都采用一定的模式来采集图像数据,常用的有 BGR 模式和 CFA 模式。BGR 模式是一种可直接进行显示和压缩等处理的图像数据模式,它由 R( 红)、G( 绿) 、B( 蓝) 三原色值来共同确定 1 个像素点,例如富士数码相机采用的 SUPER CCD 图像传感器就采用这种模式,其优点是图像传感器产生的图像数据无需插值就可直接进行显示等后续处理,图像效果最好,但是成本高,常用于专业相机中。一般数码相机的传感器(CCD 或 CMOS)约占整机总成本的 10%~25%,为了减少成本,缩小体积,市场上的数码相机大多采用 CFA 模式,即在像素阵列的表面覆盖一层彩色滤波阵列(Color Filter Array,CFA),彩色滤波阵列有多种,现在应用最广泛的是 Bayer 格式滤波阵列,满足 GRBG 规律,绿色像素数是红色或蓝色像素数的两倍,这是因为人眼对可见光光谱敏感度的峰值位于中波段,这正好对应着绿色光谱成分。


上图就是一个采用 CFA 模式的图像传感器,有效分辨率为 640 x 480,该模式图像数据只用 R、G、B 3个值中的1 个值来表示 1 个像素点。这样一来每个像素点只能捕获三基色 R,G,B 中的一个,而缺失另外两个颜色值,这时候得到的是一幅马赛克图像。为了得到全彩色的图像, 需要利用其周围像素点的色彩信息来估计出缺失的另外两种颜色, 这种处理叫作色彩插值,也称作彩色插值或去马赛克。


上图是一个8 x 8像素大小的 CFA 模式图像数据阵列,图中 1 个方格表示 1个像素,R、G、B 的数字下标表示其在 8 x 8 图像阵列中的位置。由于 CFA 模式所采用的图像颜色滤波阵列结构相对简单,并且所得到的图像数据仅仅是原始图像全部三原色信息的1 / 3 的数据,因此成本较低。但是,上图中的 CFA 模式图像数据与 BGR 模式的图像数据相比,缺少了 2 / 3 的图像颜色信息,所以要对 CFA 模式图像数据进行显示、压缩等后续处理,就需要事先对其进行插值运算,恢复CFA 模式图像数据所缺少的2 / 3 颜色信息,从而将 CFA 模式图像数据重建为与 BGR 模式图像相匹配的图像数据。比较常见的是双线性插值算法:该算法在对一个像素点的某颜色值进行插值运算时,会用该像素相邻像素点对应颜色值通过算数平均来估计。

2、图像去噪

在图像的采集和传输过程中,图像质量经常受到各种噪声的影响而下降。由于采集和各种元器件容易受到强干扰会产生脉冲噪声,由于照明不稳定,镜头灰尘以及非线性的信道传输引起的图像退化都会产生不同种类的噪声其主要影响人的视觉效果,使人难以辨认图像的某些细节,另外噪声给一些图像处理算法带来严重影响,例如梯度算子,由于一些与对象无关点的引入,使得无用信息的使用造成更加严重的后果,干扰了图像的可观测的信息。这里讨论的噪声仅仅局限在图像传感器获取图像数据时的噪声污染,由于这时候的数据量较少,噪声直接影响后面的插值算法,并使图像的细节无法体现,既影响图像的插值效果,也影响人的视觉感受。因此在图像处理中噪声的去除是一项非常重要的环节。

3、自动聚焦

自动聚焦目的是获得清晰度更高得图像。常用的聚焦方法分两类,一类是传统的聚焦方法,一种是基于数字图像处理方式的图像聚焦方法。传统的方式中,自动聚焦通过红外线或者超生波测距的方式来实现。这种方式需要安装发射机和接收机,增加了摄像机的成本,而且超声波对于玻璃后面的被摄物体不能很好的自动聚焦。这一类聚焦方式在某些场合受到了限制。因此在日趋集成化、微型化、低成本的应用中,基于数字图像处理的自动聚焦方法更具有优势。

根据镜头成像分析,镜头的光学传递函数可以近似为高斯函数,它的作用等效为一个低通滤波器。离焦量越大,光学传递函数的截止频率越低。从频域上看,离焦量增大,对图像高频能量造成损失,使得图像的细节逐渐模糊。从空域上看,离焦量增大,点光源成像的光强分布函数越分散,可分辨的成像间距越大,图像相邻像素互相重叠,图像细节损失严重。因此图像清晰度评价函数时建立在图像边缘高频能量上的。

数字处理方法中,自动聚焦的关键在于构造图像的清晰度评价函数。己经提出的图像清晰度评价函数苞括灰度方差、梯度能量、嫡函数和一些频域函数法。图像清晰度评价函数必须具有良好的单峰性和尖锐性,而且要计算量适度,从而可以快速的实现精准对焦。

4、自动曝光

曝光是用来计算从景物到达相机的光通量大小的物理量。图像传感器只有获得正确的曝光,才能得到高质量的照片。曝光过度,图像看起来太亮曝光不足,则图像看起来太暗。到达传感器的光通量的大小主要由两方面因素决定:曝光时间的长短以及光圈的大小。

利用光圈进行自动曝光,主要根据所拍摄的场景来控制光圈大小,使得进光量维持在一定范围内。通过光圈进行曝光控制的成本比较高。现在市场所见的中低端摄像头采用的主流技术通过调整曝光时间来实现自动曝光。

目前自动曝光控制算法方法有两种,一种是使用参照亮度值,将图像均匀分成许多的子图像,每一块子图像的亮度被用来设置参照亮度值,这个亮度值可以通过设置快门的速度来获得。另外一种方法是,通过研究不同光照条件下的亮度与曝光值之间的关系来进行曝光控制。这两种方法都是研究了大量的图像例子和许多不同的光照条件。而且均需要在不同的光照条件下所采集的图像数据库。实际中自动曝光研究需要解决好以下几个问题,首先是判定图像是否需要自动曝光,其次是自动曝光时,如何调整光电转换后数字信号来找出自动曝光能力补偿函数,最后就是调整到什么程度最为合适。

5、伽马校正

在视频采集显示系统中,光电转换(CCD/CMOS)和电光转换(CRT/LCD)的器件的转换特性都是非线性的。这些非线性期间都存在一个能反映各自特性的幂函数,用它来衡量非线性器件的转换特性。这种特性称为伽玛特性,在视频中由于伽玛特性的存在,会导致图像信号的亮度失真,降低通信质量,影响用户体验。因此要对这个失真进行补偿,即伽玛校正。
光电转换器特性的非线性会引起图像非线性失真,图像的非线性失真主要表现在灰度的失真,即图像亮度层次的压缩与扩张,其图像表征为看起来被漂白或者太暗。摄像机/摄像头的伽玛特性大小一般为0.4 - 0.7,显示器的伽玛特性大小一般在1.3 - 2.5之间。
伽玛校正的具体实现方法多种多样,较简单的实现方式是查表法。伽玛校正分两步。首先建立适合所用器件的伽玛校正表,然后根据输入的像素值查表获得伽玛校正后的数据。

6、白平衡

白平衡,字面上的理解是白色的平衡。用色彩学的知识解释,白色是指反射到人眼中的光线由于蓝、绿、红三种色光比例相同且具有一定的亮度所形成的视觉反应。白色光是由赤、橙、黄、绿、青、蓝、紫七种色光组成的,而这七种色光又是有红、绿、蓝三原色按不同比例混合形成,当一种光线中的三原色成分比例相同的时候,习惯上人们称之为消色,黑、白、灰、金和银所反射的光都是消色。通俗的理解白色是不含有色彩成份的亮度。人眼所见到的白色或其他颜色根物体本身的固有色、光源的色温、物体的反射或透射特性、人眼的视觉感应等诸多因素有关,举个简单的例子,当有色光照射到消色物体时,物体反射光颜色与入射光颜色相同,既红光照射下白色物体呈红色,两种以上有色光同时照射到消色物体上时,物体颜色呈加色法效应,如红光和绿光同时照射白色物体,该物体就呈黄色。当有色光照射到有色物体上时,物体的颜色呈减色法效应。如黄色物体在品红光照射下呈现红色,在青色光照射下呈现绿色,在蓝色光照射下呈现灰色或黑色。
由于人眼具有独特的适应性,有时候不能发现色温的变化。比如在钨丝灯下呆久了,并不会觉得钨丝灯下的白纸偏红,如果突然把日光灯改为钨丝灯照明,就会觉查到白纸的颜色偏红了,但这种感觉也只能够持续一会儿。摄像头并不能像人眼那样具有适应性,所以如果摄像机的色彩调整同景物照明的色温不一致就会发生偏色。白平衡就是针对不同色温条件下,通过调摄像头内部的色彩电路使拍摄出来的影像抵消偏色,更接近人眼的视觉习惯。白平衡也可以简单地理解为在任意色温条件下,摄像头所拍摄的标准白色经过电路的调整,使之成像后仍然为白色。

7、颜色空间

颜色空间也称彩色模型(又称彩色空间或彩色系统),它的用途是在某些标准下用通常可接受的方式对彩色加以说明。本质上,彩色模型是坐标系统和子空间的阐述。位于系统的每种颜色都有单个点表示。 在彩色图像处理中,选择合适的彩色模型是很重要的。从应用的角度来看,人们提出的众多彩色模型可以分为两类。一类面向诸如彩色显示器或彩色打印机之类的硬设备(但可以与具体设备相关,也可以独立于具体设备),比如 RFB、CMY、YUV 模型。另一类面向视觉感知或者说以彩色处理分析为目的的应用,如动画中的彩色图形,各种图像处理的算法等,像 HSI、HSV 模型等。

8、YUV 颜色空间

亮度信号(Y)和色度信号(U,V)是相互独立的,也就是Y信号分量构成的黑白灰度图与用U,V信号构成的另外两幅单色图是相互独立的。由于Y,U,V是独立的,所以可以对这些单色图分别进行编码。黑白电视机能够接收彩色电视信号也就是利用了YUV分量之间的独立性。采用 YUV 颜色空间的好处在于人眼对彩色图象细节的分辨本领比对黑白图象低,因此,对色差信号, U、V,可以采用“大面积着色原理”。即用亮度信号Y 传送细节,用色差信号U、V 进行大面积涂色。因此,彩色信号的清晰度由亮度信号的带宽保证,而把色差信号的带宽变窄。正是由于这个原因,在多媒体计算机中,采用了 YUV 彩色空间,数字化的表示,通常采用Y:U:V = 8:4:4, 或者 Y:U:V = 8:2:2。例如8:2:2具体的做法是:对亮度信号Y,每个像素都用8位2进制数表示(可以有256级亮度),而U、V 色差信号每4个像素点用一个8位数表示,即画面的粒子变粗,但这样能够节约存储空间,将一个像素用24位表示压缩为用12位表示,节约 1/2 存储空间,而人的眼睛基本上感觉不出这种细节的损失,这实际上也是图像压缩技术的一种方法。

YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。前者将YUV分量存放在同一个数组中,通常是几个相邻的像素组成一个宏像素(macro-pixel);而后者使用三个数组分开存放YUV三个分量,就像是一个三维平面一样。

9、图像缩放

图像缩放(Scaler)技术,也称图像尺度转换、图像重采样和图像分辨率转换技术,是视频图像处理中的关键技术,广泛应用于实现 FPD 图像分辨率转换。例如,高清晰度数字电视接收到 NTSC 或 PAL 格式的标准清晰度数字电视信号后需转换成 HDTV(1920×1080)格式,才能在 HDTV 的电视上显示;另外,等离子(PDP)电视、TFT-LCD 电视等逐行显示器,须提升接收到的图像分辨率使之和液晶显示屏的物理分辨率一致,才能在终端上显示出视频图像;因此,Scaler 性能的优劣,将直接决定显示器图像的质量。

图像缩放可理解为图像的重采样过程,关键在于用连续模型函数来拟合原始离散图像,在求得连续模型参数后,根据所需缩放倍率对此连续图像进行重采样,得到符合目标分辨率的离散图像。数字图像重采样的本质是对离散图像点进行插值的过程。根据采样/重建理论,理想的插值核为 sinc 函数,但在物理上是不可实现的。通常的插值核函数都是采用近似于 sinc 函数的有限宽度插值函数。最近邻域法是最简单的缩放算法,但会使处理后的图像产生明显的锯齿形边缘和马赛克效应。双线性插值法虽然能解决最近邻域法所存在的问题,但却容易造成图像边缘的模糊。作为改进,又提出了加窗 sinc 核函数,从而得到了高次插值算法,如立方插值、高次样条插值等。

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

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

相关文章

51nod 1027 大数乘法

1027 大数乘法基准时间限制&#xff1a;1 秒 空间限制&#xff1a;131072 KB 分值: 0 难度&#xff1a;基础题收藏关注给出2个大整数A,B&#xff0c;计算A*B的结果。 Input第1行&#xff1a;大数A 第2行&#xff1a;大数B (A,B的长度 < 1000&#xff0c;A,B > 0&#xff…

C#如何开发多语言支持的Winform程序

C# Winform项目多语言实现(支持简/繁/英三种语言)有很多种方案实现多语言&#xff0c;我在这里介绍一种最简单最容易理解的&#xff0c;作为教学材题应该从通俗易懂入手。在写这篇文章之前&#xff0c;本来想用枚举窗体对象成员的方式设置语言&#xff0c;但是找不到源代码了&a…

Alpha 冲刺 (2/10)

Alpha 冲刺 &#xff08;2/10&#xff09; 队名&#xff1a;第三视角 组长博客链接 本次作业链接 团队部分 团队燃尽图 工作情况汇报 张扬&#xff08;组长&#xff09; 过去两天完成了哪些任务&#xff1a; 文字/口头描述&#xff1a; 1、学习qqbot库&#xff1b; 2、实时保存…

Linux C语言调用C++动态链接库

Linux C语言调用C动态链接库 标签&#xff1a; C调用C库 2014-03-10 22:56 3744人阅读 评论(0) 收藏 举报 分类&#xff1a; 【Linux应用开发】&#xff08;48&#xff09; 版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 如果你有一个c做的动态…

HTTP Live Streaming直播(iOS直播)技术分析与实现

不经意间发现&#xff0c;大半年没写博客了&#xff0c;自觉汗颜。实则2012后半年&#xff0c;家中的事一样接着一样发生&#xff0c;实在是没有时间。快过年了&#xff0c;总算忙里偷闲&#xff0c;把最近的一些技术成果&#xff0c;总结成了文章&#xff0c;与大家分享。 前些…

noip模拟赛 遭遇

分析&#xff1a;暴力挺好打的&#xff0c;对于前30%的数据神搜&#xff0c;hi相同的数据将所有的建筑按照c从小到大排序&#xff0c;看最多能跳多少,ci0的数据将所有的建筑按照h从小到大排序&#xff0c;枚举起点和终点&#xff0c;看能否跳这么多,取个max就可以了.这样70分就…

揭开全景相机创业真相:国外一开源国内就自主

今年以来全景相机有了一个大爆发&#xff0c;国外Google、三星、诺基亚等大厂都进入了这个领域&#xff0c;国内也有很多厂商推出了全景相机。 Bubl全景相机国外一开源&#xff0c;国内就自主。这在VR&#xff08;虚拟现实&#xff09;领域体现的淋漓尽致——Google的Cardborad…

福大软工1816 · 团队现场编程实战(抽奖系统)

值得一看的补充版本演示视频 软工锦鲤在这里程序版本链接及说明 按时提交版本 以基础功能为主github链接&#xff1a;first version测试环境说明 本程序在python 3.6以上环境下运行操作说明&#xff1a; 键入抽奖关键词&#xff0c;支持&#xff1a;#我要红包#或“我要换组“或…

LeakCanary——直白的展现Android中的内存泄露

之前碰到的OOM问题&#xff0c;终于很直白的呈现在我的眼前&#xff1a;我尝试了MAT&#xff0c;但是发现不怎么会用。直到今天终于发现了这个新工具&#xff1a; 当我们的App中存在内存泄露时会在通知栏弹出通知&#xff1a; 当点击该通知时&#xff0c;会跳转到具体的页面&am…

老司机做VR视频,需要什么样的全景相机?

做为一个在全景内容领域摸爬滚打一年有余的老司机&#xff0c;经历了太多的坑。最近有不少朋友转行进入这个领域&#xff0c;问我买什么样的相机好。我现在项目太多&#xff0c;根本没空详尽解答。所以写下这篇文章&#xff0c;不懂得自己看吧。 说白了&#xff0c;买什么样子…

域乎曹胜虎:传统互联网“生病”了

11月17日&#xff0c;2018&#xff08;第12届&#xff09;创业周暨全球创业周中国站在上海盛大召开&#xff0c;由上海域乎信息技术有限公司&#xff08;以下简称“域乎”&#xff09;承办的区块链专场论坛——《区块链产业应用赋能精英论坛》成功举办&#xff0c;吸引了众多业…

[No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)...

github地址&#xff1a;https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况&#xff0c;并调用接口&#xff0c;当资源被超额占用时&#xff0c;发送警报到个人手机&#xff1b;界面模拟Console的显示方式&#xff0c;信息缓冲大小由配置决定…

I2C总线之(一)---概述

概述&#xff1a;IC 是Inter-Integrated Circuit的缩写&#xff0c;发音为"eye-squared cee" or "eye-two-cee" , 它是一种两线接口。 IC 只是用两条双向的线&#xff0c;一条 Serial Data Line (SDA) &#xff0c;另一条Serial Clock (SCL)。 SCL&#xf…

I2C总线之(二)---时序

一、协议 1.空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时&#xff0c;规定为总线的空闲状态。此时各个器件的输出级场效应管均处在截止状态&#xff0c;即释放总线&#xff0c;由两条信号线各自的上拉电阻把电平拉高。 2.起始位与停止位的定义&#xff1a; 起始信…

微信小程序设置底部导航栏目方法

微信小程序底部想要有一个漂亮的导航栏目&#xff0c;不知道怎么制作&#xff0c;于是百度找到了本篇文章&#xff0c;分享给大家。 好了 小程序的头部标题 设置好了&#xff0c;我们来说说底部导航栏是如何实现的。 我们先来看个效果图 这里&#xff0c;我们添加了三个导航图标…

HTTP协议(3)浏览器的使用之查看源码

在做CTF的Web类题目时&#xff0c;推荐使用Firefox浏览器。下面介绍一些在解题过程中关于浏览器的常用技巧。首先就是查看源码。在做Web题目时&#xff0c;经常需要查看网站源码&#xff0c;有的flag直接就藏在源码中&#xff0c;有些题目则是在源码中给出提示和线索&#xff0…

Autofac IoC容器基本使用步骤【1】

原文&#xff1a;http://www.bkjia.com/Asp_Netjc/888119.html 【原文中有一个地方报错&#xff0c;下面已修改】 一.基本步骤: 1.设计适合控制反转(IoC)的应用程序 2.给应用程序Autofac 引用. 3.注册组件. 4.创建一个Container以备后用. 5.从Container创建一个 lifetime scop…

I2C总线之(三)---以C语言理解IIC

为了加深对I2C总线的理解&#xff0c;用C语言模拟IIC总线&#xff0c;边看源代码边读波形&#xff1a; 如下图所示的写操作的时序图&#xff1a; 读时序的理解同理。对于时序不理解的朋友请参考“I2C总线之(二)---时序” 完整的程序如下&#xff1a; #include<reg51.h>…

结对编程总结

这个项目我和我的结对伙伴共花了两个月时间&#xff0c;之所以选这个项目&#xff0c;因为我们之前都学习过Python&#xff0c;也做过类似的程序&#xff0c;相比较其他项目而言&#xff0c;这个项目更合适&#xff0c;也让我们对词频统计方面的知识加深了了解。写这个程序我们…

JavaScript初学者必看“new”

2019独角兽企业重金招聘Python工程师标准>>> 译者按: 本文简单的介绍了new, 更多的是介绍原型(prototype)&#xff0c;值得一读。 原文: JavaScript For Beginners: the ‘new’ operator 译者: Fundebug 为了保证可读性&#xff0c;本文采用意译而非直译。 <di…