彩色CCD相机工作原理

原理

黑白(单色)相机

       CCD原理并不复杂。我们可以把它想象成一个顶部被打开的记忆芯片。因此光束可以射到记忆单元中。根据"光电效应”,这些光束在记忆单元中产生负电荷(下图中右上部分)。



       曝光后,这些电荷被读出,进而被相机处理单元进行预处理。从相机处理单元输出的就是一幅数字图像。

       如果相机要求以模拟格式输出视频,我们就必须对该数字原始图像进行相应转换。然而这个问题与本文所讨论的“彩色相机如何工作”并无关联。我们只需考虑数字格式的原始图像。


3CCD彩色相机

      你可以说CCD芯片将光子转换为电子,在这一过程当中,光子数目与电子数目互成比例。但光子还有另外一个特征值——波长,而这条信息却没有在这个过程中被转换为电子。因此,从这个意义上说,CCD芯片都可以被称为色盲。

       如果我们需要相机内的图像处理单元在每个像素上都输出红、绿和蓝三种颜色分量的值,就必须给这三种基色中的每种颜色都配置一个CCD。每个CCD都只得到过滤后一个颜色分量的光子,即一个CCD用于红光,一个用于绿光,一个用于蓝光。我们用三棱镜将这三种颜色分离开来。


      这个简单的解决方法在实际应用中可以得到非常理想的效果。但它有一个重要的缺点——价格昂贵。因此人们早已开始研发基于一个CCD的设计理念彩色相机。下节将介绍最常用的一种。


单CCD彩色相机

       如果考虑到价格因素,我们只能使用一个CCD芯片,那么我们就得把彩色滤光片象马赛克一样分布在CCD所有的像素上。这一概念也被称为马赛克滤光片或拜尔滤光片(最初由拜尔先生发明)。

      这样一来,每个像素只能产生红、绿或蓝三色当中一种颜色的值。但是在输出时,所有像素都应该有这三种颜色的信息。我们应该如何找回其余两种被滤除的颜色分量值呢?

     答案是由相机处理单元执行的空间色彩插值法。以下图中左下角的红色像素为例,我们需要的是被滤除的绿色与蓝色的值。而插值法通过分析与这个红色像素相邻的像 素可以估算出这两个值。在本例中,我们发现绿色像素含有大量电荷,但蓝色像素电荷数为零。因此这个红色像素实际上是黄色的。在稍后的色彩插值一节中您将可以了解到有关色彩插值的详细信息。



      如果对3CCD相机生成的3幅数字原始图像与单CCD相机生成的3幅数字始图像进行比较,我们会发现它们看起来完全相同。但这仅仅对我们这个简化的例子是成立的。在实际应用中,即使最好的彩色空间插值法也会产生低通效应。因此,单CCD相机生成的图像要比3CCD相机或黑白相机的图像模糊,这点在图像中有超薄或纤维形物体的情况下尤为明显。



用于成像与测量的单CCD相机

成像

      在原理一节中,我们已经了解了用于成像的单CCD彩色相机的工作原理。马赛克滤光片(亦被称作拜尔滤光片)使得每个像素只能显示红、绿或蓝当中的一种颜色。但由于我们希望相机能在每个像素都输出红、绿和蓝这三种颜色,相机的处理单元需要插入缺失色彩的值。在色彩插值一节您可以了解更多详细内容。



       这一方法的显著优点在于它能节省成本。此外,今天的单CCD相机的质量也惊人的好。因此,绝大多数彩色相机都采用此项技术。


测量

在以测量为目的图像应用领域,色彩插值法有重大的缺点:

? 每个像素都具有红、绿和蓝的色彩值,但这三个值中只有一个真正来自CCD。其它两个值都由插值法计算而得,即估算值。
? 这些估算值不但干扰测量过程本身,而且它们对于总线及计算机而言都会增加不必要的负载。

       在图像测量应用领域,我们认为将色彩插值关闭并把从CCD获得的电荷直接转换为数字原始图像更为有利。

       需要提醒读者注意的是:现在大多数彩色图像处理软件都默认每个像素都有红色、绿色和蓝色值。处理数字原始图像对于我们当中的大多数而言都还比较陌生。因此,我们在色彩插值一节中更详细地介绍处理数字原始图像的基本原理。




色彩插值(用于成像)

概述

        在原理一节中,我们通过一个例子介绍了色彩插值的原理。为了让该例简单明了,三幅生成的图像(数字原始图像的三色被分离后的图像)都是理想化的。

        下面我们将详细介绍两种简单的插值处理。一开始我们将使用在用于成像与测量的单CCD相机(测量)一节中介绍过的数字原始图像。为了简单起见,该数字原始图像、它的源图及拜尔滤光片都被列于下图。


复制临近像素法

       填补缺失的色彩值的最简单方法就是从临近像素中获取色彩值。让我们以第二行第一个绿色像素(来自拜尔滤光片)为例(如下图中被加粗黑框之像素所示)。


       在源图像中该点实际是红色的(见概述),但经拜尔滤光片绿色像素过滤后色彩值变为零。我们只需要把临近红蓝像素中的红色与蓝色值(见上图)复制到该像素中,就能获得其RGB值(255,0,0)。

       就上图所示例子而言,插值法产生了正确的RGB值。但在实际应用当中,对于静止图像,这种简单的插值法所生成的结果是不可接受的。但由于它并不耗费多少时间,我们可以将其用于对质量标准要求不高的视频数据流中(例如视频预览)。


临近像素均值法(双线性插值)



       我们可以对“复制插值法”作出的第一个改进就是使用若干临近像素的均值。如图所示,这种方法同样可以得到正确的RGB值(255,0,0)。

       但第二个例子指出了均值法的一个重大缺陷:均值法有低通特性,并由此将清晰的边界钝化。RGB值本应是(255,0,0),但实际上变成了(255,128,64),因此该点变成了棕橙色。

       今天相机中所使用的插值法的性能要大大高于前面介绍的这两种基本方法。A Study of Spatial Color Interpolation Algorithms for Single-Detector Digital Cameras一文 对这些算法做了很好的介绍和比较。

       一般情况下现场工程师不大可能选择或改变一个普通彩色相机的插值法。为了提供给用户更大的灵活性,
The Imaging Source 提供一系列不带插值处理功能的彩色相机,如1394相机中的 DBK 21F04, DBK 21AF04, DBK 21BF04, DBK 31AF03, DBK 31BF03, DBK 41AF02和DBK 41BF02,以及USB2.0相机中的 DBK 21AU04, DBK 21BU04, DBK 31AU03, DBK 31BU03, DBK 41AU02 及 DBK 41BU02。它们尤其适用于需要自行处理原始图像数据的用户。



色彩还原(用于测量)

概述

       在用于成像与测量的单CCD相机一节中,我们了解到经过插值处理的图像并不适用于以测量为目的的实际应用。其原因可以通过下图中的例子予以解释。

       源图像由色彩及其相近的两个区域组成。左半边像素的RGB值为(0,255,128),右半边的像素值为(0,255,144)。


对经过插值处理的图像进行还原处理



       上图显示了我们对源图像进行插值处理后的结果。为了简化运算,我们使用在色彩插值一节中介绍过的均值插值法(双线性插值法)。结果得到红、绿、蓝三色的三幅图像。

       柱状图是一种区分图像区域的经典方法。如右图所示,红色分量图只有64个灰度级为0的值,而绿色分量图中只有64个灰度级为255的值。因此,这两幅图对于区分不同区域起不到任何作用。

       只有蓝色分量柱状图显示出一个介于32个128值与24个144值之间的“谷值”。8个灰度级为136的值就是色彩插值低通效应的结果。这一效应使得原本清晰的边界变得模糊。


对数字原始图像进行还原处理

直接对数字原始图像进行柱状图分析有如下两点优势:

? 可以省去占总量三分之二的冗余信息。
? 由于没有使用插值处理,诸如边界模糊之类的干扰得以避免。

      三幅柱状图再次表明红色和绿色图对于我们的分析没有意义。蓝色柱状图则再次准确的反映了源图像的关系。

      也许会有人反对说,均值插值法(双线性插值法)今天已不再被应用,因为人们已经开始使用比它高效得多的算法。但效率应与成像质量优化问题联系在一起考虑,而且其中起评判标准的作用的是人类的视觉系统。所以如果从测量应用的角度出发,高效的插值法会在图像还原时导致不同类型的干扰。

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

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

相关文章

Linux 系统常用命令汇总(二) vi 文本编辑

文本编辑vi命令作用文件名编辑文本文件,若文件不存在同时创建该文件Ctrlf向后翻一页Ctrlb向前翻一页Ctrld向后翻半页Ctrlu向前翻半页光标移动到下一行-光标移动到上一行数字空格光标向右移动n个字符0移动到本行首个字符处$ 移动到本行最后一个字符处H光标移动到屏幕…

图像处理与计算机视觉:基础,经典以及最近发展(2)图像处理与计算机视觉相关的书籍

1. 数学 我们所说的图像处理实际上就是数字图像处理,是把真实世界中的连续三维随机信号投影到传感器的二维平面上,采样并量化后得到二维矩阵。数字图像处理就是二维矩阵的处理,而从二维图像中恢复出三维场景就是计算机视觉的主要任务之一。这…

【HTML学习】——HTML常见标签属性和方法介绍

目录 1、HTML分块--------< div> 2、HTML段落--------< p> 3、HTML标题--------< h1>…< h6> 4、HTML链接--------< a> 1)< a href“http://www.baidu.com”>百度< /a>&#xff08;点击百度&#xff0c;直接跳转到网页&#xf…

开发者应警惕的七种糟糕职业规划错误

那些心灵鸡汤式的说辞总爱美化失败&#xff1a;失败是成功之母啦、失败使人成长啦、别畏惧失败等等。但事实上&#xff0c;这种思路在软件开发领域也许并不适用——至少不完全适用。每位开发者在职业生涯中都不可避免会遭遇失败&#xff0c;但为什么不从他人的经验中汲取教训来…

Splay模板

打LCT的时候发现Splay很不熟, 因此这里贴一下模板 洛谷P3369 https://www.luogu.org/problem/show?pid3369#sub /* 提一些要注意的点: 1. 注意判断边界, 不要访问到空节点 2. 每一次操作或访问完以后, 记得要splay到root 3. insert操作只要update当前节点和父亲节点即可, 因为…

图像处理与计算机视觉 基础、经典以及最近发展

申明&#xff1a;本文非笔者原创&#xff0c;原文转载自&#xff1a;http://blog.csdn.net/liuyue2046/article/details/12658441 ***************************************************************************************************************************************…

【HTML学习】——一个网页HTML编程的构成

目录 1、html网页构成介绍 2、HTML标签介绍 全部的html标签&#xff1a; HTML: HyperText Markup Language | MDNhttps://developer.mozilla.org/en-US/docs/Web/HTML 一个网页文件一般由.html结尾的文件组成&#xff0c;主要由不同的标签对和内容组成&#xff0c;常见的html…

hbase里插入big int数据用Phoenix查看的报错问题

Phoenix建表create table "test_big_int"("ROW" varchar primary key,"ci"."column1" bigint) 在hbase里put数据hbase 里面进行put: put test_big_int,001,ci:column1,1 在Phoenix里进行查看&#xff08;问题出现&#xff09;第二个尝…

机器学习:利用卷积神经网络实现图像风格迁移 (一)

相信很多人都对之前大名鼎鼎的 Prisma 早有耳闻&#xff0c;Prisma 能够将一张普通的图像转换成各种艺术风格的图像&#xff0c;今天&#xff0c;我们将要介绍一下Prisma 这款软件背后的算法原理。就是发表于 2016 CVPR 一篇文章&#xff0c; “ Image Style Transfer Using Co…

jquery中attr和prop的区别

在高版本的jquery引入prop方法后&#xff0c;什么时候该用prop&#xff1f;什么时候用attr&#xff1f;它们两个之间有什么区别&#xff1f;这些问题就出现了。 关于它们两个的区别&#xff0c;网上的答案很多。这里谈谈我的心得&#xff0c;我的心得很简单&#xff1a; •对于…

博客园自定义样式

碎碎念&#xff1a; 已经很长时间没有更新过博客了&#xff0c;分析一下&#xff0c;一个是太懒了。。。所以很久没整理一下了。还有就是嫌弃博客园默认的博客界面真的太丑了&#xff0c;作为颜控的我真的无法忍受啊。个人比较喜欢用makedown来编写博客&#xff0c;但是博客园自…

【CSS】——cascading stylesheets层叠式样式表

目录 0、CSS介绍 1、CSS语句组成 2、CSS选择器的选择方式 1&#xff09;CSS选择器的方式和选择器大全&#xff1a; 2&#xff09;常见的三种方式&#xff1a; 3、添加CSS方式 1&#xff09;外部样式表 html调用css代码 css文件 html文件 展示 2&#xff09;内部样式表…

四 Apache Axis2 部署 WebService

最新版本1.7.4发布日期2016-10-21 Axis2官网下载如下文件&#xff1a; axis2-1.6.2-bin&#xff1a;二进制的axis axis2-1.6.2-docs&#xff1a;帮助文档 axis2-1.6.2-war&#xff1a;axis.war 文件 axis2-eclipse-codegen-plugin-1.6.2&#xff1a;Eclipse axis client 插件 a…

安装OpenCV:OpenCV 2.4.8或OpenCV 2.4.9 +VS 开发环境配置

因为读研期间的研究方向是图像处理&#xff0c;所以浅墨这段时间闭门研究了很多OpenCV和图像处理相关的知识与内容。眼看自己积累到一定的程度了&#xff0c;于是决定开始开设这个OpenCV系列专栏&#xff0c;总结自己所学&#xff0c;也分享知识给大家。 好了&#xff0c;这篇文…

powerdesigner中如何在自动生成建表SQL时添加模式名schema

1、在主菜单中选择“模型”→“users and roles”→“users”&#xff0c;新增一个user&#xff0c;其中"name"字段就是要添加的模式名。 2、在新增表时&#xff0c;在表属性的“general”页签中选择"owner"&#xff0c;选择刚才新增的user&#xff0c;即可…

spark 免密码登录- ssh 指定非22端口

vi /etc/profile在profile 文件最后一行加入命令&#xff1a; export SPARK_SSH_OPTS"-p 7315" #注&#xff1a;7315 是ssh 端口转载于:https://www.cnblogs.com/chengjunhao/p/8336086.html

【django学习】——Django介绍和实战(开发简易版博客网页)

目录 0、视频链接 1、环境配置 2、django基本命令 1&#xff09;常见命令 2&#xff09;数据库相关的Django命令 3、Django项目 1&#xff09;Django创建项目 2&#xff09;项目目录介绍 3&#xff09;运行初始化的Django项目 4、Django应用 1&#xff09;Django项目和Djan…

求最大子数组03

题目: 返回一个二维整数数组中最大联通子数组的和。 要求&#xff1a; 1. 输入一个二维整形数组&#xff0c;数组里有正数也有负数。 求所有子数组的和的最大值。要求时间复杂度为O(n)。 2.程序要使用的数组放在一个叫 input.txt 的文件中&#xff0c; 文件格式是: 数组的行…

warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead.

使用VS2005以上版本&#xff08;VS2005、VS2008、VS2010&#xff09;编译在其他编译器下正常通过的C语言程序&#xff0c;你可能会遇到类似如下的警告提示&#xff1a;引用内容 warning C4996: strcpy: This function or variable may be unsafe. Consider using strcpy_…

纠错——【Singleton array array(0.2) cannot be considered a valid collection.】

# 将数据集按照比例划分为训练集和测试集 def split_datas(datas,labels,random_state1,train_size0.9,test_size0.1):train_data, test_data, train_label, test_label sklearn.model_selection.train_test_split(datas,labels,random_staterandom_state,# 作用是通过随机数来…