具体实施方式
各种实施例针对的是根据景物的单个数字图像计算照相机的逆响应函数的方法和系统,其中景物的实际色彩事先未知。这些实施例分析对应于景物的两种色彩之间的“边缘”的图像像素。“边缘”像素具有表示从这两种“组成”色所形成的混合色彩的值,这由照相机来测量。照相机的响应函数导致所测量的混合色彩对于其测量的组成色是非线性的。下面所述实施例可至少部分地通过找到边缘像素并确定将边缘像素的混合色彩和所测组成色映射到线性分布的函数,来确定逆响应函数。下面描述几个实施例。
图2所示是根据一个实施例,能从单个图像确定逆响应函数的校准系统201的框图。在这个例子中,系统201包括边缘像素检测器203、色彩分析器205、逆响应估计器207,以及包括从几个实际照相机收集到的逆响应函数数据的数据存储209。该逆响应数据的集合此处也被称作参考数据。在一个实施例中,逆响应函数数据包含响应函数数据库(DoRF),如Grossberg,M.D.和Nayar,S.K.所描述的“Whatis the Space of Camera Response Functions(什么是照相机响应函数空间)”,Proc.IEEE Comp.Vision and Pattern Recognition(可视化与模式识别)(CVPR’03)-第2卷,2003年6月,602~609页。在某些实施例中,校准系统201的上述元件可被实现为软件组件。
在一个实施例中,边缘像素检测器203被配置成找出数字图像108中的边缘像素,在每个像素图像中,一个区域有一种色彩,而另一个区域有另一种色彩。这些像素的每一个表示从两种色彩衍生出的混合色彩,该两种色彩用作混合色彩的组成色。
在一个实施例中,色彩分析器205被配置为获取由边缘像素检测器203所发现的像素的混合以及组成色的测量。而且,在这个实施例中,逆响应估计器207被配置成生成将所发现像素的混合以及组成色的测量映射到线性分布的逆响应函数。校准系统201的一个实施例如下文结合图3所描述地用于确定逆响应函数。
图3依照一个实施例,示出校准系统201(图2)在根据单个图像确定逆响应函数时的操作流程。下面结合图2和3来描述这个示例操作流程。
在块302,系统201找出数字图像108(图1)中的边缘像素。在这个实施例中,边缘像素检测器203找出数字图像108中的边缘像素,以形成观察集。如前述,边缘像素是对应于景物106的两种色彩之间的“边缘”的像素。该边缘像素具有表示从这两种“成分”色彩所形成的混合色彩的值,这由照相机测量。
图4示出了示例边缘像素,其示出了像素的3×3的块400。块400左上角中的像素401具有单色,这由“对角线”阴影表示(这里被称作第一色彩)。另外,块400中在像素401下的两个像素具有相同的第一单色。相反,块400右上角中的像素403具有不同的单色,这由“点”阴影表示(这里被称作第二色彩)。像素403下的这两个像素也具有相同的第二单色。块400中心列内的像素405、407和409具有第一和第二色彩区两者,这样,其在这里被称作边缘像素。第一和第二色彩这里也被称作边缘像素405的组成色。边缘像素405输出从第一和第二色彩的组合形成的“混合”色彩。
在一个实施例中,边缘像素检测器203包括Canny边缘检测器(见Canny J.,的“A Computational Approach to Edge Detection(边缘检测的一种计算方法)”,IEEE Trans.Pattern Analysis and Machine Intelligence(模式分析和机器智能),第8卷,第6号,1986年6月,679~698页),以检测边缘像素。在另一个实施例中,可使用不同的边缘检测器。
在块304,获取边缘像素的每个区的测量色彩。在这个实施例中,色彩分析器205被配置成通过使用具有与边缘像素中的组成色相同色彩的非边缘像素而从每个边缘像素获取测量的混合色彩。例如,对边缘像素405而言,色彩分析器205可使用像素401的测量色彩,用于边缘像素405的第一色彩区的测量色彩。同样的,色彩分析器205可使用像素403的测量色彩,用于边缘像素405的第二色彩区的测量色彩。
此外,在这个实施例中,色彩分析器205确定边缘像素是否适用于确定逆响应函数。例如,在一个实施例中,色彩分析器205确定以下情况:(a)第一和第二色彩的色彩方差(相对于欧几里德RGB距离)是否在指定的阈值内(即,第一和第二色彩是充分均匀的);以及(b)第一和第二色彩的平均色彩彼此之间是否至少为指定距离(即,第一和第二色彩被分得足够开,以减少效应图像噪声)。另外,在这个实施例中,忽略包含具有第一和第二色彩所划定范围外部的混合色彩的边缘像素的边缘区(这里也称作边缘窗口)。在其它的实施例中,色彩分析器205可使用不同的方法来获取边缘像素组成色的测量色彩。
在块306,获取边缘像素的测量色彩。在这个实施例中,色彩分析器205被配置成从每个边缘像素获取测量的混合色彩。可以示出,在理想的情况下,混合的色彩将位于RGB色空间中连接其组成色的线段上。图5中示出了一个例子,其中,图4的边缘像素被绘制在了RGB空间中。点501表示RGB空间中像素401的色彩,点503表示RGB空间中像素403的色彩。这些色彩是块400中边缘像素的组成色(图4)。点505表示RGB色彩空间中边缘像素405的色彩;点507表示RGB色彩空间中边缘像素407的色彩,依此类推。如图5所示,像素405、407和409的色彩(分别用点505、507和509表示)位于连接像素401和403的色彩(分别用点501和503表示)的线段上。
然而,在当前市场上可购买到的照相机中,边缘像素的测量色彩相对于其测量组成色是非线性的。图6中示出一个例子。点601表示RGB空间中像素401(图4)的测量色彩,且点603表示RGB空间中像素403(图4)的测量色彩。这些测量色彩是块400(图4)的边缘像素的测量组成色。点605代表RGB色彩空间中边缘像素405(图4)的测量色彩;点607表示RGB色彩空间中边缘像素407的测量色彩,依此类推。如图6所示,边缘像素405、407和409的色彩(分别用点605、607和609表示)位于连接像素401和403的测量色彩(分别用点601和603表示)的曲线段上。
在块308(再次参考图1和3),确定线性化(如将测量的非线性测量色彩映射到RGB色彩空间中的线性分布)测量的混合色彩和其组成色的函数。在一个实施例中,色彩分析器205确定线性化测量的混合色彩及测量的组成色的函数g。此外,在一个实施例中,色彩分析器205可被配置成归一化线性化函数g的定义域和上域(co-domain),以使g(0)=0,g(1)=1,以考虑放缩差异。
此外,在这个实施例中,逆响应生成器207然后使用线性化函数g以及来自数据存储209的参考数据,以生成逆响应函数211。在一个实施例中,参考数据被用来在非完整色彩数据的区间上对线性化函数g进行内插和外插。在一个替换实施例中,线性化函数g可被用作照相机的逆响应函数,这样就不必实现逆响应生成器207和数据存储209。下面结合图9描述确定逆响应函数的操作流程的一个实施例。通过这种方式,校准系统201可有利地从单个图像中找到逆响应函数。此外,不必事先已知实际的景物色彩。这样,校准系统201不需要照相机,或由照相机捕捉的多个图像,或用来捕捉图像的曝光设置的任何知识,以找到逆响应函数。
尽管结合图3顺序描述了上述操作流程,但是在其它的实施例中,能以不同的顺序和/或并行地执行操作。
图7和8用图形示出了线性化所测量的边缘像素色彩的简化例子。在图7中,点701表示RGB空间中边缘像素的一个组成色的测量色彩(也称作M1)。点703表示RGB空间中边缘像素的其它组成色的测量色彩(也称作M2)。点705表示边缘像素的测量的混合色彩(也称作Mp)。如可在图7中所看到的,由于用于捕捉景物的照相机的非线性响应函数,曲线将点701、703和705连接起来。曲线706、708和710表示具有不同于点705所表示的测量的混合色彩(Mp)的组成色的其它边缘像素的测量色彩的分布。在一个典型的图像中,会有更多这样的曲线,但是图7中仅示出这些少数曲线,以避免引起图中的混乱。
如上所述,色彩分析器205然后确定线性化测量的混合色彩和测量的组成色的函数。理想情况是,该函数将与每个边缘像素相关联的测量色彩(即测量的组成色和测量的混合色彩)映射到线段。
图8中示出一个例子,其具有被称作函数g的线性化函数。点801表示由线性化函数g转换之后RGB色彩空间中点701的色彩(图7)。换言之,点801表示在应用线性化函数g,即g(M1)之后测量的组成色(即,M1)的RGB色彩空间内的色彩。类似地,点803表示在应用线性化函数g,即g(M2)之后其它测量的组成色(即,M2)的RGB色彩空间内的色彩。点505表示在由线性化函数g,即g(Mp)转换之后测量的混合色彩(Mp)的RGB色彩空间中的色彩。如图8所示,被转换的测量色彩M1、Mp和M2(分别用点801、803和805表示)位于线段上。类似地,图7的曲线706、708和710在理想情况下由线性化函数g分别转换成线段806、808和810。
图9是根据一个实施例,块308(图3)在确定线性化测量的混合色彩的函数时的操作流程的流程图。在其它的实施例中,也可使用不同的方法来确定线性化函数。参考图2和3,块308的一个实施例包括如下所述的操作流程。
在块902,使用测量的混合色彩及其对应的测量组成色,可获取似然函数。在这个实施例中,色彩分析器205获取这个函数。更具体地而言,在这个实施例中,色彩分析器205基于每个映射的混合色彩(Mp)到连接其对应的映射组成色(M1和M2)的线段的距离来获取该似然函数。边缘像素的Mp、M1和M2此处也被称作边缘像素三元组。映射的混合色彩到连接该混合色彩的映射组成色的线段的距离d(Mp)可使用如下方程1,从边缘像素三元组来确定。
其中,×是两个向量之间的叉积操作。
每个映射混合色彩的距离和D(g;Ω),可使用如下方程2来确定。
其中,Ω是对应于先前在块302(图3)中找到的边缘像素的边缘像素三元组集合。在某些替换实施例中,方程2可被最小化,以确定逆响应函数,而不使用参考数据。例如,可使用合成方程(resulting equation)既是平滑的又是单调的这样的约束来最小化方程2。然而,在这个实施例中,参考数据用于使用贝叶斯估计技术来确定逆响应函数。
贝叶斯估计技术可使用先验模型和似然函数来确定后验分布。在这个实施例中,由于要最小化距离之和,所以通过对给定逆响应函数g(即p(Ω|g)作为使用方程2的指数分布时边缘像素三元组Ω的似然性进行建模来形成似然函数。这样,似然函数可使用如下方程3来定义。
其中,Z是归一化常数,而λ从经验上一般被设置为104。在其它的实施例中,可使用不同的λ值。
在块904,使用来自数据存储209的参考数据来获取先验模型。在这个实施例中,逆响应生成器207通过对前述使用5个成分的DoRF(即参考数据)执行主成分分析(PCA)转换来获取先验模型(如,见Jollife,I.T.,Principal Component Analysis(主成分分析),Springer Verlag,1986)。在一个实施例中,逆响应生成器207按照前五个主成分来表示参考数据,如下方程4所示。
g=g0+cH (4)
其中,g0=[gR0,gG0,gB0]T,这是平均逆响应;H是其列由前N=5个本征向量组成的矩阵;c=[cR,cG,cB]T,这是表示逆响应函数g=[gR,gG,gB]T的R3×N内的系数向量。
在这个实施例中,逆响应生成器207然后通过从PCA形式的参考数据形成有限高斯混合模型,来获取逆响应函数的模型(如,见McLachlan,G.J.和Basford,K.E.,Mixture Models(混合模型),Marcel Dekker,1988),如方程5所示。
其中,参数αi是混合比例,η(g;μi,∑i)是g的归一化高斯型(方程8)。K在一个实施例中被设置为等于5,这是通过期望最大值(EM)算法而从经验上获取的(如,见Dempster,A.P.,Laird.N.M.和Rubin,D.B.(1977)的Maximum Likelihood fromIncomplete Data via the EM algorithm(with Discussion)(通过EM算法的非完整数据的最大可能性(讨论)),JRSS(B),第39卷,第1~38页)。
在其它的实施例中,可用合适的自定义或市场上可买到的PCA及EM算法工具来预先计算方程4的模型,并将其保存在数据存储209中。在其它的实施例中,可使用不同的技术来获取先验模型。
在块906,使用上述的似然函数和先验模型来获取逆响应函数。在这个实施例中,逆响应生成器207获取逆响应函数。最优化逆响应函数g*是通过找到后验分布的最大概率而获取的。后验分布在贝叶斯估计中被定义为先验模型和似然函数的乘积。这样,最优化逆响应函数g*可使用如下的方程6来找到,这是最大后验(MAP)解。
g*=argmaxp(Ω|g)p(g) (6)
其中,p(Ω|g)和p(g)分别在方程3和5中给出。
通过对方程6取对数,g*也可被写成如下的方程7。
g*=argminλD(g;Ω)-logp(g) (7)其中,在这个实施例中,该方程用Levenberg-Marquardt最优化算法来计算(如,见Press,W.H.,Teukolsky,S.A.,Vetterling,W.T.,Flannery,B.P.的NumericalRecipes in C(用C的数字秘诀),Cambridge University Press(剑桥大学出版社),1992),g的系数被初始化为0。在其它的实施例中,可使用不同的优化算法来找出g*。在一个实施例中,在优化算法收敛后,使用贪心局部搜索来顺序地细化(refine)每一维中的结果(如,见Resende,M.G.C.和Ribeiro,C.C.的Greedyrandomized adaptive search procedures(贪心随机化自适应搜索过程),in Handbookof Metaheuristics(后启发式手册),F.Glover和G.Kochenberger,eds.,KluwerAcademic Publishers,第219~249页,2003)。
尽管结合图9来顺序地描述了上述操作流程,但是在其它的实施例中,也能以不同的次序和/或并行地执行操作。
图10是根据一个实施例,示出校准系统201(图2)中数据流1000的数据流程图。根据如下的一个实施例,从照相机接收到的图像数据流过并被处理,以便可调节图像的色彩。数字图像数据1003被边缘像素提取过程1005接收。在一个实施例中,例如,校准系统201的边缘检测器203(图2)如上述结合块302(图3)描述的在数字图像数据1003上执行边缘像素提取过程1005。边缘像素提取过程1005输出边缘像素数据1007,它对适合进一步处理的边缘像素做出标识(如其边缘窗口显示出足够均匀性的以及组成色分离的边缘像素)。
测量的色彩提取过程1009在边缘像素数据1007上执行。例如,在一个实施例中,色彩分析器205(图2)如上面结合块304和306(图3)所述的在边缘像素数据1007上执行色彩提取过程1009,以获取测量的色彩。测量的色彩提取过程1009输出测量的色彩数据1011。在一个实施例中,边缘像素数据1007包含上述边缘像素三元组的集合Ω。
然后,在测量的色彩数据1011上执行逆响应生成过程1013。例如,在一个实施例中,逆响应生成器207(图2)使用参考数据1015来执行逆响应生成过程1013。在某些替换实施例中,逆响应生成器207不必使用参考数据1015。参考数据1015包含来自真实照相机的逆响应数据,并在一个实施例中,从数据存储209(图2)中检索该参考数据1015。在一个实施例中,如上结合块308所述,执行逆响应生成过程1013,并输出估计的逆响应1017。在一个实施例中,逆响应生成过程1013如结合块902、904和906(图9)所述地使用贝叶斯估计技术,来确定估计的逆响应1017。然后,估计的逆响应1017可用来转换数字图像数据1003,以产生具有更紧密匹配捕捉景物的辐射强度的色彩的图像。
尽管结合图10顺序地描述了上述数据流,但是在其它的实施例中,能以不同的次序和/或并行地在数据上执行这些过程。此外,除上述系统201(图2)之外,图10的过程还可用任何合适的系统或组件来执行。
上述不同的实施例可在校准系统的计算机环境中实现(如图2的系统201)。下面结合附图11来说明适用于校准系统的示例计算环境。
图11示出了通用计算机环境1100,其可用于实现此处描述的技术和/或组件。计算机环境1100仅是计算环境的一个例子,并非暗示对计算机和网络体系结构的使用范围或功能性的任何限制。该计算机环境1100也不应被解释为对示例计算环境1 100中所示的任何一个组件或其组合具有任何依存关系或需求。
计算环境1100包括计算机1102形式的通用计算设备。计算机1102的组件可包括,但不局限于,一个或多个处理器或处理单元1104、系统存储器1106,以及将包括处理器1104的各个系统组件耦合到系统存储器1106的系统总线1108。
系统总线1108表示几种类型总线结构的任一种的一个或多个,这包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用任何多种总线体系结构的处理器或局部总线。作为例子,这样的体系结构可包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局部总线、外围部件互联(PCI)总线(其也被称作Mazzanine总线)、PCI快速总线(PCI Express bus)、通用串行总线(USB)、安全数字(SD)总线或者IEEE 1394(即火线)总线。
计算机1102可包括多种计算机可读介质。这样的介质可以是可由计算机1102存取的任何介质,其包括易失性和非易失性介质,可移动和不可移动介质。
系统存储器1106包括计算机可读介质,其形式为诸如随机存取存储器(RAM)1110这样的易失性存储器;和/或诸如只读存储器(ROM)1112或闪存RAM这样的非易失性存储器。基本输入/输出系统(BIOS)1114包含基本例程,其帮助诸如在启动阶段在计算机1102内的元件之间传递信息,被储存在ROM 1112或闪存RAM中。RAM 1110通常包含可由处理单元1104直接存取和/或当前正由处理单元1104操作的数据和/或程序模块。
计算机1102也可包括其它的可移动/不可移动、易失性/非易失性计算机存储介质。作为例子,图11示出用于读出并写到不可移动、非易失性磁介质(未示出)的硬盘驱动器1116,用于读出或写到可移动、非易失性磁盘1120(如“软盘”)的磁盘驱动器1118,以及用于读出或写到诸如CD-ROM、DVD-ROM或其它光介质这样的可移动、非易失性光盘1124的光盘驱动器1122。硬盘驱动器1116、磁盘驱动器1118,以及光盘驱动器1122中的每一个都通过一个或多个数据介质接口1125与系统总线1108相连。作为选择,硬盘驱动器1116、磁盘驱动器1118以及光盘驱动器1122可通过一个或多个接口(未示出)与系统总线1108相连。
硬盘驱动器及其相关联的计算机可读介质为计算机1102提供了计算机可读指令、数据结构、程序模块,以及其它数据的非易失性存储。尽管例子示出了硬盘1116、可移动磁盘1120以及可移动光盘1124,应当认识到,可储存可由计算机存取的数据的其它类型的计算机可读介质,诸如盒式磁带或其它磁存储设备、闪存卡、CD-ROM、数字多功能盘(DVD)或其它光存储器、随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),以及类似的介质也可用来实现示例计算系统和环境。
任何数量的程序模块都可储存在硬盘1116、磁盘1120、光盘1124、ROM 1112和/或RAM 1110中,这包括例如,操作系统1126、一个或多个应用程序1128、其它的程序模块1130,以及程序数据1132。每个这样的操作系统1126、一个或多个应用程序1128、其它程序模块1130以及程序数据1132(或其某种组合)可实现支持分布式文件系统的所有或部分常驻组件。
用户可通过诸如键盘1134和定位设备1136(如“鼠标”)这样的输入设备将命令和信息输入到计算机1102中。其它的输入设备1138(未具体示出)可包括麦克风、操纵杆、游戏垫、圆盘式卫星天线、串行端口、扫描仪和/或类似的设备。这些和其它输入设备通过耦合到系统总线1108的输入/输出接口1140与处理单元1104相连,但是其也可通过其它的接口和总线结构连接,这诸如并行端口、游戏端口或通用串行总线(USB)。
监视器1142或其它类型的显示设备也可通过诸如视频适配器1144这样的接口与系统总线1108相连。除监视器1142之外,其它输出外围设备可包括诸如扬声器(未示出)和打印机1146这样可通过I/O接口1140与计算机1102相连的组件。
计算机1102可在使用到一个或多个诸如远程计算机1148这样的远程计算机的逻辑连接的网络化环境中工作。作为例子,远程计算机1148可以是PC、便携式计算机、服务器、路由器、网络计算机、对等设备或其它公用网络节点,以及类似的设备。远程计算设备1148被示出为可包括此处相对于计算机1102所描述的许多或全部元件和特征的便携式计算机。作为选择,计算机1102也可在非网络化环境中工作。
计算机1102和远程计算机1148之间的逻辑连接被描述为局域网(LAN)1150和普通广域网(WAN)1152。这样的网络化环境常见于办公室、企业范围计算机网络、内联网和因特网。
当在LAN网络化环境中实现时,计算机1102通过网络接口或适配器1154与局域网1150相连。当在WAN网络化环境中实现时,计算机1102通常包括调制解调器1156或用于通过广域网1152建立通信的其它装置。调制解调器1156对计算机1102而言可为内置或外置的,其可通过I/O接口1140或其它适当的机制与系统总线1108相连。应当认识到,所述网络连接是示例性的,也可使用用于在计算机1102和1148之间建立至少一条通信链路的其它装置。
在诸如用计算环境1100所述的网络化环境中,相对计算机1102描述的程序模块或其部分可被储存在远程存储器存储设备中。作为例子,远程应用程序1158驻留在远程计算机1148的存储器设备中。为阐明起见,应用程序或程序以及其它可执行程序组件,诸如操作系统,在此处被示出为离散的块,尽管可认识到,这样的程序和组件在不同的时刻驻留在计算设备1102的不同存储组件内,且其由计算机的至少一个数据处理器来执行。
此处可用诸如由一个或多个计算机或其它设备执行的程序模块等计算机可执行指令的通用上下文来描述各种模块和技术。一般而言,程序模块包括例程、程序、对象、组件、数据结构,等等,其用于执行特定的任务或实现特定的抽象数据类型。这些程序模块及其类似物可作为本机码执行,或者其可被下载或执行,诸如在虚拟机或其它实时(just-in-time)编译执行环境中。通常,程序模块的功能可如各个实施例中所需要的而被组合或分布。
这些模块和技术的实现可被储存在某种形式的计算机可读介质中,或者通过这样的介质传送。计算机可读介质可以是可由计算机存取的任何可用介质。作为例子,但并非限制,计算机可读介质可包含“计算机存储介质”和“通信介质”。
“计算机存储介质”包括易失性和非易失性、可移动和不可移动介质,这样的介质以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据这样信息的任何方法或技术来实现。计算机存储介质包括,但不局限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光存储器、盒式磁带、磁带、磁盘存储器或其它磁存储设备,或者任何其它可用来保存所需信息并可由计算机存取的介质。
“通信介质”通常在诸如载波或其它传输机制这样的已调制数据信号中包含计算机可读指令、数据结构、程序模块,或者其它数据。通信介质也可包括任何信息递送介质。术语“已调制数据信号”意指以对信号中的信息进行编码的方式改变或设置其一个或多个特征的信号。仅作为非限制性的例子,通信介质包括有线介质,这诸如有线网络或单线连接,以及无线介质,这诸如声学、RF、红外线,以及其它的无线介质。任何上述的组合也可被包括在计算机可读介质的范围之内。
在整篇说明书中,对“一个实施例”、“实施例”或者“示例实施例”给出了参考,这意味着特定的所描述的特征、结构或特性被包括在本发明的至少一个实施例中。这样,这样短语的使用可涉及不止一个实施例。此外,所描述的特征、结构,或特性在一个或多个实施例中能以任何适合的方式来组合。
然而,相关领域的技术人员会认识到,在不具备一个或多个特定细节,或者使用其它的方法、资源、材料等的情况下也可实现本发明。在其它的情况下,未示出或详细说明公知的结构、资源或操作,这样做仅仅是为了避免模糊本发明的各个方面。
虽然已经阐明了示例实施例和应用,但是应理解,本发明并不局限于上述的精确配置和资源。本领域的技术人员会明显认识到,在不背离要求保护的本发明范围的前提下,可对这里描述的本发明的方法和系统的布置、操作和细节做出不同的修改、变化以及变更。