图像处理灰阶图灰度值减法

2016-09-08 13:49:46 Real_Myth 阅读数 4674
二、 数字图像处理的概念
1. 什么是图像
“图”是物体投射或反射光的分布,“像” 是人的视觉系统对图的接受在大脑中形成的印象或反映。
 
是客观和主观的结合。
2数字图像是指由被称作象素的小块区域组成的二维矩阵。将
   物理图象行列划分后,每个小块区域称为像素(pixel)。
    –每个像素包括两个属性:位置和灰度。
对于单色即灰度图像而言,每个象素的亮度用一个数值来表示,通常数值范围在0到255之间,即可用一个字节来表示,
  0表示黑、255表示白,而其它表示灰度级别。

     物理图象及对应
      的数字图象
3彩色图象可以用红、绿、蓝三元组的二维矩阵来表示。

 –通常,三元组的每个数值也是在0到255之间,0表示相应的基色在该象素中没有,而255则代表相应的基色在该象素中取得最大值,这种情况下每个象素可用三个字节来表示。
4什么是数字图像处理
数字图像处理就是利用计算机系统对数字图像进行各种目的的处理
5对连续图像f(x,y)进行数字化:空间上,图像抽样;幅度上,灰度级量化
x方向,抽样M行
y方向,每行抽样N点
整个图像共抽样M×N个像素点
一般取M=N=2n=64,128,256,512,1024,2048
6数字图像常用矩阵来表示:
f(i,j)=0~255,灰度级为256,设灰度量化为8bit

7  数字图像处理的三个层次











8 图像处理:
    对图像进行各种加工,以改善图像的视觉效果;强调图像之间进行的变换;
    图像处理是一个从图像到图像的过程。
9图像分析:对图像中感兴趣的目标进行提取和分割,获得目标的客观信息(特点或性质),建立对图像的描述;
以观察者为中心研究客观世界;
图像分析是一个从图像到数据的过程。
10图像理解:研究图像中各目标的性质和它们之间的相互联系;得出对图像内容含义的理解及原来客观场    景的解释;
以客观世界为中心,借助知识、经验来推理、认识客观世界,属于高层操作(符号运算)
11图像处理、图像分析和图像理解是处在三个抽象程度和数据量各有特点的不同层次上。图像处理是比较低层的操作, 它主要在图像像素级上进行处理, 处理的数据量非常大。图像分析则进入了中层,分割和特征提取把原来以像素描述的图像转变成比较简洁的非图像形式的描述。图像理解主要是高层操作, 基本上是对从描述抽象出来的符号进行运算,其处理过程和方法与人类的思维推理有许多类似之处
12图像工程与相关学科的联系和区别









13数字图像处理的历史与数字计算机的发展密切相关,它必须依靠数字计算机及数据存储、显示和传输等相关技术的发展。
14数字图像处理的应用领域多种多样。最主要的图像源是电磁能谱,其他主要的能源包括声波、超声波和电子(用于电子显微镜)。
15伽马射线成像
伽马射线成像的主要用途包括医学和天文观测。
16 X射线在医学诊断上的应用:(a)X光片(b)血管照相术(c)头部CAT切片图像
X射线是最早用于成像的电磁辐射源之一
X射线在工业和天文学上的应用(a)电路板(b)天鹅座星环
17紫外光的应用多种多样平板印刷技术工业检测 显微镜方法 激光 生物图像 天文观测
18可见光及红外波段成像
这一波段的应用最为广泛,电视和多媒体,光显微镜;涉及的范围从药物到材料特性的检测
天气观测与预报是卫星多光谱图像的主要应用领域;   图像识别
19无线电波段成像主要应用在医学和天文学:在医学中,无线电波用于磁共振成像(MRI)
20超声波图像产生的步骤:
 1.超声波系统向身体传输高频(1~5MHz)声脉冲。
 2.声波传入体内并碰撞组织间的边缘,声波的一部
   分返回到探头,一部分继续传播直到另一边界并被反射回来。
 3.反射波被探头收集起来并传给计算机。
 4. 计算机根据声波在组织中的传播速度和每个回波返回
    的时间计算从探头到组织或者器官边界的距离。
 5. 系统在屏幕上显示回波的距离和亮度形成的二维图像。
21电子显微镜成像:过热损坏的钨丝(250倍);损坏的IC电路(2500倍)
22现状
七十年代以来迅猛发展。
•1:主观需求:人类从外界获取得信息60~70%通过眼睛         的图象信息。
•2:计算机技术的发展和通信手段的发展提供客观可能;以FFT为代表的数字信号处理算法和现代信号处理方法的精确性,灵活性与通用性。
•3:数学化的特点是该学科成熟的一个标志。“一种科学只有在成功地运用数学时,才算真正达到了完美的地步”(分析,代数,几何)
•总之:是一门在理论研究和应用开发两方面获得极大统一的学科。
23发展趋势
  1:结合网络和Internet技术需求而发展起来的新技术,比如网上图像、视频的传输、                     点播和新的浏览、查询手段。
  2:高级图像处理技术,结合最新的数学进展,诸如小波、分形、形态学等技术。
  3:智能化,图象自动分析、识别与理解。
24数字图像处理系统概要
数字图象处理系统由
图象数字化设备、
图象处理计算机和
图象输出设备组成。



输入及数字化设备  •摄象机•鼓式扫描器•平台式光密度计•视频卡•扫描仪•数码相机•DV
显示及记录设备   •图象显示器•鼓式扫描器•图象拷贝机•绘图仪•激光打印机•喷墨打印机
25数字图像处理的主要研究内容
.图像变换: 傅立叶变换/沃尔什变换/离散余弦变换/小波变换
采用各种图像变换方法对图像进行间接处理.有利于减少计算量并进一步获得更有效的处理。
26. 图像压缩编码
图像压缩编码技术可以减少描述图像的数据量,以便节约图像存储的空间,减少图像的传输和处理时间。
图像压缩有无损压缩和有损压缩两种方式,编码是压缩技术中最重要的方法,在图像处理技术中是发展最早和应用最成熟的技术。      
主要方法:熵编码,预测编码,变换编码,二值图像编码、分形编码……
27图像的增强和复原
图像增强和复原的目的是为了改善图像的视觉效果,如去除图像噪声,提高图像的清晰度等。图像增强不考虑图像降质的原因,突出图像中感兴趣的部分。图像复原要求对图像降质的原因有所了解,根据图像降质过程建立“退化模型”,然后采用滤波的方法重建或恢复原来的图像。
       主要方法:灰度修正、平滑、几何校正、图像锐化、滤波增强、维纳滤波……

28 图像分割:图像分割是数字图像处理中的关键技术之一。图像分割将图像中有意义的特征提取出来(物体的边缘、区域),它是进行进一步图像识别、分析和图像理解的基础。
虽然目前已研究出了不少边缘提取、区域分割的方法,但还没有一种普遍适用于各种图像的有效方法。对图像分割的研究还在不断的深入中,是目前图像处理研究的热点方向之一。
        主要方法:图像边缘检测、灰度阈值分割、基于纹理分割、区域增长……
29图像描述:图像描述是图像分析和理解的必要前提。图像描述是用一组数量或符号(描述子)来表征图像中被描述物体的某些特征。
主要方法:二值图像的几何特征、简单描述子、形状数、傅立叶描述子,纹理描述……
30图像识别:图像识别是人工智能的一个重要领域,是图像处理的最高境界。一副完整的图像经预处理、分割和描述提取有效特征之后,进而由计算机系统对图像加以判决分类。
31图像隐藏是指媒体信息的相互隐藏。数字水印\图像的信息伪装
32数字图像处理应用前景:数字图像处理除了通信领域的新应用外,另一个重要领域就是生物医学成像与诊断。
第二章 数字图像处理基础
1人眼的构造:镜头将光线聚焦,并将物体成像到视网膜上,视网膜上有许多光感应器叫做圆锥细胞(6~7百万)和杆细胞(75~150百万),圆锥细胞集中在中央凹周围并对颜色很敏感,而杆细胞比较分散,对低照度比较敏感。
光图像激活视杆体或视锥体时,发生光电化学反应,同时产生视神经脉冲,视觉系统散布视神经中有80万神经纤维,视觉系统传播视神经脉冲。许许多多的视杆体和视锥体相互连接到神经纤维上。
视觉系统的可视波长范围为  =380nm~780nm;
视觉系统的可响应的亮度范围是:1~10个量级的幅度范围。
生理学已证实,视网膜中有三种视锥体,具有不同的光谱特性,峰值吸收分别在光谱的红、绿、兰区域。吸收曲线有相当多的部分是相互重叠的。这是三基色原理的生理基础。
2视锥细胞和视杆细胞在视网膜上的分布
锥状(cone)视觉:白昼视觉,色彩;
杆状(rod)视觉:夜视觉,低照度敏感。
3人眼的成像:人眼中的肌肉可以用来改变晶状体的形状,并允许我们对远近不同的物体进行聚焦。
而聚焦到视网膜上图像会刺激杆细胞和圆锥细胞,最终将信号发送到大脑。
4物理图像:我们所感知到的颜色是由光的特性被物体反射而决定的,比如,白光照在绿色物体上,大部分被吸收,而只有绿光被物体反射
一般地,图像是由光照作用于场景并被部分的吸收,同时被场景中的物体反射
形成的。
5人眼的视觉特性:视觉是主观对客观的反应,是一种主观感觉。
                视觉包括亮度视觉和彩色视觉。
6人眼的视觉特性-视觉灵敏度
何谓视觉灵敏度呢(视觉效应是由可见光刺激人眼引起的。如果光的辐射功率相同而波长不同,则引起的视觉效果也不同,不仅颜色感觉不同,而且亮度感觉也不同。为了确定人眼对不同波长光的敏感程度,在
产生相同亮度感觉的情况下,测出各种波长
光的辐射功率Ф(λ),则:
光谱光视效能:K(λ)= 1 /Ф(λ)
用来衡量视觉对波长为λ的光的敏感程度。
)
实验表明,当λ=555nm时,有最大的光谱光视效能:        Km=K(555)
任意波长光的光谱光视效能K(λ)与Km之比称为
    光谱光视效率(相对视敏度),用函数V(λ)表示:      V(λ)= K(λ)/ Km
V(λ)也可用得到相同主观亮度感觉时所需各波长光的辐射功率Ф(λ)表示:
            V(λ)= Ф(555)/Ф(λ)
 人眼的视觉特性-彩色视觉
彩色三要素
亮度是光作用于人眼时所引起的明亮程度的感觉。(光功率)
色调是指颜色的类别,是决定色彩本质的基本参量。(光波长)
色饱和度是指彩色所呈现色彩的深浅程度(或浓度)。
色调与色饱和度合称为色度。
 人眼的视觉特性-人眼分辨力
何谓人眼的分辨力呢?
人在观看景物时人眼对景物细节的分辨能力。人眼对被观察物体上刚能分辨的最紧邻两黑点或两白点的视角的倒数称为人眼的分辨力或视觉锐度。














人眼的视觉特性-视觉对比度
图像中最大亮度Lmax与最小亮度Lmin的比值C 称为对比度。   C= Lmax/ Lmin
    例:实际传送的景物亮度200-20000cd/m2,电视屏幕亮度2-200cd/m2
  两者对比度都为100
重现景物的亮度范围无需与实际景物的相等,只需保持二者的对比度相同。
视亮度——在一定背景亮度环境下人的主观亮度感觉。
费涅尔系数(相对对比度灵敏度阈)     ξ=ΔBmin/B
(随着环境的不同,在0.005-0.02范围内变化)
  ΔBmin称为可见度阈值。
人眼的视觉特性-同时对比度
感觉的亮度区域不是简单取决于亮度
相同亮度的方块在不同背景下,感觉亮度不同;位于中心位置的方块亮度相同,当背景变亮时,方块的亮度变暗。
一张白纸放在桌子上看上去很白,但用白纸遮蔽眼睛直视明亮的天空时,纸看起来总是黑的。
7在观察一个亮度渐变的边缘时,发现主观感受在亮度变化部位附近的暗区和亮区中分别存在一条更黑和更亮的条带,称之为“马赫带”。
同时对比度是面积亮度差引起的现象,马赫带是明暗边界引起的现象。
侧抑制效应:视觉信号并不是单纯由一个视觉细胞感觉产生的,而是由相邻视觉细胞信号加权和形成的。
Mach带可用侧抑制机理来解释,可认为是局部空间域内神经细胞之间相互作用的结果。
同时对比度和马赫带效应表明,人所感觉到的亮度并不是强度的简单函数。
人眼的视觉特性-视错觉
人眼的视觉特性-视觉惰性
视觉惰性是人眼的重要特性之一,它描述了主观亮度与光作用时间的关系。人眼亮度感觉变化滞后于实际亮度变化,以及光线消失后的视觉残留现象(称为视觉暂留或视觉残留),总称为视觉惰性。
当有光脉冲刺激人眼时,视觉的建立和
消失都需要一定的过程,光源消失以后,
景物影像会在视觉中保留一段时间。
视觉暂留时间在0.05~0.2秒

     


当人眼受周期性的光脉冲照射时,如果光脉冲频率不高,
则会产生一明一暗的闪烁感觉。如果将光脉冲频率提高到某一定值以上,由于视觉惰性,眼睛便感觉不到闪烁,感到是一种均匀的连续的光刺激。
      刚好不引起闪烁感觉的最低频率,称为临界闪烁频率
8人类视觉感知能力的特点
人类视觉系统在对物体的识别上有特殊强大的功能;但在对灰度、距离和面积的绝对的估计上却有某些欠缺;
以传感器单元的数目比较:视网膜包含接近1.3亿个光接收器,这远远大于CCD片上的传感器单元数;
和它每次执行运算的数目比较:和计算机的时钟频率相比,神经处理单元的开关时间将比之大约慢   倍;
不论这慢的定时和大量的接收器,人类的视觉系统是比计算机视觉系统要强大得多。它能实时分析复杂的景物以使我们能即时的反应。
2.3 颜色的基本概念
1图为光谱图。
可见光的波长大约在380--780nm之间。
可见光区之外,还有红外光区、紫外光区。
在遥感领域中光谱采样通常不限于红外区、可见光区、紫外光区三个波段,即为多光谱图像。
彩色不仅喜人,且可获得更多的信息:
视觉仅能感知十余级灰阶,
彩色感知但却能区分上千种彩色;
2彩色可用下面三个基本属性描述:
色调(Hue):色调表示颜色。
饱和度(Saturation):饱和度是彩色中包含白光的多少。
亮度(Brightness 或Intensity):亮度表示感受到的光强度(Luminance)。
3颜色纺锤体:
颜色纺锤体的垂直轴线上表示列的亮度变化,顶部是白色,
沿着灰度过渡,到底部是黑色。在垂直轴线上越往上亮度越大。
水平的圆周表示色调,圆周上的不同角度的点代表了不同色
调的颜色,如红、橙、黄、绿、青、蓝、紫等。
圆心的色调是中灰色,它的亮度和该水平圆周上各色调的亮度相同。
从圆心向圆周过渡表示同一色调下不同的饱和度。
4三基色原理
吸收光谱响应的峰值分别在光谱的红(黄绿)、绿、兰区域。且吸收曲线有相当多的部分是相互重叠的。这是三基色原理的生理基础。
三基色原理
三基色相加混色:红、绿、兰;(光的三基色)
三基色相减混色:青、黄、品红(颜料的三基色)
相减是指吸收或过滤掉。
R,G是黄色Y,R,B是品红M,G,B是青色C
5光和颜料间的差别:
光和颜料是对立的,然而又互辅相成。
如果没有光的照射,就不能看见物体的颜色,而有色光必须照在不透明的表面上才能看见。
RGB发射光,而CYM反射光。
混合所有色彩光形成白色,混合所有颜料形成黑色。
同时观察这两种模式,RGB模式是CMY模式的对立物, 就像每一种主体部分都是另一种的从属部分。   
利用红(Red)、蓝(Blue)和绿(Green)三种基本颜色,可以配制出绝大部分肉眼能看到的颜色。像彩色电视机的显像管(CRT)以及计算机屏幕,都是以这种方式来混合出各种不同的颜色效果。  
RGB模式混色原理是以加法来混合出各种不同彩色。
6 色彩的描述
颜色的描述是通过建立色彩模型来实现的,不同的色彩模型对应于不同的处理目的。
各种不同的颜色模型之间可以通过数学方法互相转换
7常用的表色系
RGB表色系国际照明委员会(CIE) 规定以700nm(红)、546.1nm (绿)、435.8nm (蓝)三个色光为三基色。又称为物理三基色。自然界的所有颜色都可以过选用这三基色按不同比例混合而成。
RGB模式的混色原理是以颜色加法来混合出各种不同的颜色。
彩色电视机的显像管(CRT)以及计算机屏幕,都是以这种方式来混合出各种不同的颜色效果。
如果采用其他色系进行了处理,最终一定要转换到RGB色系,才能正常显示结果。  
HSI 表色系HSI(HSB)模式是利用色调(Hue)、色浓度(Saturation)以及亮度(Brightness(Intensity))三种基本向量来表示一种颜色。
Hue:色调,沿着色调环从0度(纯红), 120o为绿色,240o为蓝色,再转回360度(纯红)。
Saturation:色彩的饱和度。0 %时为灰色,100 %时为纯色。
Brightness (Intensity):亮度(强度),0 %为黑色,100 %时为白色。
所谓的色调,指的是不同波长的光谱,例如红色和绿色便是属于不同的色调。
色彩的饱和度是指颜色的深浅,例如同样是红色,也会因为饱和度的不同而分为深红或浅红。
亮度(强度)则指的是颜色明暗的程度。
YUV(电视信号)表色系:电视信号发射时,转换成YUV形式,接收时再还原成RGB三基色信号,由显像管显示。目的是为了与黑白电视兼容。在YUV(电视信号)模式中:
Y:亮度;U,V:色差信号。
CMYK表色系白色光也是由三种原色:红、绿、蓝混合而成的。
光谱中原色互补色是淡青色、品红色和黄色。所以用这三种原色构成所有颜色。这三种原色构成了CYM色彩模式。
在CYM色彩模式中,红色是品红色与黄色混合而成,蓝色是淡青色与品红色混合而成的。CYM色彩模式不流行的原因之一是这些深色的原色是不自然的,而且不容易得到。
理论上,利用C、M、Y三种基本色便可以混合为黑色,但是由于考虑到印刷油墨混合的误差,所以再加进一定量的黑色。
CMYK是由青(Cyan)、品红(Magenta)、黄(Yellow)以及黑(Black)四种基本色调配合成各种不同的颜色,一般应用在印刷输出的分色处理上面。
CMYK与RGB所不同的地方,除了组成的基本色不同之外,RGB的合成是采取颜色加法,而CMYK则是采用颜色减法。
Lab表色系它的特色是对色彩的描述完全采用数学方式,与系统及设备无关,因此它可以无偏差地在系统与平台间进行转换。    
Lab模式是以一个亮度分量L(Lightness)——范围是 0-100;以及两个颜色分量a与b来表示颜色。a分量是由绿色演变到红色——范围是 -120-120;而b分量则是由蓝色演变到黄色——范围是 -120-120。
人眼所能看见的光、色之范围较为广泛,由计算机的彩色屏幕按RGB模式或由彩色印刷品按CMYK模式所表示出来的光与色,只不过是其中的一部分。而且像RGB、CMYK和Lab三种模式表现的颜色范围也不相同。
 YCbCr表色系是常用于彩色图像压缩时的一种彩色模式。
Y: 代表亮度;
Cb、Cr:代表色差。
与YUV模式不同的是它充分考虑了色彩组成时RGB三色的重要因素。 YUV考虑的是简单,YCbCr考虑的是压缩时可以充分取出冗余量。
1.简述数字图像处理的研究内容。
2.什么是图像工程?根据抽象程度和研究方法等的不同,图像工程可分为哪几个层次?每个层次包含哪些研究内容?
3.列举并简述常用表色系。
8图像取样和量化
与采样相关的概念(分辨率)
分辨率
  传感器摄像的精确度。通常指要精确测量和再现一定尺寸的图像所必需的像素个数。
  单位:像素*像素
图像的量化与数字图像的质量
空间分辨率是图像中可辨别的最小细节。取样值多少是决定图像空间分辨率的主要参数
灰度级别分辨率是指在灰度级别中可分辨的最小变化。灰度级数通常是 2 的整数次幂。

当没有必要对涉及像素的物理分辨率进行实际度量和在原始场景中分析细节等级时,通常把大小为M×N、灰度为L级的数字图像称为空间分辨率为M×N像素、灰度级分辨率为L级的数字图像。
9图像数字化器的功能组件
采样孔:使图像数字化器能不受图像其他部分的影响,而在整幅图像中扫描特定的独立像素单元 ;
扫描器件:使采样孔以预先确定的方式在图像上移动,按照顺序依次扫描图像的每一个像素;
光传感器:测量每一像素的亮度,将光亮度转化为电流或电压信号;
量化器:将传感器输出的连续值转化为整数值;
输出介质:将量化的灰度值以适当的格式存储。    
10数字化器的性能
分辨率:单位尺寸能够采样的像素数,由采样孔的大小和像素间距的大小决定;
灰度级:量化为多少等级;
图像大小:允许输入图像的大小;
扫描速度:采样数据的传输速度;
11图像数字化器的类型主要包括:数码相机胶片扫描仪
12常用图像数字化设备:数字相机、扫描仪、数字摄像机
13 图像的文件格式
位图文件有多种格式,常见的文件扩展名为BMP、GIF、PCX、PSD、PCD、TIF、JPG等。
矢量图文件的后缀常常是CDR、AI 或3DS
14数字图像通常有两种表示形式: 位图和矢量图
位图和矢量图的比较:
A、点位图由像素构成,矢量图由对象构成
   点位图的基本构图单位是像素,像素包含了色彩信息。包含不同色彩信息的像素的矩阵组合构成了千变万化的图像。矢量图形指由代数方程定义的线条或曲线构成的图形。矢量图像由许多矢量图形元素构成,这些图形元素称为“对象”。
B、点位图面向像素绘画,矢量图面向对象“构画”
C、点位图受到像素和分辨率的制约,而矢量图形不存在这些制约
点位图是由像素阵列构成的图像,像素的多少和分辨率决定图像的质量。点位图的缩放也会影响图像的质量。
 矢量图形和设备无关,即和分辨率无关。
D、点位图修改麻烦,矢量图形修改随心所欲
点位图是像素的排列,局部移动或改变会影响到其他部分的像素(包括前面讲的对图像进行放大)。
在矢量图形中,一个图形对象的改变,不会影响其他图形对象。
E、点位图难以重复使用,矢量图形可以随意重复使用
F、点位图效果丰富,矢量图形效果单调机械  
3.1 图像增强与图像复原概述  
1图像增强(Image enhancement):
运用一系列技术手段改善预处理图像的视觉效果,突出有用的信息,取出或削弱无用的信息。
基于空间域的增强:在图像像素组成的二维空间里直接对每 一像素的灰度值进行处理。
基于频率域的增强:在图像的变换域对图像进行间接处理。
2图像复原:根据事先建立起来的系统退化模型,将降质了
的图像以最大的保真度恢复成真实的景象。
3.2  灰度变换
1灰度变换是图像增强的一种重要手段,它可使图像动态范
围加大,使图像对比度扩展,图像更加清晰,特征更加明显。
实质:按一定的规则修改图像每一个像素的灰度,从而改变
图像灰度的动态范围。
空域处理方法,属于点运算范畴
点运算:算子的作用域是以单个像素为单位,实现的是像素点到像素点的处理。
表达式:

r、s ——输入、输出像素的灰度级;
T ——  灰度变换函数的映射关系;



输出g(x, y)只与位置(x, y) 处的输入f(x, y) 有关。
3.2.1  灰度线性变换
当成像时曝光不足或过度,或成象设备的非线性、图像
记录设备动态范围太窄等因素,都会产生对比度不足的
弊病,使图像中的细节分辨不清,这时可将灰度范围线
性扩展。
1. 图像反转:
将原始图像的灰度值进行翻转,使输出灰度随输入灰度增加而减小。
图像反转变换函数:
当k=1,b=L-1时
反转变换适于增强嵌在图像暗色区域的白色或灰色细节,特别是当
黑色面积占主导地位时。
2. 线性灰度变换
线性变换是对每个线性段逐个像素进行处理,可将原图像灰度值动态
范围按线性关系式扩展到指定范围或整个动态范围
截取式线性灰度变换:





3分段线性灰度变换
为突出图像中感兴趣的目标,将图像灰度区间分成多段分别作线性变换。
将感兴趣图像细节灰度级拉伸,增强对比度,将不需要的细节灰度级压缩。

3.2.2  灰度非线性变换
灰度非线性变换:采用某些非线性函数(如平方、对数、指数函数)等作为映射函数,可实现图像灰度的非线性变换。
对数变换用于扩展低值灰度区域,压缩高值灰度区域,可以使低值灰度的图像细节更容易看清,从而达到增强效果。
指数变换可用来压缩低值灰度区域,扩展高值灰度区域,但由于与人的视觉特性不太相同,不常采用。
3.3  直方图修正
直方图修正是图像增强实用而有效的处理方法。
1. 图像直方图定义:
对图像灰度范围内每-灰度值,统计出具有该灰度值的像素个数,并以灰度值为横坐标,像素数为纵坐标绘出像素数—灰度值图形
直方图纵坐标有时也用某一灰度值的像素数占全图总像素数的百分比(灰度值出现的频数)表示
2.直方图的性质
(1)直方图只反映该图像中不同灰度值出现的次数(或频数),不能反映每一灰度值像素所在位置,即丢失了其所在位置的信息。
(2)任一幅图像,都能算出唯一一幅与它对应的直方图,但不同的图像可能有相同的直方图。即图像与直方图之间是一种多对一的映射关系。
(3)由于直方图是对具有相同灰度值的像素统计计数得到的,因此,一幅图像各子区的直
方图之和就等于该图全图的直方图
直方图的计算在离散的形式下,用rk代表离散灰度级,用P(rk)代表其频数,计算公式如下
                                     
nk——图像中灰度级为rk的像素个数;n——图像中像素总数;l——灰度级的总数目
在直角坐标系中作出rk与P(rk)的关系图形,就得到直方图。
例:假设一幅图像由4X4的二维数值矩阵构成,画出图像的灰度直方图
3.3.3  直方图均衡化
概念:
为了改变图像整体偏暗、整体偏亮、灰度动态范围偏小情况,可将原图像的直方图通过变换函数修正为均匀直方图。
目的:
通过对直方图进行均衡化修正,可使图像灰度均匀分布,增大反差,使图像的细节变得更清晰,达到增强的目的。
 
对于数字图像, [0,1]量化成 l 个灰度级rk ,k =0,1,2 ,…, l-1, 0≤ rk≤ 1 ,
灰度级 rk 出现的频数(概率): pr(rk)=nk/n
nk——图像中灰度级为rk的像素个数;n——图像中像素总数
计算 rk  的累积概率函数得离散形式变换函数:

    
    

    
几点结论:
(1)利用累积分布函数作为灰度变换函数,经变换后得到的新灰度的直方图比原始图像的直方图平坦得多,而且其动态范围也大大地扩展了。因此这种方法对于对比度较弱的图像进行处理是很有效的。
(2)对于数字图像,因为直方图是近似的概率密度函数,所以用离散灰度级作变换时很少能得到完全平坦的结果,数字图像的直方图均衡只是近似的。
(3)变换后的灰度级减少了,这种现象叫做“简并”现象,这是像素灰度有限的必然结果。
3.4  图像平滑  
一幅图像可能存在着各种噪声,这些噪声可能在传输中产生,也可能在量化、处理等过程中产生。图像平滑的主要目的是减少图像噪声。
空域方法:邻域平均法、中值滤波法  ——空域低通滤波    
频域方法:低通滤波法    ——频域低通滤波
较好的图像平滑处理方法应该能够消除这些噪声,又不使图像的边缘轮廓和线条变模糊。
   



中值滤波的主要步骤:
(1)将模板在图中漫游,当模板中心与图中的某个像素位置重合;
(2)读取模板下各对应像素的灰度值;
(3)将模扳对应的像素灰度值进行从小到大排序;
(4)选取灰度序列里排在中间的1个像素的灰度值;
(5)将这个中间值赋值给对应模板中心位置的像素作为像素的灰度值。
中值和均值滤波器性能比较:
中值滤波比低通滤波消除噪声更有效。
因为噪声多为尖峰状干扰,若用低通滤波虽能去除噪声但陡峭的边缘将被模糊,而中值滤波能去除点状尖峰干扰而边缘不会变坏。
3.4.2  频域低通滤波
1图像空域特性和频域特性的关系:
(1)图像的平均灰度表示直流分量
(2)背景区域和缓慢变化部分则代表图像的低频分量
(3)边缘、细节、跳跃部分以及颗粒噪声都代表图像的高 频分量
    在频域中对图像采用滤波器函数衰减高频信息而使低频信息畅通无阻的过程称为低通滤波。
2图像频域低通滤波流程框图:

在频域实现线性低通滤波器输出的表达式
F(u,v)——含有噪声图像的傅里叶变换
H(u,v)——频域滤波器传递函数
G(u,v)——平滑处理后的图像的傅里叶变换
3理想低通滤波器(ILPF)
所谓理想低通滤波器,是指以截频D0为半径的圆内的所有频率都能无损地通过,而在截频之外的频率分量完全被衰减。
理想低通滤波器可以用计算机模拟实现,但却不能用电子元器件来实现。
理想低通滤波器在处理过程中会产生较严重的模糊和振铃现象。
Butterworth 低通滤波器(BLPF)
又称最大平坦滤波器。它与理想低通滤波器不同,它的通带与阻带之间没有明显的不连续性,在通带和阻带之间有一个平滑的过渡带。
与理想低通滤波器的处理结果相比,经Butterworth滤波器处理过的图像模糊程度会大大减少。
经Butterworth低通滤波器处理的图像将不会有振铃现象。这是由于在滤波器的通带和阻带之间有一平滑过渡的缘故
指数低通滤波器(ELPF)
由于指数低通滤波器有更快的衰减率,经指数低通滤波的图像比Butterworth低通滤波器处理的图像稍模糊一些。
由于指数低通滤波器的传递函数也有较平滑的过渡带,所以图像中也没有振铃现象。
梯形低通滤波器(TLPF)
梯形滤波器的性能介于理想低通滤波器和具有平滑过渡带滤波器之间,存在一定的模糊和振铃效应。
3四种频域低通滤波器传递函数H(u,v)的剖面图:
3.5 图像锐化
1边缘模糊是图像中常出现的质量问题,由此造成的
轮廓不清晰,线条不鲜明使图像特征提取、识别和
理解难以进行。增强图像边缘和线条,使图像边
缘变得清晰的处理称为图像锐化。   
2图像锐化的目的是使灰度反差增强,从而增强图
像中边缘信息,有利于轮廓抽取。轮廓或边缘就是
图像中灰度变化率最大的地方,为了把轮廓抽取出
来,就是要找一种方法把图像的最大灰度变化处找
出来。
锐化处理可以用空间微分来完成。微分算子的响应强度与图像在该点的突变程度有关,图像微分增强了边缘和其他突变(如噪声)而消弱了灰度变化缓慢的区域.
3.5.1 空域高通滤波    
1. 梯度算子——基于一阶微分的图像锐化

2各种锐化算子

3拉普拉斯算子——基于二阶微分的图像锐化

拉普拉斯微分算子强调图像中灰度的突变,弱化灰度慢变化的区域。
3.5.2 频域高通滤波    
图像的边缘、细节主要在高频,图像模糊是由于高频成分较弱产生的。
为了消除模糊,突出边缘,可以采用高通滤波的方法,使低频分量得到抑制,从而达到增强高频分量,使图像的边沿或线条变得清晰,实现图像的锐化。
四种高通滤波器比较:
理想高通有明显振铃。
梯形高通的效果是微有振铃、但计算简单,故较常用。
指数高通效果比Butterworth差些,振铃也
不明显。
Butterworth高通效果较好,振铃不明显,
但计算复杂。
四种频域高通滤波器传递函数H(u,v)的剖面图:
3.5.3 同态滤波的图像增强
3.5.4 图像锐化的应用
图像锐化空间滤波
梯度处理经常用于工业检测、辅助人工检测缺陷,或者是更为通用
的自动检测的预处理。

3.6  伪彩色增强
彩色增强技术主要有假彩色增强及伪彩色增强两大类。
(1)假彩色(false color)增强是将一幅彩色图像映射为另一幅彩色图像,从而达到增强彩色对比,使某些图像达到更加醒目的目的。
(2) 真彩色(true color)自然物体的彩色叫做真彩色,真彩色图像的分光系统,色光合成如图

(3)伪彩色(pesudocolor)增强则是把一幅黑白域图像的不同灰度级映射为一幅彩色图像的技术手段称做伪彩色增强。
3.6.1  灰度分层法伪彩色处理
灰度分层法又称为灰度分割法或密度分层法,是伪彩色处理技术中最基本、最简单的方法。设一幅灰度图像f(x,y),可以看成是坐标(x,y)的一个密度函数。把此图像的灰度分成若干等级,即相当于用一些和坐标平面(即x-y平面)平行的平面在相交的区域中切割此密度函数。
3.6.2 灰度变换法伪彩色处理
灰度伪彩色变换处理原理示意图

3.6.3  频域伪彩色处理
频率域滤波的伪彩色增强处理框图
3.8  图像的几何校正
1(1)空间变换:对图像平面上的像素进行重新排列以恢复原空间关系。
(2)灰度插值:对空间变换后的像素赋予相应的灰度值以恢复原位置的灰度值。
    几何畸变的图像通过上述的几何变换来校正失真图像中的各像素位置,以重新得到像素间原来的空间关系,包括原来的灰度值关系。
2图像处理算法中的几何处理是根据几何变换改变一幅图像中像素的位置或排列。前面讨论过的各种处理都要根据特定的变换改变像素值的大小。而几何变换并不改变像素值的大小,它只是改变像素所处的位置。也就是说,将给定像素值的像素移到图像中一个新位置上。
3几何变换是图像处理中一种基本的、常用的图像预处理方法,其主要用途是:
   1.实现数字图像的放大、缩小及旋转;
   2.实现畸变(畸变原因可以多种多样,如摄影系统或镜头畸变)图像的校正;
   3.实现不同来源图像(如航空摄影,卫星遥感,合成孔径雷达等不同来源)的配准;
   4.显示和打印图像时的一种图像排版工具;
   5.可以使处理后的图像具有多种不同的特殊效果。

2015-09-24 13:36:09 Real_Myth 阅读数 6840

from:http://visioncompute.readthedocs.org/en/latest/ImageProcess.html

盲源分离:

自然梯度法

自然梯度法主要是用接收信号的概率密度求梯度,最后为了鲁棒性,使用黎曼空间的表示。这说明这还是一个求导的概念。用g(y)表示接受信号的概率密度函数。这是一个估计的结果。

SOBI

这个方法我想和SVD分解差不多,只是使用了多个时延,改善和确保性能。

oblique projection

正交投影:PH=H*adjoint(H) 斜投影: PH=H*adjoint(S)

色调以及摄影的应用

眼睛总是被吸引到画面中最明亮的部分(差异最大的那分),例如白底黑主体就相反了。所以亮色调在视觉上优先。要充分利用光线,肤色,以及衣服的颜色的色调来突出主题。

例如深色的衣服有助于使人体与背景浑然一体,这样面部就会成为画面中最最显眼的部分,深色显的苗条,浅色增加分量,一般来说,衣服的颜色应该淡化,因为鲜艳的色彩会影响对面部的注意。 布光 ======

布光的原理最终是最终是颜色的设计,人像摄影主要是柔光. 柔光,冷光,䁔光,背景光,轮廓光,发型光,羽化光,光比

窗户光,最好的时候,上午中间,下午的中间时段. See also ========

  1. LCH,lab 只是不同的颜色模型,并且常见光线与颜色模型值,例如强度与功率等。
  2. Recovering highlights with dcraw using LCH blending
  3. 摄影用光 色温 色温中,绿色基本保持不变34%,我们通常指的色温调整主要改变是RB两个的百分比。三者靠近比例接近的时候就是白光也就是日光色温,日光的色温基本是5500k. 黑体色温与CIE的色温定义是有区别的。并且色温也是表征能量,而不是颜色的。不能表达所有颜色。
  4. brucelindbloom 关于颜色各种转换与在线工具
  5. Decoding raw digital photos in Linux
  6. 色彩与色调的调整 要慢慢来看懂这些理论了与实际的用途了
  7. 白平衡与直方图均衡化 这个到底是什么关系呢,是不是对应关系
  8. 直方图、对比度调节及白平衡 可以做一下这些实验在,GIMP或者python中
  9. 调色教程入门二——色彩基础,想学调色的必看 要看懂直方图的分布意义了
  10. 色温表

思考

Hue-Saturation

#. Y U V introduction – Main.GangweiLi - 12 Aug 2012

色阶曲线的应用 现在终于明白曲线坐标的意义了,X轴代表的是原来相素分布,Y代表输出的色采分布。曲线就是一个直接映射关系。 而原始分布是要根据直方图来看,或者直接去图片去测试区域。

– Main.GangweiLi - 20 Nov 2012

如何在实践应用 拿着相机,如何来控制颜色,来达到自己的目的呢。亮度的不同会产生什么,饱和度的会产生什么样的东西,色度的不同会产生什么。

– Main.GangweiLi - 02 Jan 2013

图像降噪

k-L 变换就是求数据的协方差矩阵的特征值和特征向量。

基于PCA的降噪,

PCA降噪方法和之前的降维差不多,对于降噪来说,就是获得信号子空间和噪声子空间,-》从噪声子空间中估计噪声方差-》remove 噪声子空间

小波变换

haar变换,就是利用上一个点对下一点进行相减,在信号不变的情况下,得到的信号就是稀疏的,稀疏之后然后在通过设置门限就可以把噪声抑制掉。

量子成像

相干斑

相干斑主要是相干成像中明暗变化的图像,产生主要是由于单个距离分辨单元中包含多个目标,结果多个信号相加生成随机的信号幅度和相位,主要抑制相干斑的方法

  1. 基于multi-looking processing, 但是这样会降低雷达的分辨力(好像是方位分辨率吧)
  2. 基于小波变换的方法。
  3. 基于ICA的方法。
  4. 基于自适应滤波的方法。
  5. k-L变换 清华
  6. k-L变换,里面还有一些基本的主分量分析,小波变换等的数学推导
  7. adesso Adessowiki - Collaborative Scientific Writing and Programming
  8. klt找到脸位置,matlab代码
  9. scikit-learn: machine learning in Python 有空看一下
  10. PCA降噪matlab代码
  11. PCA降噪python 代码 怎样装上他们开发的modulate
  12. 自适应变换小波降噪
  13. 多分辨率curvelet transform
  14. wavelet.py 图像小波降噪
  1. A beginner’s guide to speckle
  2. 合成孔径雷达基础
  3. 相干斑形成原理 这个基本还行,理解了相干斑
  4. Lee滤波,这个是python 版本的,但是这个看不太懂,让老李看下
  5. 量子力学

Hough 变换

线检测 图像空间——》参数空间,对图像中的任一点对应参数空间的直线(y =k*x+b),因此需要看任意多少点对于的直线相交于一点。实际中为解决y =c,k=inf的问题,使用 p =x*cos(theta)+y*sin(theta)

在p-theta中形成一个曲线。

参考:

  1. Hough变换原理 看一下,比较到位
  2. OpenCV-Python教程(9、使用霍夫变换检测直线)

视频压缩,就是在某个基上变换后得到比较简单的向量比如[1,0,0],得到更多的0,或者近似零,我想压缩感知也是这样的,值认为它是稀疏的,大部分都是零的,有一个基变换中,只取某几个。

Think also

直方图:

introduction

直方图特点:计算量比较小,直方图反映的是图像像素灰度值的概率分布,

原理:为了改善图像过亮或者过暗,得到图像的理想整体对比度(1/n),通过符合求导的逆推,得到要用积分图像。

优点:适用于图像过亮或者过暗,尤其对于X光图像中更好的骨骼结构

缺点:对处理的数据不加选择,它可能会增加背景杂讯的对比度并且降低有用信号的对比度。

matlab实现:histeq函数。

  1. RGB转灰度图的几种算法 RGB转换为灰度图完全是我们心理的作用.
  2. 50 RGB向灰度转换的原理 可以看一下

直方图本身反映了,各个灰阶的像素的数量,把一幅图像像素看成是一个小球,而像素的灰度看成小球的大小。而灰级就是256个大小从小到大排列的篮子。然后按照顺序把每一个像数按照大小放入合适的篮子里。每个篮子里小球的个数,再除以总数,这样就形成直方图。但是通过直方图发现,小图分布的不均匀。 那么如何算是均匀呢,当然是根据能力与出身了。例如篮子大小当做出身。也就是从小到大的顺序不能变,不管我有多少小球。但是我的灰度又要能体现数量的多少。数量越多,灰度级越大。能同时满足这两个要求。就是要利用概率密度了。这样的结果是首尾的值是不会变的。最小值还是最小值。最大值还是最大值。最小值再加上最小值与当值之间密度差值。

直方图拉伸和均衡 这里有一个直方图拉伸和均衡的关系,可以看到均衡是拉伸方法的特殊情况,另外可以看到因为增加了对比度,所以都会出现对比度增加的好处,但是这样的话,同时也可能把北京增加了,通过`图像增强1:对比度增强与直方图变换 <http://lijiwei19850620.blog.163.com/blog/static/97841538201210239635623/>`_ 看到,理想的曝光是一个中间高,两边低的灰度情况(这个是为什么还不清楚),大致和直方图均衡的图比较吻合了。

digraph{rankdir=LRnode [shape=box];From_picture_histogram->too_Dark->Right_stretchingFrom_picture_histogram->bright->Left_stretchingFrom_picture_histogram->"Low-contrast_mid-gray-level"->Left_right_stretching}

` OPenCV直方图均衡化 <http://blog.csdn.net/luomaojiang/article/details/8601321>`_ 这里两个图看很形象直观。但是观点是做的,那就是均衡化不会每个灰度级上都具有相同的象素点数过程。原来每一个篮子的小球的数量是不会改变的,会改变的,只是让原来篮子的大小,随着之进行改变。直方图维基定义 这里给出的定义,扩展常用的亮度。也就是概率最大的亮度之间的差值。

所以直方图均衡化只改变宽度,不改变形状。同时我们也指定均衡化的宽度。

ImageMagick

Introduction

imagemagick 是一个超强的库,并且指命令行接口异常的强大,基本上图片处理,画图功能它都已经提供了。可以说是一个cli版的GIMP。 同时它又像其他的linux工具一样,它的功能一种是在编译时通过各种宏来指定。另一种方式那就是采用配置文件。并且采用一定的搜索算法。最先开始在当前文件夹下.magick文件开始。从了一些正常的参数之外,还可以通过+define指定的那些隐性的参数。并且用identify 命令可以读取也可以添加各种的`元数据到图片中 <http://www.exif.org/>`_exiv2 同时还能够把这些元数据给strip掉,就像gcc的编译一样。每一个图片本身就是对象,我可以图像的统计信息放在元数据里,放在comments里,并且它支持一些通配符。简单的命令可以用convert,mogrify,display等,脚本可以使用`conjure <http://imagemagick.sourceforge.net/http/www/conjure.html#msl>`_ .%RED%而这个正是想要的一直准备去做的一件事之一。如何实现一个动态搜索接口。win7的文件浏览器功能就不错。自己是不是可以基于开源的文件浏览器改出来一个。%ENDCOLOR%其实imagemagick提供了一整套的命令行,包括管理显示排序方面关于图片的,问题自己如何利用这些。 #. 如何显示那文件属性 可以直接使用identify,convert来查看与编辑图片的属性。 #. best-free-digital-image-viewer.htm

计算存储图片两种方式一种是矢量图,它是由一些基本的图元组成,这些图元都是可以有基本数学方程。这样可以数学方程进行放大与缩小这个就是SVG它可以用XML等直接传递,只需要一些特征点。而opengl也采用的这种方式,不同的是采用有限元法来表示各种图形,但是在显示的时候,最终还是还要像素上光栅化的。这就像另一些图,直接就是利用点阵图来表示。opengl可以说这种方式的结合。 并且opengl顶点与最后屏幕点还是不一样的。先连线,然后逐行扫描的。

光栅化的后反矩齿。就是把中界点用半透明化。

color space management

一些美学原理是在以及各种颜色空间都在[[Study.ColorTransform]]。在这里只提到在计算机中,颜色的深度的问题,就是指你用几位来表示一种颜色。同时也还有一个采用量化的过程。其中之一多少个像素点代表真实的一个点。这个是采用率的问题,这个图放大与缩小的时候,会采用到,例如缩放时是直接按点踩,还是说几个点中取中值,还是如何。这个在opengl的光栅化时也同样有这样的问题,在光栅化之本身只有顶点数据的,内部的尺寸大小不同时与纹理的映射关系其实就是采样的过程。你可以指定取最大值,取最小值,或者采用滤波的方式来设置都是可以的。以及颜色本身减少压缩也是这样的。 文件本身存储的字节序的问题在这里都是可以指定所修改的。

并且imagemagick还支持批处理。 通过对imagemagick的学习,对于图像本质有了更深的认识。同时对于各种图片存储方式也有更深的认识。总之一点那就是矩阵式结构不变的。改变的一个像素点有多少个通道。每一个通道需要多少位来表示。所谓压缩不压缩也是指的这些。但是JPEG是如何达到压缩目的呢。是把点给扔了,把细节的地方点多一些。但是如何来保证像素数,扔掉的像素点是不是要拟合出来,并且还标记出来,哪些点是需要拟合的

在图像与图形的处理过程中两者有时候是不分的,在图像的处理过程中,像素的坐标位置提的不是很多,而在图形的像素点的颜色道是说的少了,更多的是顶点的坐标点。其实每一幅图像都有一个坐标系。要么以顶角为原点要么中心为原点。图像的变换都是这样来的。在建模的时候,就发现各个子系统都会自己的局部坐标系。那个gravity指的就是局部坐标系的原点在哪里。 在图形与图像的处理过程中,并且需要计算整副图像的统计值,然后以这些为初值,进行局部分形处理。一个点的坐标值,颜色值,法向值,切线值,都是很重要的。但是图像与图形的是有区别的,图像的法向以切线是估出来的。而图形则是经过建模精确计算出来的。

对于各种图形都支持一种interlaced 的属性,那就是可以边下载边显示。是文件本身的一种属性,还是某一种图片格式的属性。

图片的显示管理

ImageMagick提供import进行截屏操作。montage,display,animate批量化的显示,动画的显示与修改.同时进行格式的转化,动画frame的控制 insert/swap/delete/delay/loop,并且能够直接操作.gif中frame.修改顺序。并且还能折分与提取与合成pdf,还能用来破解pdf.。 做和种可视化对比的利用montage 是非常方便的。根据结果生成各种各样对比图片数据。 并且在XWindows中,display可以指定的显示在哪一个窗口,并且还可以设为哪一个窗口的背景,并且还能实时监控图片的变化,vimdot就是这样实现的。但是如指定缩放呢。还是使用montage的方法。

各种动化教程 http://www.imagemagick.org/Usage/anim_basics/ 我的ImageMagick使用心得 使用ImageMagic开发一个照片管理库

图形的变换

compare 比较做的还是比较智能的,直接支持单通道的比较,而不需要先分离然后再比较。并且对于各种特效的变换。例如watermark 添加以及签名以及边框的添加都是高度可定制化与批量化的。另一个那就是图片的隐藏,实现的原理是什么呢,直接进行图片叠加算法,还是只在后面又加了一帧。应该不是又加了不是这种,应该是算法叠加。Steganography composite -stegano 直接转化为噪声隐藏位图的低位。然后再恢复按照固定的函数算法再恢复出来。但是这种方法也会受到图片的裁减的破坏。 是不是可以直接把ASCII码当灰度或者unicode码当做灰度值,然后把文字变成图像,同时也研究一个那个小鸭子是如何实现的。

图片的噪声,有各种各样的模型,如何进行添加与去除。这个是图像复原的一个题目。椒盐噪声与高斯噪声的原理 对于椒盐噪声,为什么非得是极值。在进行模板设计的时候一般都采用奇数矩阵来代替圆形。

高斯函数 高斯函数三个参数,均值,方差,还有一个幅度,均值是由谁得出,而方差为什么是指定的。高斯一般用5x5模板 图像真实对比,用小图来进行对比,这样的实现会很有意义 把颜色与看数值直接相结合会更有直接意义,这个方法不错,直接看其灰度值的变化。            
` hmm-kalman-particle-filtering <http://freemind.pluskid.org/machine-learning/hmm-kalman-particle-filtering/>`_              
-segment 这个只是从直方图进行分割。            
-shade的 光线效果。对于光线的效果是需要三维的,并且需要法向的,二维图像的法向如何进行计算呢。            
-Solarize ` 曝晒算法 <http://courses.washington.edu/hypertxt/cgi-bin/book/pmontage/solarized.html>`_ 模仿最初沥清制图的方法,采用V字型反转就可以了对于曲线或者直方图            
-spread 算法,在一个有限的范围内随机跳,采取什么样的随机会不同的效果吗,总体看来在水波下情形            
-sharpen 虽然都是高斯,取高通,还是低通,就看你用哪一部分,你是用3sigma之内就是低通,3sigma之外就是高通了            
-Swirl 旋涡效果            
-threshold -level -modulate
-tint 这其实也是图像分割的一种 最简单的应用,在过滤的时候会非常的方便 threashold用的最大值,level用的最小值,其实就是直方图的输出 -tint 是调整各个分量的多少 -modulate 用的是HSV模型,而前面两个用的是RGB模型    
-unsharp 去除模糊,其实锐化的工具            
-wave 要么横向,要么纵向,能不能径向            
-virtual pixel 是不是利用多点来表示一点,具体还不太明白            
roll 自身左右循环移位与上下循环移位            
-append 就像字符串拼接一样,把图片接在一起 自动去改文件头 并且能够指定边框,背景        
-average -fatten 把多张图,叠加起,点对点按照不同的规则,就像两张的加减一样          
-affinite 二维的变换矩阵,但是一个问题,那就是坐标原点在哪里            

画图

颜色格式可以直接使用名子例如red,black,等也可以使用HTML#XXXXXX格式,也可以使用RGB格式。 画图可以指定大小,xc(xwindow colors),以及背景,方向,以及各种基本的图形,以及填充,边框等,并且能够多次嵌套。

-annotate 添加注注释    
-pointsize 字体大小    
-stroke 线条颜色    
-fill      
-font      
-draw color 50 50 point/replace/foodfill  
^ rectangle    
^ circle    
^ text    
^ Image in/over/out/atop    
composite
-compose 合成图片
   
-write 可以保存每一步的中间状态    

display 命令的用法可以按照slide来播放

Imagemagick中图片大小转换全攻略

  1. Table of Contents for Writing With Images

图像量化

像素是离散化后的强度值。 512*512 是什么?

饱和就是我们不能同时看到超过范围的图像。饱和和人眼的原理是一样的。

离散化的精度影响 分辨率。floor(value/2)*2, 这里的2就是下采样系数。

图像表示:

introduction

如何表示一个图像,用点阵,用矢量。如何一幅图像中找到对应的矢量描述呢。解决了描述问题了,后面就成了一个通用的数学问题。

是不是可以用分形的去描述一个图像呢,把分形当做一个基,然后合成图片上内容。目前还没有找到一个完美的表示方法,对于每一种特定类型图像对象,我们总是能找到一分类方法的进行分类表示的。

链码

按照一定的次序连接边界线。这个与模型的建模表示有什么区别。 多边形近似 | 最小周长多边形,聚合与拆分 能不不能分形来表示呢 |

标记图 ,每一个子图都有自己的中心原点,对于物理图形来说,一般用重心来做原点 , 边界线段 , 骨架 , 形状数,例如欧拉拓扑公式, 复数序列的傅里叶变换来表示。, 统计矩 , 拓扑学 ,

主分量法 ,其实就是特征值与特征向量的方法 ,

关系描述 ,也就相当于PCM差分编码的方法 ,

See also

图像恢复 (降噪)

G=F*H+N 还是G=H(F+N) 还是只有N,还是只有H,处理方法都是不样的。主要需要考虑的因素有 #. N是不是可分离的 #. H 是不是可以逆的,一个是指数学上,一个是指实践的处理对象上。 #.

只有 G=F+N 并且N在唯一空间的,或者N的频谱明显与原图的频谱有距离,这一种是最简单的,只需要简单的高通,低通,带通,在二维还有多带通。 例如常规的,中值,均值,最大值,最小值,另外掩码的尺寸也是重要的因素在处理效果上  

用直方图来做参考太粗糙了,用等高图会更高直观,亮度变成高度,会加直观。并且会带有位置信息。 噪声的估计 #. 其中一种是基于直方图对澡声进行估计,利用基准图像来进行测试的。 #. 还有一种那就是根据傅里变换来进行估计的。 #. 另一种是直接从传感器的技术说明中得知。 最终值,可以基本值来进行测试,例如灰卡拍照进行测试。来得到澡声的图像。例如黑夜,我们一张白纸后面打光进行拍照,得到图片就为澡声了。

退化函数 #. 图像观察估计法 #. 试验估计法。 #. 模型估计法。 同态滤波就属于这种。 建立各种模型来估计退化函数。同样是可以基准图像来进行测试的。 对于张各的图像没有做离里叶变换。做一个傅里变换看看。

噪声产生原因 高斯噪声源于电子电路噪声和低照明度或高温带来的传感器噪声。

椒盐噪声是由图像传感器,传输信道,解码处理等产生的黑白相间的亮暗点噪声。椒盐噪声往往由图像切割引起。

加性噪声-》均值滤波方法就好,对于椒盐噪声运用中值滤波,实际中对于复杂噪声,运用阿尔法滤波结合中值滤波和均值滤波,效果更好,而对于周期性噪声(比如电力电子中),则使用带阻滤波器。 对于只有f=g+n 的模型,就是直接之前的滤波器,把n踢掉。自适应的原理无非就是需要全局的期望与方差。

几何变换,其实可以完全通过图形的方法来实现。 最小二乘算法 (least square) =================================

对于函数y =ax, for x是输入图像,a是退化函数,y是输出。 输入w(0)值(近似a的逆运算),得到:

x(0)=w(0)y,
augy=(yy)(1)y;

最小二乘,使残差最小

w(1) = aug_y*y

err=y(eye(10)yw(i));

直到 w(i),i=1,N小于某个数量级,比如 rn<10e6, 停止迭代。 否则更新w

关于运动模糊的物理

可以根据运动方程来建立模型,然后进行恢复,例如水平运动的基础是运动的距离可以由傅里叶变换的周期性来检测。并且第一旁瓣宽度的关系。图像变换的周期是与物体运动的周期或者对称是相关的。还有那是旋转后的出现的模糊。并且这个要一下实验。水平运动可不可以x,y都有,或者经过旋转到一个方向在进行。 包括水滴消除也是这样进行的。对于车牌检测的就是直接使用逆滤波的结论并且还做了简化,原来的两个方向的,其中做了进一步分析(ua+vb)这个值是多少,它本身就是一个Sar函数相于平移了。

维纳滤波

wiener filtering是相对于 inverse filtering 和smooth filtering 的一个折中,目标函数 [ŝ s]2 最小,最后得出信号的系数(相对于噪声的系数),也就是要知道信号和噪声的方差。但是实际中这个怎样给出?但是并不是wiener filtering 对所有的 退化图像和噪声都有用, 我想还是根据不同的模型,设计不同的方法,学会建模,并且利用数学方程求解。无非就是就极值的问题。

傅里叶变换

傅里叶变换就是用一些正交基描述一个信号或者一个图像,

图像复原小结

问题:从噪声和退化函数中估计原始图像。

对于噪声,可以用低通滤波器,但是这样通常会造成图像的损失,也就是噪声和细节是一对矛盾,

维纳滤波主要解决噪声的问题,对于退化函数,通常是有一定的先验知识。

傅里叶变换应用:对于特定小点,可以通过傅里叶变换来比较。比如眼睛。纹理分类。

  1. Multi-dimensional image processing 里面有专门的各种滤波器
  2. noise 1.2.1 python噪声包
  3. scipy.signal.wiener scipy和numpy的参考文档
  4. Wiener Filtering matlab 程序
  5. Wiener Filtering推导
  6. 简单的同态滤波(matlab)
  7. 同态滤波(Homomorphic filtering)
  8. 雨滴去除 来这做一下这样的效果。
  9. Wiener Filtering 应该比较详细,看一下
  10. 穿墙雷达 超宽带波藉由墙壁反弹的方式?及高性能的处理器而找到障碍物。可判读出在极短时间内的变化产生轻微的动作

图像分割

点检测

点检测一个点的检测,还是一个块检测。点检测简单只要取一个阈值,就例如利用均值,或者别的得到距离值,然后利用这个距离值来进行判断,块检测就要求是一个范围,也首先是连通性的检测。

对于块的检测可以用形态学的方法,但是要就考虑块的大小的问题。可以把那些孤立点消除。

线检测

分为在直线,可以用霍夫变换,一般是先通过边界检测,然后再做这些,边界检测可以用一阶或者二阶来做。一阶来解决是不是在边界上,二阶解决在哪些的问题。这里可以用Canny算子。

  1. 计算图像的梯度并对其设置门限得到一幅二值图像。
  2. 在参数平面内确定再细分。
  3. 对像素高度集中的地方检验其累加器的单元的数目。
  4. 检验选择的单元中像素之间的关系。

从整体看,还可以其上颜色值,当做其他值,例如把切成列表下一个坐标。一个RGBA如果是整型的,可以就四个字节,我们四个字节可以存储各种有效的结构信息,把这个原始图像变成一个度量图像,我们可以把关于一个点的各种信息都压缩在另一幅图像中。 可以利用图形的各种知识来进行操作。

图像分割——分水岭算法

区域的生长,分割与合并 分水岭算法,通过通过判定一个区域的中值作为分水区域,对图像进行分割,算子有一阶算子,二阶算子。等等

边界检测可以用过零来检测边界。 边界的连接问题,例如知道了边缘检测的图形之后,我们在模型本身的特点,来确定模板的大小,其实也就是其领域的大小,然后确定周值与这个中心的点关系。然后在这个领域内再计算某些点的特性(例如梯度)与中心点的特性的关系。来决定。 例如大梯度的大小与方向都在一定的范围内就连接起来。当然T值也是自动产生的。

  1. OpenCV-Python教程(9、使用霍夫变换检测直线) 检测中线段,试一下

分割分为点线面,检测。检测变换后就变成了基本变成二值图像。只为只有这样容易区分背影与对象本身。就是背景就相当于集合的全集,而子集就相当于对象本身。就要用到一个门限,但是门限分二种,一种是局部动态计算,另外一种是全局的。对于结构简单的图像全局,对于复杂图形用局部分的比较好。

区域的分割,如何知道每个点是属于哪一个区域呢,还是对每一个点对于tag标记呢。 并且区域分割。利用四叉树或者二叉树对区域进行分割。这个就要自定义存储结构了。为什么现在自己经常纠结于存储结构呢。直接链表。就搞定了。

+`图像分割之(二)Graph Cut(图割) <http://blog.csdn.net/zouxy09/article/details/8532111>`_

他通过约束边界项和区域项来达到通过能力最小值约束:

E(L)=αR(L)+B(L)

其中区域项通过约束概率最大来实现:

Rp(1)=lnPr(Ip|"obj")
Rp(0)=lnPr(Ip|"bkg")

边界项通过约束两个不相似的程度来实现:

B(L)=p,qNB<p,q>δ(lp,lq)

-+`grab-cut < 图像分割之(三)从Graph Cut到Grab Cut>`_

D(x)=i=1Kπigi(x;μ,Σi),i=1Kπi=1and0πi1

其中:

g(x;μ,Sigma)=1((2π)dSigma|)exp[12(xμ)TSigma(1)(xμ)]

通过对初始选定的初始值来作为估计高斯混合模型中几个参数,得到这些参数后,对于这些点就可以进行判断是目标还是背景的概率了, 然后是差异性比较:

V(α,z)=γ(m,n)C[anam]expβ||zmzn||2

graph cut 缺点:

算法是利用的物理学中粒子的原理,要对每一个像素点进行计算,计算比较耗时.

图像拼接

Lucas–Kanade 方法

图像拼接最重要的是在找到匹配对之后,求转换矩阵。L-K算法通过目标函数是 .. math:: {sumlimits_{{rm{patch}}} {left[ {Ileft( {Wleft( {X;p} right)} right) - Tleft( x right)} right]} ^2},通过对次公式进行泰勒展开, 并对信号进行求进行链式求导:

Ip=IWWp=I,[WxpWyp]

最后用最小二乘算法实现对p的估计。

See also

  1. 一种基于区域匹配的图像拼接算法
  2. 图像拼接算法及实现 拼接算法主要两类一类是分域匹配,另一个基于特征提取
  3. 图像拼接Image Mosaic 北京联高软件开发有限公司

图像处理

digraph structs {rankdir=LRnode [shape=record];struct1 [shape=record,label="samplinng | digitialized| Image_transform|enhancement| compression |restoration |segment|analysis| Binary \n image \n processing"];}

图像处理流程

digraph structs {rankdir=LRnode [shape=record];struct1 [shape=record,label="Image_Search"];struct2 [shape=record,label="Color|texture|shape"];struct1->struct2}

思考

现在明白了,学习金融,利率是根本,所有的变化都是基于这个的,

– Main.GangweiLi - 16 Jun 2012

平滑空间滤波器

特定滤波器(fspecial):选择里面的平均滤波器
一般多维滤波器(imfilter)作用:对感兴趣的物体得到一个粗略的描述而模糊小物体,较大物体变得像斑点而易于检测(为什么便于检测?)。

空间滤波器带来降噪的同时,也会产生图像模糊。

中值滤波器 (medfilt2):降噪。

从空间滤波其中看到,blur使得图像最模糊,然后contour和FIND_EDGES中间正,两边负,可以得到图像的轮廓, SMOOTH和SMOOTH_MORE平滑的越多图像越模糊。SHARPEN可以通过中间正,两边负的,得到图片增强。

图像逻辑运算(减法)

在matlab中图像是通过极坐标实现的,现在目前基于smile.jpg的结果是,从小到大变化图像半径和旋转角度, 半径 小->大,呈现图像的顺序嘴巴——》眼睛-》脸庞-》腮红。 这个出来的先后顺序是和这些边缘变化的模糊度有关,模糊度越高,出来的越慢。

旋转的作用那,现在看起来不是很明显。

空间滤波实现滤波 和目标分割 (基本原理:积分用来模糊图像,微分用来锐化图像)

空域滤波,点检测,线检测

一阶算子方法:和可以实现对于明显的图像实现找到边界, Sobel算子:内部利用局部平均方法,对噪声有一定的抑制作用。

Roberts算子: 检测边缘,对噪声敏感。(实际中使用什么检测特性还不清楚)

Prewitt算子: 采用局部平均,对噪声有一定的抑制作用。

二阶算子方法:能够更加清楚的找到边界,但是二阶算子对噪声比较敏感,因此首先的方法是首先进行平均降噪。

Laplace 算子: 具有各项同性微分算子,具有`旋转不变性 <http://www.narutoacm.com/archives/laplace-rotation-invariant/>`_ :

Laplace(f)=2fx2+2fy2

空域滤波,点检测,线检测。

频域滤波

DFT就像一个[[http://wenku.baidu.com/view/014797737fd5360cba1adbed.html[数学显微镜]] 频域滤波最终也要转换为空域处理。 #. 一个不错介绍

频域图能看出来什么,二维的频谱图与一维的有什么区别。从图像的频谱中能看到什么。变换前后的坐标与图有什么对应关系。进行卷积,进行子图识别,卷积最大的那个值,那就是图像重合的中心位置。时域的卷积等于频域的相乘。能否找到相关性最大的那个值。子图的搜索也是基于此相关与卷积的 . 这个时候先计算好两处图处DFT图,另外一个功能那就类似于积分图像的应用。

频域变化之后,的图像应该是三维的Sa函数。通过三维的高度来看比二维的颜色更加直观。并且可以取任意的细节利用带组,根据频域图的三维高度分度来进行提取。但是一个前提那就是你要知道图像中谁在哪一段频域上占着。想成一个三维的图,但是频域分布是圆周型,中心最低,越往边越高。就像水波纹一样。颜色越高说明系数越大。成分比较越大。并且频域与空域的点与点的距离是有对应的关系。

各种滤波器的设计,高通,低通,带通,完全可以利用图像来实现。频域的矩形滤波直接用阈值图像就可以搞定。渐变的频域图就像是曲线滤波了,例如巴特沃斯滤波器。等等。用在频域上试一试。那些数字滤器例如汉宁窗等等哪些能用到图像上。

一切都通了,频域的原点经过shift变在中间(M/2,N/2)。截止频率距离中间的距离,至于中间渐变颜色是根据滤波器来的,例如高斯。截止频率就是方差的大小。那期望如何来定呢。还是说只能是中心点的值。 现在要看看GIMP的渐变是如何实现,轴像与径向。是不是利用极坐标。然后按照函数值进赋值。

对于相关性与卷积,并且利用同样大小频域图来进行相乘。有一个周期截断的问题,那就需要扩展与截图了。

对于推导无非那些矩阵与求导的一些符号运算。积分,微分,卷积。矩阵的逆变换等等。这些基本知识。 #. numpy.fft.fft2 这个库里一维,二维,多维,同时还可以提到一个序列采用频率。同时还有hfft,因为如果是纯实信号的FFT就是`hermitian transorm <http://en.wikipedia.org/wiki/Hermitian_function>`_ ,也是酉变换,也是正交变换。经过酉变换之后就都会变成对角阵。 在离散信号下的采用,其实我们平时序列的产生就是一种采样,例如,np.arange, np.linspace,np.logspace等等,包括你对序列直接进行的运算。所有对于序列的操作都可以看做是一种采样与滤波。 #. 斯坦福大学公开课:傅里叶变换及其应用 #. 图像的傅立叶变换 傅里叶变换的形式。

  1. fftw3-dev GPL 库,并且支持 ARM NEON,作为以后移植方便。并且[[http://gfourier.sourceforge.net/ fftw 可以直接用到GIMP GFourier]]
  1. GIIMP PIL
  2. 同态滤波论文去试一试
  3. 图像渐变算法及实现

Thinking

拉普拉斯算子二阶导数增强细节,sobel算子边缘。

一阶微分与二阶微分 http://blog.csdn.net/kayv/article/details/2261540
1. 斜坡面上,一阶微分一直不为0 ;二阶微分只有终点和起点不为0 1. 一阶微分产生较粗的边缘,二阶微分则细得多 1. 一阶微分处理一般对灰度阶梯有较强的响应;二阶微分处理细节有较强的响应

对于小图像用mask不合适,因为会有模糊,那用什么方法合适那?mask尺寸和物体尺寸的关系。

怎样实现调用C代码?

C:快盘graphicpaper1673-2944(2012)03-0022-05.pdf 基于DFT压缩。

如果我在较暗的情况下整体加上一个数的话,图像图像整体变量了,但还是对比度不高,

python 中怎样plt.axes 怎样调节参数

雷达数据 到成像 过程

– Main.GegeZhang - 27 Jul 2013

雷达散射特性,前向散射,后向散射?什么联系,为什么在机场的时候前向比较明显,前向散射是比后向散射明显。

雷达RCS曲线 中可以看出来机头,机尾 和两边机翼都比较明显

*对一维到二维一直推广,其实是假定了,图像线性时不变系统。所以先算行或者例都是没有关系。这是由于线性系统自身性质决定的。

2016-07-19 21:29:54 LG1259156776 阅读数 4150
1        前言
做为拍照手机的核心模块之一,camera sensor效果的调整,涉及到众多的参数,如果对基本的光学原理及sensor软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起到事半功倍的效果。否则,缺乏了理论的指导,只能是凭感觉和经验去碰,往往无法准确的把握问题的关键,不能掌握sensor调试的核心技术,无法根本的解决问题。
所以,这里笔者结合自己出于对摄影的爱好所学习的一些图像处理相关的原理,试图通过分析一些与Sensor图像处理相关的因素,和大家分享一下自己的一些理解,共同探讨,共同学习进步。
2        色彩感应及校正
2.1       原理
人眼对色彩的识别,是基于人眼对光线存在三种不同的感应单元,不同的感应单元对不同波段的光有不同的响应曲线的原理,通过大脑的合成得到色彩的感知。 一般来说,我们可以通俗的用RGB三基色的概念来理解颜色的分解和合成。
 
理论上,如果人眼和sensor对光谱的色光的响应,在光谱上的体现如下的话,基本上对三色光的响应,相互之间不会发生影响,没有所谓的交叉效应。
 
但是,实际情况并没有如此理想,下图表示了人眼的三色感应系统对光谱的响应情况。可见RGB的响应并不是完全独立的。
下图则表示了某Kodak相机光谱的响应。可见其与人眼的响应曲线有较大的区别。
2.2       对sensor的色彩感应的校正
既然我们已经看到sensor对光谱的响应,在RGB各分量上与人眼对光谱的响应通常是有偏差的,当然就需要对其进行校正。不光是在交叉效应上,同样对色彩各分量的响应强度也需要校正。通常的做法是通过一个色彩校正矩阵对颜色进行一次校正。

1

该色彩校正的运算通常是由sensor模块集成或后端的ISP完成,软件通过修改相关寄存器得到正确的校正结果。值得注意的一点是,由于RGB -> YUV的转换也是通过一个3*3的变换矩阵来实现的,所以有时候这两个矩阵在ISP处理的过程中会合并在一起,通过一次矩阵运算操作完成色彩的校正和颜色空间的转换。
3        颜色空间
3.1       分类
实际上颜色的描述是非常复杂的,比如RGB三基色加光系统就不能涵盖所有可能的颜色,出于各种色彩表达,以及色彩变换和软硬件应用的需求,存在各种各样的颜色模型及色彩空间的表达方式。这些颜色模型,根据不同的划分标准,可以按不同的原则划分为不同的类别。
匹配任意可见光所需的三原色光比例曲线
 
对于sensor来说,我们经常接触到的色彩空间的概念,主要是RGB , YUV这两种(实际上,这两种体系包含了许多种不同的颜色表达方式和模型,如sRGB, Adobe RGB, YUV422, YUV420 …), RGB如前所述就是按三基色加光系统的原理来描述颜色,而YUV则是按照 亮度,色差的原理来描述颜色。
3.1.1               RGB <-> YUV的转换
不比其它颜色空间的转换有一个标准的转换公式,因为YUV在很大程度上是与硬件相关的,所以RGB与YUV的转换公式通常会多个版本,略有不同。
 
常见的公式如下:
Y=0.30R+0.59G+0.11B
U=0.493(B
Y) =0.15R0.29G+0.44B
V=0.877(R
Y) = 0.62R0.52G0.10B
 
但是这样获得的YUV值存在着负值以及取值范围上下限之差不为255等等问题,不利于计算机处理,所以根据不同的理解和需求,通常在软件处理中会用到各种不同的变形的公式,这里就不列举了。
体现在Sensor上,我们也会发现有些Sensor可以设置YUV的输出取值范围。原因就在于此。
从公式中,我们关键要理解的一点是,UV 信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。


1.1       白平衡
1.1.1         色温
色温的定义:将黑体从绝对零度开始加温,温度每升高一度称为1开氏度(用字母K来表示),当温度升高到一定程度时候,黑体便辐射出可见光,其光谱成份以及给人的感觉也会着温度的不断升高发生相应的变化。于是,就把黑体辐射一定色光的温度定为发射相同色光光源的色温。
常见光源色温:
光源                        色温(K)
    钨丝灯(白炽灯)            2500-3200k
    碳棒灯                      4000-5500k
    荧光灯(日光灯,节能灯)   4500-6500k
氙灯                        5600 k
炭精灯                      5500~6500k
    日光平均                    5400k
    有云天气下的日光            6500-7000k
    阴天日光                    12000-18000k
 
随着色温的升高,光源的颜色由暖色向冷色过渡,光源中的能量分布也由红光端向蓝光端偏移。
值得注意的是,实际光源的光谱分布各不相同,而色温只是代表了能量的偏重程度,并不反映具体的光谱分布,所以即使相同色温的光源,也可能引起不同的色彩反应。
人眼及大脑对色温有一定的生理和心理的自适应性,所以看到的颜色受色温偏移的影响较小,而camera的sersor没有这种能力,所以拍出来的照片不经过白平衡处理的话,和人眼看到的颜色会有较大的偏差(虽然人眼看到的和白光下真实的色彩也有偏差)。
太阳光色温随天气和时间变化的原因,与不同频率光的折射率有关:
波长长的光线,折射率小,透射能力强,波长短的光线,折射率大,容易被散射,折射率低,这也就是为什么交通灯用红色,防雾灯通常是黄色,天空为什么是蓝色的等等现象的原因。
知道了这一点,太阳光色温变化的规律和原因也就可以理解和分析了,留给大家自己思考。
 
 
1.1.1         色温变化时的色彩校正
所以从理论上可以看出,随着色温的升高,要对色温进行较正,否则,物体在这样的光线条件下所表现出来的颜色就会偏离其正常的颜色,因此需要降低 sensor对红色的增益,增加sersor对蓝光的增益。同时在调整参数时一定程度上要考虑到整体亮度的要保持大致的不变,即以YUV来衡量时,Y值要基本保持不变,理论上认为可以参考RGB->YUV变换公式中,RGB三分量对Y值的贡献,从而确定RGAIN和BGAIN的变化的比例关系。但实际情况比这还要复杂一些,要考虑到不同sensor对R,B的感光的交叉影响和非线性,所以最佳值可能和理论值会有一些偏差。
1.1.2         自动白平衡原理
1.1.2.1       原理
自动白平衡是基于假设场景的色彩的平均值落在一个特定的范围内,如果测量得到结果偏离该范围,则调整对应参数,校正直到其均值落入指定范围。该处理过程可能基于YUV空间,也可能基于RGB空间来进行。对于Sensor来说,通常的处理方式是通过校正R/B增益,使得UV值落在一个指定的范围内。从而实现自动白平衡。
 
1.1.2.2       特殊情况的处理
在自动白平衡中,容易遇到的问题是,如果拍摄的场景,排除光线色温的影响,其本身颜色就是偏离平均颜色值的,比如大面积的偏向某种颜色的图案如:草地,红旗,蓝天等等,这时候,强制白平衡将其平均颜色调整到灰色附近,图像颜色就会严重失真。
因此,通常的做法是:在处理自动白平衡时,除了做为目标结果的预期颜色范围外,另外再设置一对源图像的颜色范围阙值,如果未经处理的图像其颜色均值超出了该阙值的话,根本就不对其做自动白平衡处理。由此保证了上述特殊情况的正确处理。
可见,这两对阙值的确定对于自动白平衡的效果起着关键性的作用。
1.1.3         某平台的例子
英文代码              中文界面       色温       色温       RGAIN, GGAIN,   BGAIN
cloud           阴天        7500k   0x1D4C, 0x00CD, 0x0085, 0x0080
daylight        日光        6500k   0x1964, 0x00A3, 0x0080, 0x0088
INCANDESCENCE   白热光    5000k   0x1388, 0x00A5, 0x0080, 0x0088
FLUORESCENT     日光灯      4400k   0x1130, 0x0098, 0x0080, 0x00A8
TUNGSTEN        钨丝灯      2800k   0x0AF0, 0x0080, 0x0081, 0x00A4
 
可以看到随着色温的升高,其变化规律基本符合上节中的理论分析。不过这里多数参数与理论值都有一些偏差,其中日光灯的色温参数设置与理论值有较大的偏差,实际效果也证明该日光灯的参数设置使得在家用日光灯环境下拍摄得到的照片颜色偏蓝。修改其参数后实拍效果明显改善。(再查一些资料可以看到通常会有两种荧光灯色温 4000 和 5000K,目前我所接触到的应该是5000K居多)
1.1.4         调试和验证
具体参数的调整,应该在灯箱环境下,使用各种已知色温的标准光源对标准色卡拍摄,在Pc机上由取色工具测量得到其与标准色板的RGB分量上的色彩偏差,相应的调整各分量增益的比例关系。为了更精确的得到结果,曝光量增益的设置在此之前应该相对准确的校正过

颜色相关特效处理
1.1       grayscale (灰阶)
灰阶图的效果就是将彩色图片转换为黑白图片。
1.2       理论
理论上,在YUV空间,将UV分量丢弃,只保留Y分量,这样就可以得到黑白图像,这也是彩色电式机信号能兼容黑白电视机的原理。如下图理论上Y值一样的颜色(右边是用acdsee转成灰度图的效果),在grayscale模式下看应该是一样的颜色。
    
算法上的操作,理论上应该把UV值改成灰色对应数值就可以了。不过根据软件算法和硬件结构的不同,具体代码也会有不同。
1.3       以某平台为例
核心的两行代码如下:
       SET_HUE_U_GAIN(0);
       SET_HUE_V_GAIN(0);
这里设置UV GAIN为0,如果UV offset设置为128的话,最终得到的UV就是128,这就和理论是相符合的。
1.4       sepia / sepiagreen / sepiablue
所谓的复古(绿,蓝)就是在灰阶的基础上,对UV值额外再做了一个offset,将灰度图转换成某种颜色的梯度图。理论上为了获得蓝色效果,应该增加蓝色差信号,减小红色差信号。即增大U,减小V。
以sepiablue效果为例,这里的字节的MSB表示符号位:所以88为88,158为-30。
    SET_HUE_U_GAIN(0); 
    SET_HUE_V_GAIN(0); 
    SET_HUE_U_OFFSET(88);
    SET_HUE_V_OFFSET(158);
 
 
1.5       negative
所谓负片效果,就是将图像的颜色反转,看起来就像是在看胶片底片时的效果。这从理论上也很容易理解和处理,就是在RGB空间,取其补色,具体的操作就是用255分别减去RGB得到新的RGB值。通常会在ISP中实现该功能。
 
2        小结
理解了原理,要做出其它颜色变换方面的效果就很容易了。
基本上,在颜色校正和处理方面,需要考虑的相关参数大致包括:
自动WB上下限,自动白平衡时的目标范围,RGB gain, UV gain, UV offset, color correction.有些还会有saturation 和 hue相关的设置。
从sensor或ISP硬件处理的流程上说,通常方向是先做RGB gain,再做color correction,最后做YUV空间的处理。所以调整效果的时候,为了减少参数之间的相互影响,基本上也可以按这个顺序来调整参数。


1.1       亮度感应及曝光
1.1.1         感光宽容度
从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度。
人眼的感光宽容度比胶片要高很多,而胶片的感光宽容度要比数码相机的ccd高出很多!了解这个概念之后,我们就不难了解,为什么在逆光的条件下,人眼能看清背光的建筑物以及耀眼的天空云彩。而一旦拍摄出来,要么就是云彩颜色绚烂而建筑物变成了黑糊糊的剪影,要么就是建筑物色彩细节清楚而原本美丽的云彩却成了白色的一片
再看人眼的结构,有瞳孔可以控制通光量,有杆状感光细胞和椎状感光细胞以适应不同的光强,可见即使人眼有着很高的感光宽容度,依然有亮度调节系统,以适应光强变化。
那么对于camera sensor来说,正确的曝光就更为重要了!
1.1.2         自动曝光和18%灰
对于sensor来说,又是如何来判断曝光是否正确呢?很标准的做法就是在YUV空间计算当前图像的Y值的均值。调节各种曝光参数设定(自动或手动),使得该均值落在一个目标值附近的时候,就认为得到了正确的曝光。
那么如何确定这个Y的均值,以及如何调整参数使得sensor能够将当前图像的亮度调整到这个范围呢?
这就涉及到一个概念 18%灰,一般认为室内室外的景物,在通常的情况下,其平均的反光系数大约为18%,而色彩均值,如前所述,可以认为是一种中灰的色调。这样,可以通过对反光率为18%的灰板拍摄,调整曝光参数,使其颜色接近为中等亮度的灰色(Y值为128)。然后,对于通常的景物,就能自动的得到正确的曝光了。
 
当然这种自动判断曝光参数的AE功能不是万能的,对于反光率偏离通常均值的场景,比如雪景,夜景等,用这种方法就无法得到正确的曝光量了。所以在sensor的软件处理模块中,通常还会提供曝光级别的设定功能,强制改变自动曝光的判断标准。比如改变预期的亮度均值等。
1.1.3         曝光级别设定
在多数数码相机和拍照手机上都可以看到曝光级别设定的功能,如前所述,这种设定实际上是在自动曝光的基础上给用户提供一定的曝光控制能力,强制改变camera sensor的曝光判断标准,获得用户想要的效果。
通常的做法就是改变Y值均值的预期值,使得sensor在自动曝光时以新的Y预期值为目标,自动调整Exptime 和 AG。
1.1.4         gamma校正
曝光的均值正确了,不代表整体图像的亮度分布就和人眼所看到的保持一致了。
事实上,人眼对亮度的响应并不是一个线性的比例关系,而各种涉及到光电转换的设备的输入输出特性曲线一般也是非线性的,且表现为幂函数的形式:y=xn ,所以整个图像系统的传递函数是一个幂函数。g= g1×g2×…×gn
对于sensor来说,其响应倒是接近为线性关系,所以为了在各种设备上正确输出符合人眼对亮度的响应的图像,就需要进行校正。
幂函数的指数的倒数就是通常所说的gamma值。
归一化的gamma曲线

校正的函数可以表示为 '>1,通常对于Window的输出显示系统,gamma值为2.2,而对于苹果的输出显示系统和打印系统来说,gamma值为1.8。

实际上,sensor在做gamma校正的时候,通常也一并作了从raw格式的10bit的数据到8bit数据的转换,所以这时候的公式可以表示为         对比度

对比度的调整在一定程度上说,其实也就是对gamma曲线的调整,增大对比度就是提高Gamma值。对于图像处理来说,也有在硬件gamma校正后,单独由软件再进行一次类似的幂函数变换来调整对比度。
1.1.6         曝光参数的调整
曝光强度的调整,可以通过改变曝光时间,也可以通过改变亮度增益AG来实现。
曝光时间受到桢频的限制,比如摄像时要求15帧每秒的话,这时候曝光时间最长就不能超过1/15s,可能还有别的条件限制,实际的曝光时间还要短,在光线弱的情况下,单独调整曝光时间就无法满足帧频的需要了。
这时候还可以调整增益AG,来控制曝光的增益,降低曝光时间。但是,这样做的缺点是以牺牲图像质量为代价的,AG的增强,伴随的必然是信噪比的降低,图像噪声的增强。
所以,以图像质量为优先考虑的时候,曝光参数的调节通常是优先考虑调节曝光时间,其次在考虑曝光增益。当然曝光时间也不能过长以免由于抖动造成图像的模糊,而在拍摄运动场景时,对曝光时间的要求就更高了



1.1       抗噪处理

AG 的增大,不可避免的带来噪点的增多,此外,如果光线较暗,曝光时间过长,也会增加噪点的数目(从数码相机上看,主要是因为长时间曝光,感光元件温度升高,电流噪声造成感光元件噪点的增多),而感光元件本身的缺陷也是噪点甚至坏点的来源之一。因此,通常sensor集成或后端的ISP都带有降噪功能的相关设置。
1.1.1         启动时机
根据噪点形成的原因,主要是AG或Exptime超过一定值后需要启动降噪功能,因此通常需要确定这两个参数的阙值,过小和过大都不好。
从下面的降噪处理的办法将会看到,降噪势附带的带来图像质量的下降,所以过早启动降噪功能,在不必要的情况下做降噪处理不但增加处理器或ISP的负担,还有可能适得其反。而过迟启动降噪功能,则在原本需要它的时候,起不到相应的作用。
1.1.2         判定原则和处理方式
那么如何判定一个点是否是噪点呢?我们从人是如何识别噪点的开始讨论,对于人眼来说,判定一个点是噪点,无外乎就是这一点的亮度或颜色与边上大部分的点差异过大。从噪点产生的机制来说,颜色的异常应该是总是伴随着亮度的异常,而且对亮度异常的处理工作量比颜色异常要小,所以通常sensor ISP的判定原则是一个点的亮度与周围点的亮度的差值大于一个阙值的时候,就认为该点是一个噪点。
处理的方式,通常是对周围的点取均值来替代原先的值,这种做法并不增加信息量,类似于一个模糊算法。
对于高端的数码相机,拥有较强的图像处理芯片,在判定和处理方面是否有更复杂的算法,估计也是有可能的。比如亮度和颜色综合作为标准来判定噪点,采用运算量更大的插值算法做补偿,对于sensor固有的坏点,噪点,采用屏蔽的方式抛弃其数据(Nikon就是这么做的,其它厂商应该也如此)等等。
1.1.3         效果
对于手机sensor来说,这种降噪处理的作用有多大,笔者个人认为应该很有限,毕竟相对数码相机,手机sensor的镜头太小,通光量小,所以其基准AG势必就比相机的增益要大(比如相当于普通家用数码相机ISO800的水平),这样才能获得同样的亮度,所以电流噪声带来的影响也就要大得多。这样一来,即使最佳情况,噪点也会很多,数据本身的波动就很大,这也就造成我们在手机照片上势必会看到的密密麻麻的花点,如果全部做平均,降低了噪点的同时,图像也会变得模糊,所以手机噪点的判断阙值会设得比较高,以免涉及面过大,模糊了整体图像。这样一来一是数据本身就差,二是降噪的标准也降低了,造成总体效果不佳。
1.2       数码变焦
数码变焦可以有两种形式:
其一,是通过插值算法,对图像进行插值运算,将图像的尺寸扩大到所需的规格,这种算法就其效果而言,并不理想,尤其是当使用在手机上的时候,手机上的摄像头本身得到的数据就有较大的噪声,再插值的话,得到的图像几乎没法使用。实际上,即使是数码相机的数码变焦功能也没有太大的实用价值。如果插值算法没有硬件支持,则需要在应用层实现。我司某平台的数码变焦用的就是该种办法。
 
其二,其实是一种伪数码变焦的形式,当摄像头不处在最大分辨率格式的情况下,比如130万像素的sensor使用640*480的规格拍照时,仍旧设置sersor工作在1280*960的分辨率下,而后通过采集中央部分的图像来获取640*480的照片,使得在手机上看来所拍物体尺寸被放大了一倍。也有很多手机采用的是这种数码变焦方式,这种办法几乎不需要额外的算法支持,对图像质量也没有影响,缺点是只有小尺寸情况下可以采用。此外在DV方式下也可以实现所谓的数码变焦放大拍摄功能。(这应该是一个卖点,对Dv来说,这种数码变焦还是有实际意义的)
要采用这种变焦模式,驱动需要支持windowing功能,获取所需部分的sensor图像数据。
1.3       频闪抑制功能
1.3.1         何谓频闪
日常使用的普通光源如白炽灯、日光灯、石英灯等都是直接用220/50Hz交流电工作,每秒钟内正负半周各变化50次,因而导致灯光在1秒钟内发生100(50×2)次的闪烁,再加上市电电压的不稳定,灯光忽明忽暗,这样就产生了所谓的“频闪”。
下表显示了几种光源的光强波动情况:
因为人眼对光强变化有一定的迟滞和适应性,所以通常看不出光源的亮度变化。但是依然还是会增加眼睛的疲劳程度。所以市场上才会有所谓的无频闪灯销售。
1.3.2         对频闪的抑制
对于camera sensor来说,没有人眼的迟滞和适应过程,所以对光源亮度的变化是比较敏感的。如果不加抑制,在预览和DV模式下,可能会有明显的图像的明亮变化闪烁的现象发生。
如何解决呢?考虑到频闪的周期性,在一个周期内,光源亮度的累积值,应该是大体一致的,所以,如果控制曝光的时间是频闪周期的整倍数,那么每一帧图像的亮度就大体是一致的了,这样就可以有效地抑制频闪对图像亮度的影响。
所以,在自动曝光的模式下,sensor会根据频闪的频率,调整曝光时间为其周期的整倍数。 因为各地的交流电的频率不同,所以有50Hz/60Hz之分。
在具体设置相关Sensor寄存器的时候,要根据电流频率和sensor的时钟频率,分辨率等,计算出频闪周期对应的时钟周期数等。



1        前言
 
自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心理联合作用的过程,所以在不同的应用领域中为了更好更准确的满足各自的需求,就出现了各种各样的色彩空间模型来量化的描述颜色。我们比较常接触到的就包括 RGB / CMYK / YIQ / YUV / HSI等等。
 
对于数字电子多媒体领域来说,我们经常接触到的色彩空间的概念,主要是RGB , YUV这两种(实际上,这两种体系包含了许多种具体的颜色表达方式和模型,如sRGB, Adobe RGB, YUV422, YUV420 …), RGB是按三基色加光系统的原理来描述颜色,而YUV则是按照 亮度,色差的原理来描述颜色。
 
       即使只是RGB YUV这两大类色彩空间,所涉及到的知识也是十分丰富复杂的,在下自知不具备足够的相关专业知识,所以本文主要针对工程领域的应用及算法进行讨论。
 
2        YUV相关色彩空间模型
2.1       YUV 与 YIQ YcrCb
对于YUV模型,实际上很多时候,我们是把它和YIQ / YCrCb模型混为一谈的。
实际上,YUV模型用于PAL制式的电视系统,Y表示亮度,UV并非任何单词的缩写。
YIQ模型与YUV模型类似,用于NTSC制式的电视系统。YIQ颜色空间中的I和Q分量相当于将YUV空间中的UV分量做了一个33度的旋转。
YCbCr颜色空间是由YUV颜色空间派生的一种颜色空间,主要用于数字电视系统中。从RGB到YCbCr的转换中,输入、输出都是8位二进制格式。
三者与RGB的转换方程如下:
RGB -> YUV
实际上也就是:
Y=0.30R+0.59G+0.11B U=0.493(BY) V=0.877(RY)
 
RGB -> YIQ
 
RGB -> YCrCb
从公式中,我们关键要理解的一点是,UV / CbCr信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。
我们在数字电子多媒体领域所谈到的YUV格式,实际上准确的说,是以YcrCb色彩空间模型为基础的具有多种存储格式的一类颜色模型的家族(包括YUV444 / YUV422 / YUV420 / YUV420P等等)。并不是传统意义上用于PAL制模拟电视的YUV模型。这些YUV模型的区别主要在于UV数据的采样方式和存储方式,这里就不详述。
而在Camera Sensor中,最常用的YUV模型是 YUV422格式,因为它采用4个字节描述两个像素,能和RGB565模型比较好的兼容。有利于Camera Sensor和Camera controller的软硬件接口设计。
 
3        YUV2RGB快速算法分析
这里指的YUV实际是YcrCb了 8 ) YUV2RGB的转换公式本身是很简单的,但是牵涉到浮点运算,所以,如果要实现快速算法,算法结构本身没什么好研究的了,主要是采用整型运算或者查表来加快计算速度。
首先可以推导得到转换公式为:
       R = Y + 1.4075 *(V-128)
       G = Y – 0.3455 *(U –128) – 0.7169 *(V –128)
       B = Y + 1.779 *(U – 128)
3.1       整型算法
要用整型运算代替浮点运算,当然是要用移位的办法了,我们可以很容易得到下列算法:
 
       u = YUVdata[UPOS] - 128;
       v = YUVdata[VPOS] - 128;
     
rdif = v + ((v * 103) >> 8);
       invgdif = ((u * 88) >> 8) +((v * 183) >> 8);
       bdif = u +( (u*198) >> 8);
 
       r = YUVdata[YPOS] + rdif;
       g = YUVdata[YPOS] - invgdif;
       b = YUVdata[YPOS] + bdif;
 
为了防止出现溢出,还需要判错计算的结果是否在0-255范围内,做类似下面的判断。
       if (r>255)
              r=255;
       if (r<0)
              r=0;
要从RGB24转换成RGB565数据还要做移位和或运算:
       RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
       RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
3.2       部分查表法
查表法首先可以想到的就是用查表替代上述整型算法中的乘法运算。
       rdif = fac_1_4075[u];
       invgdif = fac_m_0_3455[u] + fac_m_0_7169[v];
       bdif = fac_1_779[u];
这里一共需要4个1维数组,下标从0开始到255,表格共占用约1K的内存空间。uv可以不需要做减128的操作了。在事先计算对应的数组元素的值的时候计算在内就好了。
对于每个像素,部分查表法用查表替代了2次减法运算和4次乘法运算,4次移位运算。但是,依然需要多次加法运算和6次比较运算和可能存在的赋值操作,相对第一种方法运算速度提高并不明显。
3.3       完全查表法
那么是否可以由YUV直接查表得到对应的RGB值呢?乍一看似乎不太可能,以最复杂的G的运算为例,因为G与YUV三者都相关,所以类似 G=YUV2G[Y][U][V]这样的算法,一个三维下标尺寸都为256的数组就需要占用2的24次方约16兆空间,绝对是没法接受的。所以目前多数都是采用部分查表法。
但是,如果我们仔细分析就可以发现,对于G我们实际上完全没有必要采用三维数组,因为Y只与UV运算的结果相关,与UV的个体无关,所以我们可以采用二次查表的方法将G的运算简化为对两个二维数组的查表操作,如下:
G = yig2g_table[ y ][ uv2ig_table[ u ][ v ] ];
而RB本身就只和YU或YV相关,所以这样我们一共需要4个8*8的二维表格,需要占用4乘2的16次方共256K内存。基本可以接受。但是对于手机这样的嵌入式运用来说,还是略有些大了。
进一步分析,我们可以看到,因为在手机等嵌入式运用上我们最终是要把数据转换成RGB565格式送到LCD屏上显示的,所以,对于RGB三分量来说,我们根本不需要8bit这么高的精度,为了简单和运算的统一起见,对每个分量我们其实只需要高6bit的数据就足够了,所以我们可以进一步把表格改为4个6*6的二维表格,这样一共只需要占用16K内存!在计算表格元素值的时候还可以把最终的溢出判断也事先做完。最后的算法如下:
 
y = (YUVdata[Y1POS] >> 2);
u = (YUVdata[UPOS] >> 2);
    v = (YUVdata[VPOS] >> 2);
   
    r = yv2r_table[ y ][ v ];
    g = yig2g_table[ y ][ uv2ig_table[ u ][ v ] ];
    b = yu2b_table[ y ][ u ];
   
    RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
    RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
 
这样相对部分查表法,我们增加了3次移位运算,而进一步减少了4次加法运算和6次比较赋值操作。
在计算表格元素数值的时候,要考虑舍入和偏移等因数使得计算的中间结果满足数组下标非负的要求,需要一定的技巧:
采用完全查表法,相对于第一种算法,最终运算速度可以有比较明显的提高,具体性能能提高多少,要看所在平台的CPU运算速度和内存存取速度的相对比例。内存存取速度越快,用查表法带来的性能改善越明显。在我的PC上测试的结果性能大约能提高35%。而在某ARM平台上测试只提高了约15%。
3.4       进一步的思考
实际上,上述算法:
    RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
       RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
中的 (r & 0xF8) 和 ( b >> 3) 等运算也完全可以在表格中事先计算出来。另外,YU / YV的取值实际上不可能覆盖满6*6的范围,中间有些点是永远取不到的无输入,RB的运算也可以考虑用5*5的表格。这些都可能进一步提高运算的速度,减小表格的尺寸。
另外,在嵌入式运用中,如果可能尽量将表格放在高速内存如SRAM中应该比放在SDRAM中更加能发挥查表法的优势。
4        RGB2YUV ?
目前觉得这个是没法将3维表格的查表运算化简为2维表格的查表运算了。只能用部分查表法替代其中的乘法运算。
另外,多数情况下,我们需要的还是YUV2RGB的转换,因为从Sensor得到的数据通常我们会用YUV数据,此外JPG和MPEG实际上也是基于YUV格式编码的,所以要显示解码后的数据需要的也是YUV2RGB的运算 8 )运气运气。

转载http://blog.csdn.net/colorant/ 
2017-01-01 13:16:28 hktkfly6 阅读数 1791
1         前言
做为拍照手机的核心模块之一,camera sensor效果的调整,涉及到众多的参数,如果对基本的光学原理及sensor软/硬件对图像处理的原理能有深入的理解和把握的话,对我们的工作将会起 到事半功倍的效果。否则,缺乏了理论的指导,只能是凭感觉和经验去碰,往往无法准确的把握问题的关键,不能掌握sensor调试的核心技术,无法根本的解 决问题。
所以,这里笔者结合自己出于对摄影的爱好所学习的一些图像处理相关的原理,试图通过分析一些与Sensor图像处理相关的因素,和大家分享一下自己的一些理解,共同探讨,共同学习进步。
2         色彩感应及校正
2.1        原理
人眼对色彩的识别,是基于人眼对光线存在三种不同的感应单元,不同的感应单元对不同波段的光有不同的响应曲线的原理,通过大脑的合成得到色彩的感知。 一般来说,我们可以通俗的用RGB三基色的概念来理解颜色的分解和合成。
 
理论上,如果人眼和sensor对光谱的色光的响应,在光谱上的体现如下的话,基本上对三色光的响应,相互之间不会发生影响,没有所谓的交叉效应。
 
但是,实际情况并没有如此理想,下图表示了人眼的三色感应系统对光谱的响应情况。可见RGB的响应并不是完全独立的。
下图则表示了某Kodak相机光谱的响应。可见其与人眼的响应曲线有较大的区别。
2.2        对sensor的色彩感应的校正
既然我们已经看到sensor对光谱的响应,在RGB各分量上与人眼对光谱的响应通常是有偏差的,当然就需要对其进行校正。不光是在交叉效应上,同样对色彩各分量的响应强度也需要校正。通常的做法是通过一个色彩校正矩阵对颜色进行一次校正。

1

该色彩校正的运算通常是由sensor模块集成或后端的ISP完成,软件通过修改相关寄存器得到正确的校正结果。值得注意的一点是,由于RGB -> YUV的转换也是通过一个3*3的变换矩阵来实现的,所以有时候这两个矩阵在ISP处理的过程中会合并在一起,通过一次矩阵运算操作完成色彩的校正和颜色 空间的转换。
3         颜色空间
3.1        分类
实际上颜色的描述是非常复杂的,比如RGB三基色加光系统就不能涵盖所有可能的颜色,出于各种色彩表达,以及色彩变换和软硬件应用的需求,存在各种各样的颜色模型及色彩空间的表达方式。这些颜色模型,根据不同的划分标准,可以按不同的原则划分为不同的类别。
匹配任意可见光所需的三原色光比例曲线
 
对于sensor来说,我们经常接触到的色彩空间的概念,主要是RGB , YUV这两种(实际上,这两种体系包含了许多种不同的颜色表达方式和模型,如sRGB, Adobe RGB, YUV422, YUV420 …), RGB如前所述就是按三基色加光系统的原理来描述颜色,而YUV则是按照 亮度,色差的原理来描述颜色。
3.1.1                RGB <-> YUV的转换
不比其它颜色空间的转换有一个标准的转换公式,因为YUV在很大程度上是与硬件相关的,所以RGB与YUV的转换公式通常会多个版本,略有不同。
 
常见的公式如下:
Y=0.30R+0.59G+0.11B 
U=0.493(B
Y) = 0.15R0.29G+0.44B 
V=0.877(R
Y) = 0.62R0.52G0.10B
 
但是这样获得的YUV值存在着负值以及取值范围上下限之差不为255等等问题,不利于计算机处理,所以根据不同的理解和需求,通常在软件处理中会用到各种不同的变形的公式,这里就不列举了。
体现在Sensor上,我们也会发现有些Sensor可以设置YUV的输出取值范围。原因就在于此。
从公式中,我们关键要理解的一点是,UV 信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。


1.1        白平衡
1.1.1          色温
色温的定义:将黑体从绝对零度开始加温,温度每升高一度称为1开氏度(用字母K来表示),当温度升高到一定程度时候,黑体便辐射出可见光,其光谱成份以及给人的感觉也会着温度的不断升高发生相应的变化。于是,就把黑体辐射一定色光的温度定为发射相同色光光源的色温。
常见光源色温:
光源                        色温(K)
    钨丝灯(白炽灯)            2500-3200k
    碳棒灯                      4000-5500k
    荧光灯(日光灯,节能灯)   4500-6500k
氙灯                        5600 k
炭精灯                      5500~6500k
    日光平均                    5400k
    有云天气下的日光            6500-7000k
    阴天日光                    12000-18000k
 
随着色温的升高,光源的颜色由暖色向冷色过渡,光源中的能量分布也由红光端向蓝光端偏移。
值得注意的是,实际光源的光谱分布各不相同,而色温只是代表了能量的偏重程度,并不反映具体的光谱分布,所以即使相同色温的光源,也可能引起不同的色彩反应。
人眼及大脑对色温有一定的生理和心理的自适应性,所以看到的颜色受色温偏移的影响较小,而camera的sersor没有这种能力,所以拍出来的照片不经过白平衡处理的话,和人眼看到的颜色会有较大的偏差(虽然人眼看到的和白光下真实的色彩也有偏差)。
太阳光色温随天气和时间变化的原因,与不同频率光的折射率有关:
波长长的光线,折射率小,透射能力强,波长短的光线,折射率大,容易被散射,折射率低,这也就是为什么交通灯用红色,防雾灯通常是黄色,天空为什么是蓝色的等等现象的原因。
知道了这一点,太阳光色温变化的规律和原因也就可以理解和分析了,留给大家自己思考。
 
 
1.1.1          色温变化时的色彩校正
所以从理论上可以看出,随着色温的升高,要对色温进行较正,否则,物体在这样的光线条件下所表现出来的颜色就会偏离其正常的颜色,因此需要降低 sensor对红色的增益,增加sersor对蓝光的增益。同时在调整参数时一定程度上要考虑到整体亮度的要保持大致的不变,即以YUV来衡量时,Y值要 基本保持不变,理论上认为可以参考RGB->YUV变换公式中,RGB三分量对Y值的贡献,从而确定RGAIN和BGAIN的变化的比例关系。但实 际情况比这还要复杂一些,要考虑到不同sensor对R,B的感光的交叉影响和非线性,所以最佳值可能和理论值会有一些偏差。
1.1.2          自动白平衡原理
1.1.2.1        原理
自动白平衡是基于假设场景的色彩的平均值落在一个特定的范围内,如果测量得到结果偏离该范围,则调整对应参数,校正直到其均值落入指定范围。该 处理过程可能基于YUV空间,也可能基于RGB空间来进行。对于Sensor来说,通常的处理方式是通过校正R/B增益,使得UV值落在一个指定的范围 内。从而实现自动白平衡。
 
1.1.2.2        特殊情况的处理
在自动白平衡中,容易遇到的问题是,如果拍摄的场景,排除光线色温的影响,其本身颜色就是偏离平均颜色值的,比如大面积的偏向某种颜色的图案如:草地,红旗,蓝天等等,这时候,强制白平衡将其平均颜色调整到灰色附近,图像颜色就会严重失真。
因此,通常的做法是:在处理自动白平衡时,除了做为目标结果的预期颜色范围外,另外再设置一对源图像的颜色范围阙值,如果未经处理的图像其颜色均值超出了该阙值的话,根本就不对其做自动白平衡处理。由此保证了上述特殊情况的正确处理。
可见,这两对阙值的确定对于自动白平衡的效果起着关键性的作用。
1.1.3          某平台的例子
英文代码              中文界面       色温       色温       RGAIN, GGAIN,   BGAIN
cloud           阴天        7500k   0x1D4C, 0x00CD, 0x0085, 0x0080
daylight        日光        6500k   0x1964, 0x00A3, 0x0080, 0x0088
INCANDESCENCE   白热光    5000k   0x1388, 0x00A5, 0x0080, 0x0088
FLUORESCENT     日光灯      4400k   0x1130, 0x0098, 0x0080, 0x00A8
TUNGSTEN        钨丝灯      2800k   0x0AF0, 0x0080, 0x0081, 0x00A4
 
可以看到随着色温的升高,其变化规律基本符合上节中的理论分析。不过这里多数参数与理论值都有一些偏差,其中日光灯的色温参数设置与理论值有较 大的偏差,实际效果也证明该日光灯的参数设置使得在家用日光灯环境下拍摄得到的照片颜色偏蓝。修改其参数后实拍效果明显改善。(再查一些资料可以看到通常 会有两种荧光灯色温 4000 和 5000K,目前我所接触到的应该是5000K居多)
1.1.4          调试和验证
具体参数的调整,应该在灯箱环境下,使用各种已知色温的标准光源对标准色卡拍摄,在Pc机上由取色工具测量得到其与标准色板的RGB分量上的色彩偏差,相应的调整各分量增益的比例关系。为了更精确的得到结果,曝光量增益的设置在此之前应该相对准确的校正过

颜色相关特效处理
1.1        grayscale (灰阶)
灰阶图的效果就是将彩色图片转换为黑白图片。
1.2        理论
理论上,在YUV空间,将UV分量丢弃,只保留Y分量,这样就可以得到黑白图像,这也是彩色电式机信号能兼容黑白电视机的原理。如下图理论上Y值一样的颜色(右边是用acdsee转成灰度图的效果),在grayscale模式下看应该是一样的颜色。
     
算法上的操作,理论上应该把UV值改成灰色对应数值就可以了。不过根据软件算法和硬件结构的不同,具体代码也会有不同。
1.3        以某平台为例
核心的两行代码如下:
       SET_HUE_U_GAIN(0);
       SET_HUE_V_GAIN(0);
这里设置UV GAIN为0,如果UV offset设置为128的话,最终得到的UV就是128,这就和理论是相符合的。
1.4        sepia / sepiagreen / sepiablue
所谓的复古(绿,蓝)就是在灰阶的基础上,对UV值额外再做了一个offset,将灰度图转换成某种颜色的梯度图。理论上为了获得蓝色效果,应该增加蓝色差信号,减小红色差信号。即增大U,减小V。
以sepiablue效果为例,这里的字节的MSB表示符号位:所以88为88,158为-30。
    SET_HUE_U_GAIN(0); 
    SET_HUE_V_GAIN(0); 
    SET_HUE_U_OFFSET(88);
    SET_HUE_V_OFFSET(158);
 
  
1.5        negative
所谓负片效果,就是将图像的颜色反转,看起来就像是在看胶片底片时的效果。这从理论上也很容易理解和处理,就是在RGB空间,取其补色,具体的操作就是用255分别减去RGB得到新的RGB值。通常会在ISP中实现该功能。
  
2         小结
理解了原理,要做出其它颜色变换方面的效果就很容易了。
基本上,在颜色校正和处理方面,需要考虑的相关参数大致包括:
自动WB上下限,自动白平衡时的目标范围,RGB gain, UV gain, UV offset, color correction.有些还会有saturation 和 hue相关的设置。
从sensor或ISP硬件处理的流程上说,通常方向是先做RGB gain,再做color correction,最后做YUV空间的处理。所以调整效果的时候,为了减少参数之间的相互影响,基本上也可以按这个顺序来调整参数。


1.1        亮度感应及曝光
1.1.1          感光宽容度
从最明亮到最黑暗,假设人眼能够看到一定的范围,那么胶片(或CCD等电子感光器件)所能表现的远比人眼看到的范围小的多,而这个有限的范围就是感光宽容度。
人眼的感光宽容度比胶片要高很多,而胶片的感光宽容度要比数码相机的ccd高出很多!了解这个概念之后,我们就不难了解,为什么在逆光的条件 下,人眼能看清背光的建筑物以及耀眼的天空云彩。而一旦拍摄出来,要么就是云彩颜色绚烂而建筑物变成了黑糊糊的剪影,要么就是建筑物色彩细节清楚而原本美 丽的云彩却成了白色的一片
再看人眼的结构,有瞳孔可以控制通光量,有杆状感光细胞和椎状感光细胞以适应不同的光强,可见即使人眼有着很高的感光宽容度,依然有亮度调节系统,以适应光强变化。
那么对于camera sensor来说,正确的曝光就更为重要了!
1.1.2          自动曝光和18%灰
对于sensor来说,又是如何来判断曝光是否正确呢?很标准的做法就是在YUV空间计算当前图像的Y值的均值。调节各种曝光参数设定(自动或手动),使得该均值落在一个目标值附近的时候,就认为得到了正确的曝光。
那么如何确定这个Y的均值,以及如何调整参数使得sensor能够将当前图像的亮度调整到这个范围呢?
这就涉及到一个概念 18%灰,一般认为室内室外的景物,在通常的情况下,其平均的反光系数大约为18%,而色彩均值,如前所述,可以认为是一种中灰的色调。这样,可以通过对 反光率为18%的灰板拍摄,调整曝光参数,使其颜色接近为中等亮度的灰色(Y值为128)。然后,对于通常的景物,就能自动的得到正确的曝光了。
 
当然这种自动判断曝光参数的AE功能不是万能的,对于反光率偏离通常均值的场景,比如雪景,夜景等,用这种方法就无法得到正确的曝光量了。所以在sensor的软件处理模块中,通常还会提供曝光级别的设定功能,强制改变自动曝光的判断标准。比如改变预期的亮度均值等。
1.1.3          曝光级别设定
在多数数码相机和拍照手机上都可以看到曝光级别设定的功能,如前所述,这种设定实际上是在自动曝光的基础上给用户提供一定的曝光控制能力,强制改变camera sensor的曝光判断标准,获得用户想要的效果。
通常的做法就是改变Y值均值的预期值,使得sensor在自动曝光时以新的Y预期值为目标,自动调整Exptime 和 AG。
1.1.4          gamma校正
曝光的均值正确了,不代表整体图像的亮度分布就和人眼所看到的保持一致了。
事实上,人眼对亮度的响应并不是一个线性的比例关系,而各种涉及到光电转换的设备的输入输出特性曲线一般也是非线性的,且表现为幂函数的形式:y=xn ,所以整个图像系统的传递函数是一个幂函数。g= g1×g2×…×gn
对于sensor来说,其响应倒是接近为线性关系,所以为了在各种设备上正确输出符合人眼对亮度的响应的图像,就需要进行校正。
幂函数的指数的倒数就是通常所说的gamma值。
归一化的gamma曲线

校正的函数可以表示为 '>1,通常对于Window的输出显示系统,gamma值为2.2,而对于苹果的输出显示系统和打印系统来说,gamma值为1.8。

实际上,sensor在做gamma校正的时候,通常也一并作了从raw格式的10bit的数据到8bit数据的转换,所以这时候的公式可以表示为           对比度

对比度的调整在一定程度上说,其实也就是对gamma曲线的调整,增大对比度就是提高Gamma值。对于图像处理来说,也有在硬件gamma校正后,单独由软件再进行一次类似的幂函数变换来调整对比度。
1.1.6          曝光参数的调整
曝光强度的调整,可以通过改变曝光时间,也可以通过改变亮度增益AG来实现。
曝光时间受到桢频的限制,比如摄像时要求15帧每秒的话,这时候曝光时间最长就不能超过1/15s,可能还有别的条件限制,实际的曝光时间还要短,在光线弱的情况下,单独调整曝光时间就无法满足帧频的需要了。
这时候还可以调整增益AG,来控制曝光的增益,降低曝光时间。但是,这样做的缺点是以牺牲图像质量为代价的,AG的增强,伴随的必然是信噪比的降低,图像噪声的增强。
所以,以图像质量为优先考虑的时候,曝光参数的调节通常是优先考虑调节曝光时间,其次在考虑曝光增益。当然曝光时间也不能过长以免由于抖动造成图像的模糊,而在拍摄运动场景时,对曝光时间的要求就更高了



1.1        抗噪处理

AG 的增大,不可避免的带来噪点的增多,此外,如果光线较暗,曝光时间过长,也会增加噪点的数目(从数码相机上看,主要是因为长时间曝光,感光元件温度升高, 电流噪声造成感光元件噪点的增多),而感光元件本身的缺陷也是噪点甚至坏点的来源之一。因此,通常sensor集成或后端的ISP都带有降噪功能的相关设 置。
1.1.1          启动时机
根据噪点形成的原因,主要是AG或Exptime超过一定值后需要启动降噪功能,因此通常需要确定这两个参数的阙值,过小和过大都不好。
从下面的降噪处理的办法将会看到,降噪势附带的带来图像质量的下降,所以过早启动降噪功能,在不必要的情况下做降噪处理不但增加处理器或ISP的负担,还有可能适得其反。而过迟启动降噪功能,则在原本需要它的时候,起不到相应的作用。
1.1.2          判定原则和处理方式
那么如何判定一个点是否是噪点呢?我们从人是如何识别噪点的开始讨论,对于人眼来说,判定一个点是噪点,无外乎就是这一点的亮度或颜色与边上大 部分的点差异过大。从噪点产生的机制来说,颜色的异常应该是总是伴随着亮度的异常,而且对亮度异常的处理工作量比颜色异常要小,所以通常sensor ISP的判定原则是一个点的亮度与周围点的亮度的差值大于一个阙值的时候,就认为该点是一个噪点。
处理的方式,通常是对周围的点取均值来替代原先的值,这种做法并不增加信息量,类似于一个模糊算法。
对于高端的数码相机,拥有较强的图像处理芯片,在判定和处理方面是否有更复杂的算法,估计也是有可能的。比如亮度和颜色综合作为标准来判定噪 点,采用运算量更大的插值算法做补偿,对于sensor固有的坏点,噪点,采用屏蔽的方式抛弃其数据(Nikon就是这么做的,其它厂商应该也如此)等 等。
1.1.3          效果
对于手机sensor来说,这种降噪处理的作用有多大,笔者个人认为应该很有限,毕竟相对数码相机,手机sensor的镜头太小,通光量小,所 以其基准AG势必就比相机的增益要大(比如相当于普通家用数码相机ISO800的水平),这样才能获得同样的亮度,所以电流噪声带来的影响也就要大得多。 这样一来,即使最佳情况,噪点也会很多,数据本身的波动就很大,这也就造成我们在手机照片上势必会看到的密密麻麻的花点,如果全部做平均,降低了噪点的同 时,图像也会变得模糊,所以手机噪点的判断阙值会设得比较高,以免涉及面过大,模糊了整体图像。这样一来一是数据本身就差,二是降噪的标准也降低了,造成 总体效果不佳。
1.2        数码变焦
数码变焦可以有两种形式:
其一,是通过插值算法,对图像进行插值运算,将图像的尺寸扩大到所需的规格,这种算法就其效果而言,并不理想,尤其是当使用在手机上的时候,手 机上的摄像头本身得到的数据就有较大的噪声,再插值的话,得到的图像几乎没法使用。实际上,即使是数码相机的数码变焦功能也没有太大的实用价值。如果插值 算法没有硬件支持,则需要在应用层实现。我司某平台的数码变焦用的就是该种办法。
 
其二,其实是一种伪数码变焦的形式,当摄像头不处在最大分辨率格式的情况下,比如130万像素的sensor使用640*480的规格拍照时, 仍旧设置sersor工作在1280*960的分辨率下,而后通过采集中央部分的图像来获取640*480的照片,使得在手机上看来所拍物体尺寸被放大了 一倍。也有很多手机采用的是这种数码变焦方式,这种办法几乎不需要额外的算法支持,对图像质量也没有影响,缺点是只有小尺寸情况下可以采用。此外在DV方 式下也可以实现所谓的数码变焦放大拍摄功能。(这应该是一个卖点,对Dv来说,这种数码变焦还是有实际意义的)
要采用这种变焦模式,驱动需要支持windowing功能,获取所需部分的sensor图像数据。
1.3        频闪抑制功能
1.3.1          何谓频闪
日常使用的普通光源如白炽灯、日光灯、石英灯等都是直接用220/50Hz交流电工作,每秒钟内正负半周各变化50次,因而导致灯光在1秒钟内发生100(50×2)次的闪烁,再加上市电电压的不稳定,灯光忽明忽暗,这样就产生了所谓的“频闪”。
下表显示了几种光源的光强波动情况:
因为人眼对光强变化有一定的迟滞和适应性,所以通常看不出光源的亮度变化。但是依然还是会增加眼睛的疲劳程度。所以市场上才会有所谓的无频闪灯销售。
1.3.2          对频闪的抑制
对于camera sensor来说,没有人眼的迟滞和适应过程,所以对光源亮度的变化是比较敏感的。如果不加抑制,在预览和DV模式下,可能会有明显的图像的明亮变化闪烁的现象发生。
如何解决呢?考虑到频闪的周期性,在一个周期内,光源亮度的累积值,应该是大体一致的,所以,如果控制曝光的时间是频闪周期的整倍数,那么每一帧图像的亮度就大体是一致的了,这样就可以有效地抑制频闪对图像亮度的影响。
所以,在自动曝光的模式下,sensor会根据频闪的频率,调整曝光时间为其周期的整倍数。 因为各地的交流电的频率不同,所以有50Hz/60Hz之分。
在具体设置相关Sensor寄存器的时候,要根据电流频率和sensor的时钟频率,分辨率等,计算出频闪周期对应的时钟周期数等。



1         前言
 
自然界的颜色千变万化,为了给颜色一个量化的衡量标准,就需要建立色彩空间模型来描述各种各样的颜色,由于人对色彩的感知是一个复杂的生理和心 理联合作用的过程,所以在不同的应用领域中为了更好更准确的满足各自的需求,就出现了各种各样的色彩空间模型来量化的描述颜色。我们比较常接触到的就包括 RGB / CMYK / YIQ / YUV / HSI等等。
 
对于数字电子多媒体领域来说,我们经常接触到的色彩空间的概念,主要是RGB , YUV这两种(实际上,这两种体系包含了许多种具体的颜色表达方式和模型,如sRGB, Adobe RGB, YUV422, YUV420 …), RGB是按三基色加光系统的原理来描述颜色,而YUV则是按照 亮度,色差的原理来描述颜色。
 
       即使只是RGB YUV这两大类色彩空间,所涉及到的知识也是十分丰富复杂的,在下自知不具备足够的相关专业知识,所以本文主要针对工程领域的应用及算法进行讨论。
 
2         YUV相关色彩空间模型
2.1        YUV 与 YIQ YcrCb
对于YUV模型,实际上很多时候,我们是把它和YIQ / YCrCb模型混为一谈的。
实际上,YUV模型用于PAL制式的电视系统,Y表示亮度,UV并非任何单词的缩写。
YIQ模型与YUV模型类似,用于NTSC制式的电视系统。YIQ颜色空间中的I和Q分量相当于将YUV空间中的UV分量做了一个33度的旋转。
YCbCr颜色空间是由YUV颜色空间派生的一种颜色空间,主要用于数字电视系统中。从RGB到YCbCr的转换中,输入、输出都是8位二进制格式。
三者与RGB的转换方程如下:
RGB -> YUV
实际上也就是:
Y=0.30R+0.59G+0.11B  U=0.493(BY)  V=0.877(RY)
 
RGB -> YIQ
 
RGB -> YCrCb
从公式中,我们关键要理解的一点是,UV / CbCr信号实际上就是蓝色差信号和红色差信号,进而言之,实际上一定程度上间接的代表了蓝色和红色的强度,理解这一点对于我们理解各种颜色变换处理的过程会有很大的帮助。
我们在数字电子多媒体领域所谈到的YUV格式,实际上准确的说,是以YcrCb色彩空间模型为基础的具有多种存储格式的一类颜色模型的家族(包 括YUV444 / YUV422 / YUV420 / YUV420P等等)。并不是传统意义上用于PAL制模拟电视的YUV模型。这些YUV模型的区别主要在于UV数据的采样方式和存储方式,这里就不详述。
而在Camera Sensor中,最常用的YUV模型是 YUV422格式,因为它采用4个字节描述两个像素,能和RGB565模型比较好的兼容。有利于Camera Sensor和Camera controller的软硬件接口设计。
 
3         YUV2RGB快速算法分析
这里指的YUV实际是YcrCb了 8 ) YUV2RGB的转换公式本身是很简单的,但是牵涉到浮点运算,所以,如果要实现快速算法,算法结构本身没什么好研究的了,主要是采用整型运算或者查表来加快计算速度。
首先可以推导得到转换公式为:
       R = Y + 1.4075 *(V-128)
       G = Y – 0.3455 *(U –128) – 0.7169 *(V –128)
       B = Y + 1.779 *(U – 128)
3.1        整型算法
要用整型运算代替浮点运算,当然是要用移位的办法了,我们可以很容易得到下列算法:
 
       u = YUVdata[UPOS] - 128;
       v = YUVdata[VPOS] - 128;
     
rdif = v + ((v * 103) >> 8);
       invgdif = ((u * 88) >> 8) +((v * 183) >> 8);
       bdif = u +( (u*198) >> 8);
 
       r = YUVdata[YPOS] + rdif;
       g = YUVdata[YPOS] - invgdif;
       b = YUVdata[YPOS] + bdif;
 
为了防止出现溢出,还需要判错计算的结果是否在0-255范围内,做类似下面的判断。
       if (r>255)
              r=255;
       if (r<0)
              r=0;
要从RGB24转换成RGB565数据还要做移位和或运算:
       RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
       RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
3.2        部分查表法
查表法首先可以想到的就是用查表替代上述整型算法中的乘法运算。
       rdif = fac_1_4075[u];
       invgdif = fac_m_0_3455[u] + fac_m_0_7169[v];
       bdif = fac_1_779[u];
这里一共需要4个1维数组,下标从0开始到255,表格共占用约1K的内存空间。uv可以不需要做减128的操作了。在事先计算对应的数组元素的值的时候计算在内就好了。
对于每个像素,部分查表法用查表替代了2次减法运算和4次乘法运算,4次移位运算。但是,依然需要多次加法运算和6次比较运算和可能存在的赋值操作,相对第一种方法运算速度提高并不明显。
3.3        完全查表法
那么是否可以由YUV直接查表得到对应的RGB值呢?乍一看似乎不太可能,以最复杂的G的运算为例,因为G与YUV三者都相关,所以类似 G=YUV2G[Y][U][V]这样的算法,一个三维下标尺寸都为256的数组就需要占用2的24次方约16兆空间,绝对是没法接受的。所以目前多数都 是采用部分查表法。
但是,如果我们仔细分析就可以发现,对于G我们实际上完全没有必要采用三维数组,因为Y只与UV运算的结果相关,与UV的个体无关,所以我们可以采用二次查表的方法将G的运算简化为对两个二维数组的查表操作,如下:
G = yig2g_table[ y ][ uv2ig_table[ u ][ v ] ];
而RB本身就只和YU或YV相关,所以这样我们一共需要4个8*8的二维表格,需要占用4乘2的16次方共256K内存。基本可以接受。但是对于手机这样的嵌入式运用来说,还是略有些大了。
进一步分析,我们可以看到,因为在手机等嵌入式运用上我们最终是要把数据转换成RGB565格式送到LCD屏上显示的,所以,对于RGB三分量 来说,我们根本不需要8bit这么高的精度,为了简单和运算的统一起见,对每个分量我们其实只需要高6bit的数据就足够了,所以我们可以进一步把表格改 为4个6*6的二维表格,这样一共只需要占用16K内存!在计算表格元素值的时候还可以把最终的溢出判断也事先做完。最后的算法如下:
 
y = (YUVdata[Y1POS] >> 2);
u = (YUVdata[UPOS] >> 2);
    v = (YUVdata[VPOS] >> 2);
   
    r = yv2r_table[ y ][ v ];
    g = yig2g_table[ y ][ uv2ig_table[ u ][ v ] ];
    b = yu2b_table[ y ][ u ];
   
    RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
    RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
 
这样相对部分查表法,我们增加了3次移位运算,而进一步减少了4次加法运算和6次比较赋值操作。
在计算表格元素数值的时候,要考虑舍入和偏移等因数使得计算的中间结果满足数组下标非负的要求,需要一定的技巧:
采用完全查表法,相对于第一种算法,最终运算速度可以有比较明显的提高,具体性能能提高多少,要看所在平台的CPU运算速度和内存存取速度的相 对比例。内存存取速度越快,用查表法带来的性能改善越明显。在我的PC上测试的结果性能大约能提高35%。而在某ARM平台上测试只提高了约15%。
3.4        进一步的思考
实际上,上述算法:
    RGBdata[1] =( (r & 0xF8) | ( g >> 5) );
       RGBdata[0] =( ((g & 0x1C) << 3) | ( b >> 3) );
中的 (r & 0xF8) 和 ( b >> 3) 等运算也完全可以在表格中事先计算出来。另外,YU / YV的取值实际上不可能覆盖满6*6的范围,中间有些点是永远取不到的无输入,RB的运算也可以考虑用5*5的表格。这些都可能进一步提高运算的速度,减 小表格的尺寸。
另外,在嵌入式运用中,如果可能尽量将表格放在高速内存如SRAM中应该比放在SDRAM中更加能发挥查表法的优势。
4         RGB2YUV ?
目前觉得这个是没法将3维表格的查表运算化简为2维表格的查表运算了。只能用部分查表法替代其中的乘法运算。
另外,多数情况下,我们需要的还是YUV2RGB的转换,因为从Sensor得到的数据通常我们会用YUV数据,此外JPG和MPEG实际上也是基于YUV格式编码的,所以要显示解码后的数据需要的也是YUV2RGB的运算 8 )运气运气。

转载http://blog.csdn.net/colorant/  

2017-12-11 18:54:45 lmhuanying1012 阅读数 491

通道在图像处理中的应用 —通道起源

如果问“什么是 photoshop中最重要、最不可缺少的功能?”相信很多人的回答是“图层”。其实,在 photoshop3.0 之前,根本没有图层的功能。在图像处理中,最重要的功能是选区范围。只有正确地运用选区范围,才能够进行精确的合成。如果无法选区,也就无法作出相应的操作或处理。
为了记录选区范围,可以通过黑与白的形式将其保存为单独的图像,进而制作各种效果。人们将这种独立并依附于原图的、用以保存选择区域的黑白图像称为“通道”(channel)。换言之,通道才是图像处理中最重要的部分。
然而,真正懂得Photoshop通道的人并不多。对基本概念的一知半解,造成了技术上的断层,以致某些难点无法突破,这是由学习上的本末倒置所造成的。本文试图通过常用的图像处理方法,来探讨Photoshop通道的本质、运算及其特殊形式,帮助读者从中获得启发,理解本质,掌握应用。


  一、通道起源——传统照相合成技术及其数字化




1 .遮板的应用  


我们知道,照相排版行业的全面数字化不过是最近几年的事情。在此之前,图像合成工作者的工作量之大,内容之枯燥令人难以想象。他们必须将自己关在暗房里,在放大机下面作遮板,以便在底片曝光时有所选择。这种遮板其实就是有选择地在一张透明底片的不同部位涂上黑色染料,让光线不能透过。在曝光时,使遮板与底片重叠放置,这样,遮板上黑色区域下面的底片图像就因为被不透明的黑色遮住而不能被曝光,而只剩下透明部分对应的图像,也就是说完成了对照片的选择曝光。
通道的概念,便是由遮板演变而来的。在通道中,以白色代替透明表示要处理的部分(选择区域);以黑色表示不需处理的部分(非选择区域)。因此,通道也与遮板一样,没有其独立的意义,而只有在依附于其他图像(或模型)存在时,才能体现其功用。而通道与遮板的最大区别,也是通道最大的优越之处,在于通道可以完全由计算机来进行处理,也就是说,它是完全数字化的。




2 .通道——传统技术的数字化




计算机可以不知疲倦的 24 小时工作,而且效率极高。因此,人们不遗余力地将一切可能的信息交由计算机处理,数字化的浪潮席卷全球,图像处理行业也不例外。
如何将一张鲜活的照片变成我们硬盘上的“0 ”与“1 ”呢?在此之前,让我们来看看数字化信息的特点。首先,顾名思义,数字化信息最大的特点就是任何形式的信息都可以用数字完整、准确的表达出来,无论它是一条记录、一通电话、还是一段录影。数字化的这个特点是很容易理解的,我们称之为“解析”。
其次,受到存储及计算等方面的限制,数字化信息的容量必须是有限的。也就是说,要将原来瞬息万变、细致入微的模拟信号解析开来,就必须有所取舍——用一个个足够小的,可解析的“信息元”取代原先的“信息流”。我们看到,这样的“采样”过程必然损失掉了部分元与元之间的原始数据。所以我们必须以某种指标来判断数字化信息与模拟信息的切近程度。显然,在有限长度的“信息流”中,所取的“信息元”越多,这种转化就越为精确,反之,所取的“信息元”越少,切近的程度就越为粗糙。所以,我们用“单位信息流”中“信息元”的数目多寡,来衡量数字化信息的逼真程度。在数字化音频中,这个指标称之为“采样率”与“量化精度”;在数字视频中,称之为“帧频”;在数字化图像中,则称之为“分辨率”。只要这个指标足够大,就足以迷惑人们的感官,让我们的耳朵、眼睛误以为这是一幅连贯的画面,或是一段流畅的音乐,而丝毫察觉不到停顿感或颗粒感。相对于模拟信息的“连续”性质而言,数字信息所具有的这种特点称为“间断”,或者称为“非连续”。
现在,将一张图像用许多等距的水平线与竖直线分割开来,每一个小方格都成为一个像素(pixel),也就是一个独立的信息元,数字化的工作就完成一半了。接下来,我们要做的,就是记录每个像素的颜色信息。  由于我们要讨论的是黑白图像,因此只需记录黑、白、灰的信息(在黑白图像中,它与“亮度”、“灰度”的概念都是等价的),而不用考虑它的色相。但不要忘了,灰度也是有不同级别的,像“深灰”、“浅灰”或“中灰”。
但仅仅用语言描述物体的亮度是远远不够的。上面提到,数字信息具有“间断”的特点,所以有人提出,用 0到 100 之间的整数表示灰度的级别:比如用 0表示纯黑色,用 100 表示纯白色,而 50 则表示将黑白均匀等量混合后所得的颜色。  众所周知,在计算机中,是以位( bit)存储数据的。每一个位只能存储“ 0 ”或“ 1 ”的信息,用以对应二进制的位。让我们看看要表示一个 0到 100 之间的任一整数,需要多少个二进制位: log 2 101=6.6582  也就是说,我们用了 7 位的存储空间,存储了仅用 6.6 位便可存储数据。难道这不是一种浪费么?而这种浪费的根源就在于,我们把黑白之间的灰阶,人为的划分为101段,而不是其他数目。
所以,为了物尽其用,人们通常用2 的整数次幂来划分灰度级别。通常,人们将灰阶划分为256级(用 0~ 255 表示),而这也将正好占据 8个存储位(一字节)的空间。而 8 这个数字的由来,完全是为了使人的肉眼在任一相邻两级的变化中,没有丝毫的察觉。
经历了上述两个步骤,我们将每个像素的灰度信息按照划分好的网格,从上到下,从左到右的顺序依次写入硬盘,数字化的工作就终于完成了。而当我们体验着计算机处理选区飞驰的感觉时,就会明白这一系列且纷繁复杂的转化与操作绝非徒劳了。


二、几种特殊通道类型 




  由上一节内容可以看到,最早的通道概念是传统照相工艺中的遮板演变而来,用以表示选择范围的特殊图像。在这之后,计算机图像处理技术迅速发展,通道的概念又有了大幅度的拓展,进而涵盖了矢量绘图、三维建模、材质、渲染等诸多领域,而不再仅仅局限于平面设计中“选区范围”的原始意义。这些形形色色的“通道”都有着各自不同的名称、用途与计算方法,但又都与原始的通道概念有着本质上的相似,从本质上看:通道仍然没有脱离选区这个大的范围。


1 .原色通道、 Alpha通道与专色通道 




  在前面的描述中,我们已经细致地了解了通道,即单色图像的数字化过程。那么,计算机又是如何用这些数字表示彩色图像的呢?首先,我们来了解一下原色的概念与加减法混合原理。


  在小学美术课上,我们就了解了红黄蓝三原色的概念。这里的红、黄、蓝准确地说应该是洋红(Magenta)、黄(Yellow )与青(Cyan )。将这三种颜色按不同的比例混合,可以得到其他的任意颜色;而这三种颜色最大程度的混合,就会使其范围内所有波长的可见光全部被吸收而显示出黑色。我们将这三种元色称为“光源三原色”,而将这种在混合过程中颜色亮度不断降低的混合方法称为减法混合。


  通常,在印刷中,应用的就是这种减法混合原理:在白色的纸张上通过光源三原色油墨的混合,得到各种色彩及其组合而成的图像。但在实际操作中,通过混合得到的黑色成本高、质量差,所以通常人为地添加一种成本较低的黑色油墨(blacK),与品、黄、青共同印制。因此,这种印刷的过程也被称为“四色印刷”,而其颜色体系被称为“ CMYK 色彩体系”。


对应于印刷中减法混合原理的,是显示元件所遵循的加法混合原理。红( Red )、绿( Green )、蓝( Blue )三个颜色被称为“物体三原色”,三种颜色光的混合,可以得出其它任意色彩,而其最大混合将得到亮度最高的颜色——白色。我们知道,我们身边的绝大多数显示设备(如 CRT 阴极射线显像管、 LCD液晶面板等)都应用了加法混合原理。因此,这些设备在未启动时,底色越黑、亮度越低,其成像效果就越好。显示颜色体系也被称为 RGB颜色体系。


  自然法则是如此的简洁而优美,千变万化的色彩仅仅是三种简单原色的有机组合。因此,任意一张彩色图像都可以看作三张不同原色图像的叠加。既然任意的单色灰阶图都可以被视为通道,那么,我们就完全可以用 3 ~ 4 个通道来记录一张彩色照片。每一个通道记录一个对应原色在彩色图像上的分布信息,故我们称其为“原色通道”。用于显示用途的图片(例如网站彩页)可以被分解为 R 、 G 、 B三个原色通道,而需要输出的图片(例如海报、杂志封面、包装纸等)则被分解为 C、 M 、 Y三个原色通道与一个 K 通道。


  既然每个通道的单一像素需要 8个二进制位的存储空间,那么在三色通道中,每一个像素都由三个单色像素混合而成,也就需要 8 × 3=24个二进制位来进行存储。这样,在数据量变为原来的三倍时,可以表达的色彩数目就变为 2 24 ≈ 1.6× 10 7种。我们通常将由这1600 万个颜色所组成的色域称为“24bit 真彩色”。


2 . Alpha通道 




Alpha 通道是为保存选择区域而专门设计的通道。在生成一个图像文件时,并不必须产生 Alpha通道。通常它是由人们在图像处理过程中人为生成,并从中读取选择区域信息的。因此在输出制版时, Alpha通道会因为与最终生成的图像无关而被删除。但也有时,比如在三维软件最终渲染输出的时候,会附带生成一张Alpha通道,用以在平面处理软件中作后期合成。


  除了 photoshop 的文件格式 PSD 外, GIF与 TIFF 格式的文件都可以保存 Alpha通道。而 GIF文件还可以用 Alpha通道作图像的去背景处理。因此,我们可以利用 GIF文件的这一特性制作任意形状的图形。


3 .专色通道




  为了让自己的印刷作品与众不同,往往要做一些特殊处理。如增加荧光油墨或夜光油墨,套版印制无色系(如烫金)等,这些特殊颜色的油墨(我们称其为“专色”)都无法用三原色油墨混合而成,这时就要用到专色通道与专色印刷了。


  在图像处理软件中,都存有完备的专色油墨列表。我们只须选择需要的专色油墨,就会生成与其相应的专色通道。但在处理时,专色通道与原色通道恰好相反,用黑色代表选取(即喷绘油墨),用白色代表不选取(不喷绘油墨)。这一点是需要特别注意的。


  专色印刷可以让作品在视觉效果上更具质感与震撼力,但由于大多数专色无法在显示器上呈现效果,所以其制作过程也带有相当大的经验成分。


4 .蒙板与贴图混合通道




  蒙板又被称为“遮罩”,可以说是最能体现“遮板”意义的通道应用了。
  在一张图像(或一个图层)上添加一张黑白灰阶图,黑色部分的图像将被隐去(而不是删除),变为透明;白色部分将被完全显现;而灰阶部分将处于半透明状态。蒙板无论在图像合成还是在特效制作方面,都有不可取代的功用。蒙板也可以应用到三维模型的贴图上面。金属上的斑斑锈迹,玻璃上的贴花图案,这些形状不规则的图形,往往要用矩形贴图加蒙板的方式加以处理。这种类型的蒙板由于需要调整它们在三维表面的坐标位置,所以常常被视为一种特殊形式的贴图,称为“透明度贴图”。


  蒙板不仅可以在简单的贴图中使用,更可以在复杂得多维材质中使用。当两种材质在同一表面交错混合时,人们同样需要用通道来处理他们的分布。而与普通蒙板不同的是,这样的“混合通道”是直接应用在两张图像上的:黑色的部分显示 A 图像;白色部分显示 B 图像;灰阶部分则兼而有之。可见,混合通道是由蒙板概念衍生而来,用于控制两张图像叠盖关系的一种简化应用。


5 .置换贴图与凹凸贴图




  在三维软件中,通道并不仅限于处理平面贴图,他也被用于表现更为复杂的材质,甚至用来建立模型。


  试想,我们要对一枚硬币建模:其表面纷繁复杂的图案与花纹一定会给我们的工作带来不少麻烦,用通常的建模手段,几乎无法完成。也许有人会问:我们能不能用一张平面图像来表示三维物体表面的凹凸起伏(就像一张海拔地图那样),而让计算机自动完成繁琐的建模工作呢?答案是:能,而且这张关键的平面图就是通道。


  将一张通道用所谓“置换贴图”的方式贴到物体的表面,这时,计算机就会如是运作:将贴图表面上的节点,按照贴图通道上像素的亮度信息,沿曲面在该点的法线方向进行不同程度的牵引拉伸,要么凹下去,要么凸起来:就像比对着一张用颜色描绘海拔的地图,在泥巴上捏出高山与峡谷一样。现在,我们只要用平面绘图工具绘制一张二维图像,然后将其转化为置换贴图并赋予物体,一枚极具质感的硬币就跃然纸上了。


  置换贴图虽然可以大大节省建模工作量,但由于这样生成的模型不够优化,多边形数目过于繁多,会造成渲染时间的大幅攀升。为此,人们想出一个折中的好办法。在不增加模型复杂度的前提下,使物体表面的凹凸效果近似于置换贴图中生成的真实模型,这就是凹凸贴图算法。凹凸贴图同样以通道为信息源,通过特殊的表面贴图与光影处理,表现出物体的高光与阴影,使其光影效果在大多数情况下能够达到令人信服的程度。


  现在,我们再使用凹凸通道贴图建立一枚硬币模型,并与前面的置换模型进行渲染比对。我们会发现:在“正视”所处理的平面(视线垂直于平面)时,后者与前者有着同样出色的表现,但渲染时间大大优于前者;而在“侧视”(视线垂直于该平面的法线)对比时,置换贴图依旧表现出物体表面真实的起伏形态,而用凹凸贴图处理的平面则平整如初。这也使凹凸贴图的缺点暴露无遗。以上两种算法各有优劣,而在最终决定究竟使用哪一种算法使通道与模型相结合,以达到所需效果时,视角便成为决定性的因素。


6 .矢量通道




  为了减小数据量,人们将逐点描绘的数字图像再一次解析,运用复杂的计算方法将其上的点、线、面与颜色信息转化为简捷的数学公式;这种公式化的图形被称为“矢量图形”;而公式化的通道,则被称为“矢量通道”。矢量图形虽然能够成百上千倍地压缩图像信息量,但其计算方法过于复杂,转化效果也往往不尽人意。因此,他只有在表现轮廓简洁、色块鲜明的几何图形时才有用武之地;而在处理真实效果(如照片)时,则很少派上用场。Photoshop中的“路径”, 3DS中的几种预置贴图, illustrator、 flash 等矢量绘图软件中的蒙板,都是属于这一类型的通道。


  古人云:“勿在沙地筑高台”。想拥有过人的技术就必须努力学好基础知识。通道的应用是从事美工行业人员从入门到精通的必经之路,也是这门课程的华彩乐章。希望大家能够从这里一点一滴地学起,在不远的将来,让自己的作品散发出艺术耀眼的光芒。

图像gamma校正

阅读数 495