作者:ts6969
转自:http://bbs.ednchina.com/BLOG_ARTICLE_2021656.HTM
作者:刘旭晖 Raymond转载请注明出处
Email:colorant@163.com
BLOG:http://blog.csdn.net/colorant/
主页:http://sites.google.com/site/rgbbones/
1 综述
说到驱动编程和调优的辅助工具,我想说的不是像source insight 或Visual Studio这类的代码阅读开发工具,也不是像GDB Oprofile Strace之类的代码跟踪调试工具。
我所说的辅助工具,更多的是指针对各种各样类型的硬件,以硬件开发调优和测试为目的,提供数据来源,数据仿真,数据抓包,提供测试用例,进行数据转换,格式转换等等各类辅助用途的工具。
这其中多数是一些现成的工具,也有些是为了方便,自己编写的一些小程序或应用。
也许有些工具,你从来不曾用过,也同样能完成自己的工作,或者出于麻烦,不愿意去学习了解相关的知识。但是要成为一个专业的驱动开发者,我始终认为,只有认真学习相关硬件以及所涉及的子系统和应用领域,深入掌握其相关背景知识,才能真正开发出高效,有用的驱动,才能真正发挥硬件的所有潜在能力,从硬件能力软件应用的背景等角度去系统的思考驱动的框架结构。而不仅仅是简单的把硬件Run起来,做些修修补补的工作。
这篇说的是图形图像类的工具,通常会在LCD,Camera,TVOUT等驱动开发过程中使用到。有些工具需要你对一些相关知识有些了解。应该说,了解一些图像处理,以及光学等方面的原理,对于驱动的开发调试常常会起到事半功倍的指导性作用。至少能让你自己显得更专业些 8 )
2 颜色校准类:
2.1 LCD校准工具
校准你的PC显示器,应该是严肃的对待图像处理相关的工作第一步需要做的事吧。因为通常显示器都会有一定的偏色。不论你所做的驱动工作是调整LCD的颜色,对比度,gamma曲线,以期获得理想的显示效果,还是调整摄像头的相关参数,希望得到真实的成像效果。你都不可避免的,或者使用PC的显示器作为参照,对比显示效果,或者用PC检查摄像头的成像结果。要做到客观科学,就要求你的PC显示器本身所呈现的图像效果是标准的,真实的,这也就要求你对显示器进行校准。
最好的工具之一当然是Spyder,俗称蜘蛛。这是一套硬件工具,在使用时,由一个感光组件吸附在显示屏幕上,运行配套的软件,采集屏幕发出的色彩亮度信息,生成校准数据,以颜色配置文件的形式对屏幕进行校准。蜘蛛有不同的规格,价格从数百到数千不等,我只用过最便宜的Express版本。
此外,如果实在搞不到蜘蛛,也可以使用Photoshop中的色彩校正功能,按照步骤,进行校正,这种方法存在较大的主观因素的影响。
2.2 颜色采样软件
很多场合,我们会想知道图像上某一点的具体颜色值是多少,例如分析camera拍摄的色板图像等。 使用Photoshop当然是可以的,不过,毕竟有些大材小用。可以找到很多颜色采样的小软件,例如下面这个Color Cop。
不过需要注意一点的是,有些图像编辑显示软件在显示图像时,会根据图像内嵌的ICC文件等在显示时对图像色彩进行校正,所以用屏幕捕捉工具捕获的颜色值,可能会和图像编辑软件取得的色彩值不同。
2.3 色度分析计
调试LCD驱动时,与PC的LCD进行比对,毕竟是一种主观的间接的方法,如果想要精确的分析LCD的色彩,亮度指标,可以使用色度亮度分析计。类似下面这样的东西:
它的主要功能就是测量发光体的亮度值和色度信息。使用时,可以让LCD显示例如红、绿、蓝、黑、白等纯色图像,用它采集LCD的亮度和色彩值。然后和理论标准值进行比对,进而调整。
这玩意用过几次,确实不错,不过价格不便宜。。。
2.4 标准灯箱
如果你做过Camera驱动,或者你对摄影有一些兴趣,那你应该听过白平衡这样一个概念。简单的来说,物体显示的颜色,和它所处的环境光源是有密切联系的。标准灯箱,就是用来模拟几种常见的光源环境。不同的灯箱有不同的用途,我所用过的灯箱可以模拟例如标准日光,日光灯光等光源。
标准灯箱的应用领域很广了,对于我来说,主要是用来调试Camera驱动的各种白平衡设置,以及标准光源下Camera的各种色彩相关的寄存器的设置。
3 颜色转换类
颜色转化,严格地说是色彩空间的变换,其包含的内容是很广泛的,也是很复杂的一门科学。常见的转换包括例如从RGB色彩空间转换为打印领域常用的CMYK色彩空间等。
3.1 YUV2RGB
对于驱动开发来说,最常遇到的应该是RGB和YUV色彩空间的转换了。在图形显示,Camera数据采集等等场合都可能会遇到RGB和YUV的转换问题。
实际上YUV本身也存在很多不同的标准,所以RGB和YUV的转换公式会有好多种,在数字领域,常见的应该还是RGB到YCrCb的转换。
没有找到很简单的工具直接计算色彩值,所以我用Excel表格制作了一个转换工具,填入RGB或YUV值,就能得到相对应的色彩值。
上传到CSDN了:计算YUV转RGB的EXCEL表格
4 图像转换类
4.1 格式转换
图像格式的转换,如果是各种图形格式之间的转换,那么有很多工具可以实现,最简单常用的不外乎就是Acdsee了。
除了这类图形格式的转换,在驱动开发中,最常用的应该还是将一幅图像转换成二进制的RAW数据,用于直接在LCD上显示,这类工具我最常用的就是Image2Lcd了。
Image2Lcd能够将图像转换成LCD显示所需的点阵数据,可以设置输出数据的色深和颜色分量的排列顺序。也可以将数据输出成C语言数组的形式。
5 图像分析类
5.1 色板
标准色板,我认为是调试Camera类的驱动不可缺少的工具,常用的是这种24色的标准色板
进口的这种色板价格可不便宜,大概要100-200美金吧。没有找到合适的国产替代品。这24个色块是很有代表性的颜色,下面6个是灰阶,上来6个是三原色和三补色。其它还有一些肤色啊CMYK啊之类的颜色。
5.2 灰板
灰板主要用来调整白平衡和进行曝光测试。相对而言比较便宜,几十块钱就能搞定了。很多摄影爱好者还随身携带一块呢。
5.3 色板数据分析工具
有个很牛的软件叫 Imatest,通常很多数码媒体评测相机或镜头时都会使用这个软件。它的功能很多了,包括测试MTF曲线,镜头光场变形等。
对于我来说,在Camera驱动中,可以用它来分析拍摄得到的色板数据,进而调整摄像头的gamma曲线,对比度设置,颜色空间变换设置等参数。下面是一个分析色板底部6个灰阶块的亮度信息,计算Gamma值的示例:
5.4 其它分析工具
其它还有一些辅助图表,工具等是用来测试镜头的分辨率,形变等,这个在小的摄像头上基本上就用不上了,因为即使测了,也没法做什么改变 8 ) 这个是由硬件本身决定的。
6 其它
6.1 Gamma曲线计算工具
很多LCD,Camera Sensor都会有gamma曲线的寄存器设置,不过,通常不同的厂商,gamma曲线的寄存器的设置方式都不一样,有的是分段取点,有的是分段取斜率。
不过,最基本的,第一步总是需要计算,对应于多少的gamma值,曲线上的数值应该是多少。这个我也没有找到现成的工具,还是用excel表格制作一个简单的计算工具如下,对应曲线上的数值输出为十进制和十六进制:
上传到CSDN了:Gamma曲线计算工具
6.2 DisplayX
这是一个很小的显示器测试软件,主要用来测试颜色,清晰度,聚焦,延迟等等。本来和驱动开发没什么关系,不过,它的测试项目很有代表性,自己写LCD驱动的测试程序时可以参考它的测试项目编写测试用例。