CN102572316B - 用于图像信号处理的溢出控制技术 - Google Patents
用于图像信号处理的溢出控制技术 Download PDFInfo
- Publication number
- CN102572316B CN102572316B CN201110305695.0A CN201110305695A CN102572316B CN 102572316 B CN102572316 B CN 102572316B CN 201110305695 A CN201110305695 A CN 201110305695A CN 102572316 B CN102572316 B CN 102572316B
- Authority
- CN
- China
- Prior art keywords
- pixel
- image
- frame
- picture frame
- logic device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 496
- 238000012545 processing Methods 0.000 title claims abstract description 355
- 238000011084 recovery Methods 0.000 claims abstract 4
- 230000008569 process Effects 0.000 claims description 356
- 239000000872 buffer Substances 0.000 claims description 146
- 230000001965 increasing effect Effects 0.000 claims description 14
- 238000004321 preservation Methods 0.000 claims description 8
- 238000011143 downstream manufacturing Methods 0.000 claims description 4
- 230000015654 memory Effects 0.000 description 199
- 238000001914 filtration Methods 0.000 description 188
- 230000007547 defect Effects 0.000 description 182
- 230000000875 corresponding effect Effects 0.000 description 151
- 238000005516 engineering process Methods 0.000 description 129
- 230000033001 locomotion Effects 0.000 description 105
- 238000001514 detection method Methods 0.000 description 102
- 238000012937 correction Methods 0.000 description 94
- 238000013507 mapping Methods 0.000 description 73
- 238000003384 imaging method Methods 0.000 description 67
- 238000010586 diagram Methods 0.000 description 59
- 230000003068 static effect Effects 0.000 description 56
- 238000006243 chemical reaction Methods 0.000 description 52
- 238000011282 treatment Methods 0.000 description 43
- 230000006870 function Effects 0.000 description 39
- 230000010365 information processing Effects 0.000 description 36
- 230000009467 reduction Effects 0.000 description 35
- 238000005070 sampling Methods 0.000 description 33
- 230000008859 change Effects 0.000 description 31
- 239000011159 matrix material Substances 0.000 description 30
- 101100218716 Rattus norvegicus Bhlhb3 gene Proteins 0.000 description 29
- 239000003086 colorant Substances 0.000 description 27
- 238000005286 illumination Methods 0.000 description 27
- 230000004913 activation Effects 0.000 description 23
- 230000010354 integration Effects 0.000 description 23
- 244000045947 parasite Species 0.000 description 22
- 230000000630 rising effect Effects 0.000 description 21
- 238000007906 compression Methods 0.000 description 20
- 101100311460 Schizosaccharomyces pombe (strain 972 / ATCC 24843) sum2 gene Proteins 0.000 description 18
- 238000003707 image sharpening Methods 0.000 description 18
- 101100116390 Schizosaccharomyces pombe (strain 972 / ATCC 24843) ded1 gene Proteins 0.000 description 17
- 230000006835 compression Effects 0.000 description 17
- 230000002950 deficient Effects 0.000 description 17
- 230000001815 facial effect Effects 0.000 description 15
- 230000002829 reductive effect Effects 0.000 description 15
- 238000003860 storage Methods 0.000 description 15
- 230000009977 dual effect Effects 0.000 description 14
- 238000004422 calculation algorithm Methods 0.000 description 13
- 238000007667 floating Methods 0.000 description 13
- 230000008034 disappearance Effects 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 10
- 230000003111 delayed effect Effects 0.000 description 10
- 230000004044 response Effects 0.000 description 10
- 230000001360 synchronised effect Effects 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 230000003139 buffering effect Effects 0.000 description 9
- 230000000873 masking effect Effects 0.000 description 9
- 238000010606 normalization Methods 0.000 description 9
- 238000004364 calculation method Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 8
- 230000007246 mechanism Effects 0.000 description 8
- 230000001276 controlling effect Effects 0.000 description 7
- 230000001186 cumulative effect Effects 0.000 description 7
- 238000012958 reprocessing Methods 0.000 description 7
- 230000008901 benefit Effects 0.000 description 6
- 238000004043 dyeing Methods 0.000 description 6
- 230000006872 improvement Effects 0.000 description 6
- 238000004519 manufacturing process Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000003491 array Methods 0.000 description 5
- 238000006073 displacement reaction Methods 0.000 description 5
- 238000009826 distribution Methods 0.000 description 5
- 230000002708 enhancing effect Effects 0.000 description 5
- 238000005562 fading Methods 0.000 description 5
- 230000006855 networking Effects 0.000 description 5
- 238000013139 quantization Methods 0.000 description 5
- 238000012935 Averaging Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 4
- 230000003213 activating effect Effects 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 4
- 238000004040 coloring Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 230000005055 memory storage Effects 0.000 description 4
- 230000036961 partial effect Effects 0.000 description 4
- 238000012805 post-processing Methods 0.000 description 4
- 238000002360 preparation method Methods 0.000 description 4
- 238000011002 quantification Methods 0.000 description 4
- 229920006395 saturated elastomer Polymers 0.000 description 4
- 230000002123 temporal effect Effects 0.000 description 4
- 230000009466 transformation Effects 0.000 description 4
- 238000004148 unit process Methods 0.000 description 4
- 241000976924 Inca Species 0.000 description 3
- 241001125929 Trisopterus luscus Species 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 3
- 230000003044 adaptive effect Effects 0.000 description 3
- 230000002411 adverse Effects 0.000 description 3
- 230000033228 biological regulation Effects 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000000295 complement effect Effects 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 239000000284 extract Substances 0.000 description 3
- 238000011049 filling Methods 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 238000011112 process operation Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000004088 simulation Methods 0.000 description 3
- 230000005236 sound signal Effects 0.000 description 3
- 230000006641 stabilisation Effects 0.000 description 3
- 238000011105 stabilization Methods 0.000 description 3
- 230000008093 supporting effect Effects 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000001960 triggered effect Effects 0.000 description 3
- 229910052724 xenon Inorganic materials 0.000 description 3
- FHNFHKCVQCLJFQ-UHFFFAOYSA-N xenon atom Chemical compound [Xe] FHNFHKCVQCLJFQ-UHFFFAOYSA-N 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 241001413866 Diaphone Species 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 2
- 238000011156 evaluation Methods 0.000 description 2
- 230000002401 inhibitory effect Effects 0.000 description 2
- 210000003127 knee Anatomy 0.000 description 2
- 230000013011 mating Effects 0.000 description 2
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 2
- 238000003032 molecular docking Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000008447 perception Effects 0.000 description 2
- 238000011946 reduction process Methods 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 239000004753 textile Substances 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 238000011144 upstream manufacturing Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 206010019133 Hangover Diseases 0.000 description 1
- 241001062009 Indigofera Species 0.000 description 1
- 235000000177 Indigofera tinctoria Nutrition 0.000 description 1
- HBBGRARXTFLTSG-UHFFFAOYSA-N Lithium ion Chemical compound [Li+] HBBGRARXTFLTSG-UHFFFAOYSA-N 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 241000593989 Scardinius erythrophthalmus Species 0.000 description 1
- WYTGDNHDOZPMIW-RCBQFDQVSA-N alstonine Natural products C1=CC2=C3C=CC=CC3=NC2=C2N1C[C@H]1[C@H](C)OC=C(C(=O)OC)[C@H]1C2 WYTGDNHDOZPMIW-RCBQFDQVSA-N 0.000 description 1
- 230000002547 anomalous effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 238000000429 assembly Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000009194 climbing Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000052 comparative effect Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 230000008878 coupling Effects 0.000 description 1
- 238000010168 coupling process Methods 0.000 description 1
- 238000005859 coupling reaction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000002059 diagnostic imaging Methods 0.000 description 1
- AAOVKJBEBIDNHE-UHFFFAOYSA-N diazepam Chemical compound N=1CC(=O)N(C)C2=CC=C(Cl)C=C2C=1C1=CC=CC=C1 AAOVKJBEBIDNHE-UHFFFAOYSA-N 0.000 description 1
- 239000000428 dust Substances 0.000 description 1
- 238000003708 edge detection Methods 0.000 description 1
- 230000005611 electricity Effects 0.000 description 1
- 230000005670 electromagnetic radiation Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000005242 forging Methods 0.000 description 1
- 238000003306 harvesting Methods 0.000 description 1
- 230000001976 improved effect Effects 0.000 description 1
- 239000012535 impurity Substances 0.000 description 1
- 229940097275 indigo Drugs 0.000 description 1
- COHYTHOBJLSHDF-UHFFFAOYSA-N indigo powder Natural products N1C2=CC=CC=C2C(=O)C1=C1C(=O)C2=CC=CC=C2N1 COHYTHOBJLSHDF-UHFFFAOYSA-N 0.000 description 1
- 230000001939 inductive effect Effects 0.000 description 1
- 238000011221 initial treatment Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 229910001416 lithium ion Inorganic materials 0.000 description 1
- 210000003141 lower extremity Anatomy 0.000 description 1
- 229910052751 metal Inorganic materials 0.000 description 1
- 239000007769 metal material Substances 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000000465 moulding Methods 0.000 description 1
- 201000005111 ocular hyperemia Diseases 0.000 description 1
- 210000000056 organ Anatomy 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000010363 phase shift Effects 0.000 description 1
- 239000004033 plastic Substances 0.000 description 1
- 229920003023 plastic Polymers 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000000644 propagated effect Effects 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000001228 spectrum Methods 0.000 description 1
- GOLXNESZZPUPJE-UHFFFAOYSA-N spiromesifen Chemical compound CC1=CC(C)=CC(C)=C1C(C(O1)=O)=C(OC(=O)CC(C)(C)C)C11CCCC1 GOLXNESZZPUPJE-UHFFFAOYSA-N 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
- 238000003892 spreading Methods 0.000 description 1
- 238000005728 strengthening Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/40—Extracting pixel data from image sensors by controlling scanning circuits, e.g. by modifying the number of pixels sampled or to be sampled
- H04N25/46—Extracting pixel data from image sensors by controlling scanning circuits, e.g. by modifying the number of pixels sampled or to be sampled by combining or binning pixels
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/40—Extracting pixel data from image sensors by controlling scanning circuits, e.g. by modifying the number of pixels sampled or to be sampled
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Studio Devices (AREA)
- Image Processing (AREA)
Abstract
本公开涉及用于图像信号处理的溢出控制技术。本文公开的一些实施例涉及图像信号处理系统,其包括溢出控制逻辑器。溢出控制逻辑器检测当传感器输入队列和/或前端处理单元接收到来自下游目的地单元的背压时目的地单元的溢出状况。在一个实施例中,当出现溢出状况时丢弃当前帧的像素。可以使用计数器来跟踪丢弃的像素的数目。在回复溢出状况之后,接收帧的剩余像素,并且可使用替换像素值来替换每个丢弃的像素。
Description
技术领域
本公开一般涉及数字成像设备,更具体地说,涉及用于处理利用数字成像设备的图像传感器获得的图像数据的系统和方法。
背景技术
背景技术部分旨在向读者介绍与下面描述和/或要求保护的本发明技术的各个方面相关的技术的各个方面。相信下面的讨论有助于向读者提供背景信息,以便于更好地理解本公开的各个方面。因此,应明白要就此而论理解这些陈述,而不应理解成对于现有技术的承认。
近年来,至少部分由于普通消费者越来越负担得起数字成像设备的费用,因此数字成像设备变得日益普及。此外,除了目前可从市场上获得的许多独立的数字照相机之外,作为另一个电子设备(比如桌上型或笔记本计算机、蜂窝电话或便携式媒体播放器)的一部分而被集成的数字成像设备也不罕见。
为了获得图像数据,多数数字成像设备包括提供许多光检测元件(例如,光电检测器)的图像传感器,所述光检测元件被配置成把图像传感器检测的光转换成电信号。图像传感器还可包括过滤图像传感器捕捉的光,从而捕捉颜色信息的颜色滤光器阵列。图像传感器捕捉的图像数据随后由图像处理管线处理,所述图像处理管线可对图像数据应用多种不同的图像处理操作,从而生成可显示在显示设备(比如监视器)上以供观看的全色图像。
虽然常规的图像处理技术的目的通常在于产生在客观和主观方面令观看者满意的值得一看的图像,不过这样的常规技术可能没有充分解决由成像设备和/或图像传感器引入的图像数据的错误和/或畸变。例如,图像传感器上的归因于制造缺陷或操作故障的有缺陷像素不能精确地感测光级,如果未被校正,那么会表现为出现在最后得到的经处理的图像中的伪像。另外,在图像传感器边缘处的光强降低(可能归因于透镜的制造缺陷)可能不利地影响特性测量,并且可能导致整体光强度不均匀的图像。图像处理管线还可进行锐化图像的一种或多种处理。不过,常规的锐化技术可能未充分解决现有的图像信号中的噪声,或者可能不能把噪声和图像中的边缘和纹理化区域区分开。在这种情况下,常规的锐化技术实际上可能会增加图像中的噪声的出现,这通常是不可取的。此外,还可进行各种另外的图像处理步骤,其中的一些图像处理步骤依赖于用统计信息收集引擎收集的图像统计信息。
可对图像传感器捕捉的图像数据应用的另一种图像处理操作是去马赛克操作。由于色彩滤镜阵列通常每个传感器像素一个波长地提供颜色数据,因此为了再现全色图像(例如,RGB图像),通常对于每个颜色通道内插完整的一组颜色数据。常规的去马赛克技术通常基于某种类型的固定阈值,沿着水平或垂直方向内插丢失的颜色数据的值。不过,这种常规的去马赛克技术可能未充分考虑图像内的边缘的位置和方向,这可能会导致将边缘伪像(比如混叠(aliasing))、棋盘格伪像、或者彩虹伪像引入全色图像,尤其是沿着图像内的对角边缘引入。
因此,当处理利用数字照相机或其它成像设备获得的数字图像时,应专注于各种考虑因素,以改善最后得到的图像的外观。特别地,下面的本公开的某些方面解决了上面简要提及的一个或多个缺陷。
发明内容
下面陈述这里公开的某些实施例的概要。应明白介绍这些方面只是为了向读者提供所述这些实施例的简明概要,所述这些方面并不意图限制本公开的范围。实际上,本公开可包含未在下面陈述的各个方面。
本公开提供和举例说明图像信号处理技术的各个实施例。特别地,本公开的公开实施例可涉及利用后端图像处理单元的图像数据的处理,实现原始像素处理逻辑器的线缓冲器的布置和结构,在存在溢出(也称为过速(overrun))状态的情况下,管理像素数据的移动的技术,使视频和音频数据同步的技术,以及涉及可用于把像素数据保存到存储器和从存储器读取像素数据的各种像素存储器格式的使用的技术。
就后端处理来说,公开的实施例提供一种图像信号处理系统,它包括接收由前端像素处理单元和像素处理管线中的至少一个处理之后的像素数据的后端像素处理单元。在一些实施例中,后端处理单元接收亮度/色度图像数据,并且可被配置成应用面部检测操作,局部色调映射,明度(brightness)、对比度和颜色调整以及比例缩放。此外,后端处理单元还可包括可收集频率统计信息的后端统计单元。频率统计信息可被提供给编码器,并且可用于确定将应用于图像帧的量化参数。
本公开的另一方面涉及利用一组线缓冲器的原始像素处理单元的实现。在一个实施例中,所述一组线缓冲器可包括第一子集和第二子集。可按照共用的方式,利用线缓冲器的第一子集和第二子集,实现原始像素处理单元的各个逻辑器单元。例如,在一个实施例中,可利用线缓冲器的第一子集实现缺陷像素校正和检测逻辑器。线缓冲器的第二子集可用于实现透镜阴影校正逻辑器,增益、偏移和箝位逻辑器,和去马赛克逻辑器。此外,也可分别利用线缓冲器的第一子集和第二子集的至少一部分实现降噪。
本公开的另一方面涉及一种图像信号处理系统,包括当传感器输入队列和/或前端处理单元接收到来自下游目的地单元的背压时,检测出目的地单元出现溢出状态的溢出控制逻辑器。图像信号处理系统还可以包括闪光控制器,所述闪光控制器被配置成利用传感器定时信号,在目标图像帧开始之前启用闪光设备。在一个实施例中,闪光控制器接收延迟的传感器定时信号,并如下确定闪光启用开始时间:利用延迟的传感器定时信号识别与前一帧的结束对应的时间,使所述时间增大垂直消隐间隔时间,随后减去第一偏移量,以补偿传感器定时信号和延迟的传感器定时信号之间的延迟。随后,闪光控制器减去第二偏移量,以确定闪光启用时间,从而确保在接收目标帧的第一个像素之前,闪光被启用。本公开的其它方面提供涉及音频一视频同步的技术。在一个实施例中,当被采样时,时间码寄存器提供当前时间戳。可根据图像信号处理系统的时钟,每隔一定时间间隔递增时间码寄存器的值。在图像传感器获得的当前帧开始时,对时间码寄存器采样,把时间戳保存在与图像传感器相关的时间戳寄存器中。随后从时间戳寄存器读出时间戳,并将其写入与当前帧相关的一组元数据中。随后可以使用保存在帧元数据中的时间戳以使当前帧与对应的一组音频数据同步。
本公开的另一个方面提供一种灵活的存储器输入/输出控制器,所述控制器被配置成支持多种像素和像素存储器格式的保存和读取。例如,存储器I/O控制器可支持各种比特精度,例如8比特,10比特,12比特,14比特和16比特的原始图像像素的存储和读取。可按照紧缩方式,保存未与存储器字节对准(例如,不是8比特的倍数)的像素格式。存储器I/O控制器还可以支持各种格式的RGB像素组和YCC像素组。
本公开的各个方面存在上面提及的特征的各种修改。在这些各个方面中也可结合另外的特征。这些修改和另外的特征可单独存在或任意组合地存在。例如,下面关于一个或多个举例说明的实施例讨论的各个特征可以单独地或者任意组合地结合到本公开的上述各个方向任意之一中。同样,上面给出的简要概述只是用来使读者熟悉本公开的实施例的某些方面和上下文,而不是对要求保护的主题的限制。
附图说明
本专利或申请文件包含至少一个彩色附图。在支付必要费用的情况下,事务所将应请求提供本专利或专利申请公开的带彩色附图的副本。
参考附图,阅读下面的详细说明,可更好地理解本公开的各个方面,其中:
图1是描述电子设备的一个例子的组件的简化方框图,所述电子设备包括成像设备和配置成实现在本公开中陈述的一种或多种图像处理技术的图像处理电路;
图2表示可在图1的成像设备中实现的Bayer色彩滤镜矩阵的2×2像素块的图形表示。
图3是按照本公开的各个方面的图1的呈膝上型计算设备形式的电子设备的透视图;
图4是按照本公开的各个方面的图1的呈桌上型计算设备形式的电子设备的正视图;
图5是按照本公开的各个方面的图1的呈手持便携式电子设备形式的电子设备的正视图;
图6是图5中所示的电子设备的后视图;
图7是按照本公开的各个方面,图解说明的图1的图像处理电路的一个实施例的方框图,所述图像处理电路包括前端图像信号处理(ISP)逻辑器和ISP管道(pipe)处理逻辑器;
图8是按照本公开的各个方面,图解说明图1的图像处理电路的另一个实施例的方框图,所述图像处理电路包括前端图像信号处理(ISP)逻辑器、ISP管道(管线)处理逻辑器和ISP后端处理逻辑器;
图9是按照本公开的各个方面,描述利用图7或图8的图像处理电路处理图像数据的方法的流程图;
图10是按照本公开的各个方面,表示可在图7或图8中实现的ISP前端逻辑器的一个实施例的更详细方框图;
图11是按照一个实施例,表示用于在图10的ISP前端逻辑器中处理图像数据的方法的流程图;
图12是按照一个实施例,图解说明可用于在ISP前端逻辑器中处理图像数据的双缓冲寄存器和控制寄存器的结构的方框图;
图13-15是按照本发明技术的实施例,描述触发图像帧的处理的不同模式的时序图;
图16是按照一个实施例,更详细地描述控制寄存器的示图;
图17是描述当图10的ISP前端逻辑器按照单传感器模式工作时,使用前端像素处理单元处理图像帧的方法的流程图;
图18是描述当图10的ISP前端逻辑器按照双传感器模式工作时,使用前端像素处理单元处理图像帧的方法的流程图;
图19是描述当图10的ISP前端逻辑器按照双传感器模式工作时,使用前端像素处理单元处理图像帧的方法的流程图;
图20是按照一个实施例,描述其中两个图像传感器都有效的方法的流程图,不过其中第一图像传感器在向前端像素处理单元发送图像帧,而第二图像传感器在向统计信息处理单元发送图像帧,以致当第二图像传感器稍后继续向前端像素处理单元发送图像帧时,可立即得到第二传感器的成像统计信息;
图21是按照本公开的各个方面,可应用于保存在图1的电子设备的存储器中的像素格式的线性存储器寻址格式的图形描述;
图22是按照本公开的各个方面,可应用于保存在图1的电子设备的存储器中的像素格式的分块(tiled)存储器寻址格式的图形描述;
图23是按照本公开的各个方面,在图像传感器捕捉的源图像帧内定义的各个成像区的图形描述;
图24是使用ISP前端处理单元处理图像帧的重叠垂直条纹的技术的图形描述;
图25是描述按照本公开的各个方面,如何利用交换代码,把字节交换应用于来自存储器的进入(incoming)图像像素数据的示图;
图26-29表示按照本公开的各个实施例,可由图7或图8的图像处理电路支持的原始图像数据的存储器格式的例子;
图30-34表示按照本公开的各个实施例,可由图7或图8的图像处理电路支持的全色RGB图像数据的存储器格式的例子;
图35-36表示按照本公开的各个实施例,可由图7或图8的图像处理电路支持的亮度/色度图像数据(YUV/YC1C2)的存储器格式的例子;
图37表示按照本公开的各个方面,如何确定线性寻址格式的存储器中的帧位置的例子;
图38表示按照本公开的各个方面,如何确定分块寻址格式的存储器中的帧位置的例子;
图39是描述按照本公开的一个实施例,如何进行溢出处理的图8的ISP电路的方框图;
图40是描述按照本公开的各个方面,在从图片存储器读取图像像素数据的同时,当发生溢出情况时用于溢出处理的方法的流程图;
图41是描述按照本公开的一个实施例,在从图像传感器接口读入图像像素数据的同时,当发生溢出情况时用于溢出处理的方法的流程图;
图42是描述按照本公开的另一个实施例,在从图像传感器接口读入图像像素数据的同时,当发生溢出情况时的另一种用于溢出处理的方法的流程图;
图43是可由图1的电子设备捕捉和保存的图像(例如,视频)和对应音频数据的图形描述;
图44图解说明按照一个实施例,可用于提供使图43的音频和视频数据同步的时间戳的一组寄存器;
图45是按照本公开的各个方面,可捕捉为图43的视频数据的一部分的图像帧的简化表示,并且说明如何把时间戳信息保存为图像帧元数据的一部分;
图46是描述按照一个实施例,利用基于VSYNC信号的时间戳使图像数据与音频数据同步的方法的流程图;
图47是描述按照本公开的一个实施例,可如何进行闪光计时控制的图8的ISP电路的方框图;
图48是描述按照本公开的一个实施例,用于确定闪光启用和停用时间的技术;
图49是描述根据图48中所示的技术,确定闪光启用时间的方法的流程图;
图50是描述按照本公开的各个方面,在利用闪光获取图像场景之前,使用预闪光更新图像统计信息的方法的流程图;
图51是按照本公开的各个方面,提供如在图10的ISP前端逻辑器中所示的ISP前端像素处理单元的一个实施例的更详细的视图的方框图;
图52是图解说明按照一个实施例,可如何对图51中所示的ISP前端像素处理单元接收的图像像素数据应用时域滤波的处理图;
图53图解说明可用于确定图52中所示的时域滤波处理的一个或多个参数的一组参考图像像素和一组对应的当前图像像素;
图54是图解说明按照一个实施例,对一组图像数据的中的当前图像像素应用时域滤波的处理的流程图;
图55是表示按照一个实施例,计算供图54的当前图像像素的时域滤波之用的运动增量值的技术的流程图;
图56是图解说明按照另一个实施例,对一组图像数据中的当前图像像素应用时域滤波的另一种处理的流程图,所述另一种处理包括对图像数据的每个颜色分量使用不同的增益;
图57是图解说明按照又一个实施例,对图51中所示的ISP前端像素处理单元接收的图像像素数据的每个颜色分量使用单独的运动表和亮度表的时域滤波技术的处理图;
图58是图解说明按照又一个实施例,利用图57中所示的运动表和亮度表,对一组图像数据中的当前图像像素应用时域滤波的处理的流程图;
图59描述按照本公开的各个方面,可用图像传感器捕捉的全分辨率原始图像数据的样本;
图60图解说明按照本公开的一个实施例,可被配置成对图59的全分辨率原始图像数据应用箱化(binning),以输出箱化的原始图像数据的样本的图像传感器;
图61描述按照本公开的各个方面,可由图60的图像传感器提供的箱化的原始图像数据的样本;
图62描述按照本公开的各个方面,在用箱化补偿滤波器重新采样之后的图61的箱化的原始图像数据;
图63描述按照一个实施例,可在图51的ISP前端像素处理单元中实现的箱化补偿滤波器;
图64是按照本公开的各个方面,可应用于微分分析器,以选择用于箱化补偿滤波的中心输入像素和索引/相位的各个步长的图形描述;
图65是图解说明按照一个实施例,利用图63的箱化补偿滤波器,比例缩放图像数据的处理的流程图;
图66是图解说明按照一个实施例,确定图63的箱化补偿滤波器的水平和垂直滤波的当前输入源中心像素的处理的流程图;
图67是图解说明按照一个实施例,确定用于选择图63的箱化补偿滤波器的水平和垂直滤波的滤波系数的指数的处理的流程图;
图68是表示按照本公开的各个方面,可在如图10中所示的ISP前端处理逻辑器中实现的统计信息处理单元的一个实施例的更详细的方框图;
图69表示按照本公开的各个方面,当在图68的统计信息处理单元的统计信息处理中,应用检测和校正缺陷像素时可以考虑的各个图像帧边界情况;
图70是图解说明按照一个实施例,在统计信息处理期间进行缺陷像素检测和校正的处理的流程图;
图71表示描述成像设备的常规透镜的光强度与像素位置的关系的三维轮廓;
图72是表现整个图像内的非均匀光强度(可能由于透镜阴影不规则性)的彩图;
图73是按照本公开的各个方面,包括透镜阴影校正区和增益网格的原始成像帧的图示;
图74图解说明按照本公开的各个方面,由四个边界网格增益点围绕的图像像素的增益值的内插;
图75是图解说明按照本技术的一个实施例,确定在透镜阴影校正操作期间,可应用于成像像素的内插增益值的处理的流程图;
图76是描述按照本公开的各个方面,当进行透镜阴影校正时,可应用于表现出图71中所示的光强度特性的图像的内插增益值的三维轮廓;
图77表示按照本公开的各个方面,在应用透镜阴影校正操作之后的表现出改进的光强度均匀性的图72的彩图;
图78图示按照一个实施例,如何计算当前像素和图像的中心之间的径向距离,并且将其用于确定透镜阴影校正的径向增益分量;
图79是图解说明按照本发明技术的一个实施例,使用增益网格的径向增益和内插增益来确定在透镜阴影校正操作中,可应用于成像像素的总增益的处理的流程图;
图80是表示颜色空间中的白色区域及低色温轴和高色温轴的图示;
图81是表示按照一个实施例,如何关于各种参考照明条件设定白平衡增益的表;
图82是表示按照本公开的一个实施例,可在ISP前端处理逻辑器中实现的统计信息收集引擎的方框图;
图83图解说明按照本公开的各个方面,原始Bayer RGB数据的下采样;
图84描述按照一个实施例,可利用图82的统计信息收集引擎收集的二维颜色直方图;
图85描述二维颜色直方图内的变焦和摇摄;
图86是按照一个实施例,更详细地表示用于实现统计信息收集引擎的像素滤波器的逻辑器的示图;
图87是按照一个实施例,可如何根据为像素滤波器定义的像素条件,评估像素在C1-C2颜色空间内的位置的图形描述;
图88是按照另一个实施例的可如何根据为像素滤波器定义的像素条件,评估像素在C1-C2颜色空间内的位置的图形描述;
图89是按照又一个实施例,如何根据为像素滤波器定义的像素条件,评估像素在C1-C2颜色空间内的位置的图形描述;
图90是表示按照一个实施例,可以如何确定图像传感器积分时间,以补偿闪烁的图示;
图91是详细表示按照一个实施例,可在图82的统计信息收集引擎中实现的,并被配置成收集自动聚焦统计信息的逻辑器的方框图;
图92是描述按照一个实施例,利用粗调和微调自动聚焦评分值进行自动聚焦的技术的图示;
图93是描述按照一个实施例,利用粗调和微调自动聚焦评分值进行自动聚焦的处理的流程图;
图94和95表示获得白平衡亮度值的原始Bayer数据的抽选(decimation);
图96表示按照一个实施例,利用每个颜色分量的相对自动聚焦评分值进行自动聚焦的技术;
图97是表示按照一个实施例,如何使用Bayer RGB直方图数据帮助黑电平补偿的图68的统计信息处理单元的更详细示图;
图98是表示按照本公开的各个方面,图7的ISP管道处理逻辑器的实施例的方框图;
图99是表示按照本公开的各个方面,可在图98的ISP管道处理逻辑器中实现的原始像素处理块的实施例的更详细的视图;
图100是表示按照本公开的各个方面,当在图99中所示的原始像素处理块的处理期间,应用检测和校正缺陷像素的技术时,可考虑的各种图像帧边界情况;
图101-103是描述按照一个实施例,可在图99的原始像素处理块中进行的检测和校正缺陷像素的各种处理的流程图;
图104表示按照本公开的各个方面,当在图99的原始像素处理块的处理中,应用绿色不均匀校正技术时,可内插的Bayer图像传感器的2×2像素块中的两个绿色像素的位置;
图105图解说明按照本公开的各个方面,可用作降噪用水平滤波处理的一部分的,包括中央像素和相关联的水平相邻像素的一组像素;
图106图解说明按照本公开的各个方面,可用作降噪用垂直滤波处理的一部分的,包括中央像素和相关联的垂直相邻像素的一组像素;
图107是描述如何把去马赛克应用于原始Bayer图像模式,以产生全色RGB图像的简化流程图;
图108描述按照一个实施例,在Bayer图像模式的去马赛克期间,可从中得到水平和垂直能量分量,以便内插绿色颜色值的Bayer图像模式的一组像素;
图109表示按照本发明技术的各个方面,在Bayer图像模式的去马赛克期间,可对其应用滤波,以确定内插绿色颜色值的水平分量的一组水平像素;
图110表示按照本发明技术的各个方面,在Bayer图像模式的去马赛克期间,可对其应用滤波,以确定内插绿色颜色值的垂直分量的一组垂直像素;
图111表示按照本发明技术的各个方面,在Bayer图像模式的去马赛克期间,可对其应用滤波,以确定内插的红色和蓝色值的各个3×3像素块;
图112-115提供描述按照一个实施例,在Bayer图像模式的去马赛克期间,内插绿色、红色和蓝色颜色值的各种处理的流程图;
图116表示可用图像传感器捕捉,并按照这里公开的去马赛克技术的各个方面处理的原始图像场景的彩图;
图117表示图116中所示的图像场景的Bayer图像模式的彩图;
图118表示根据图117的Bayer图像模式,利用常规的去马赛克技术重构的RGB图像的彩图;
图119表示按照这里公开的去马赛克技术的各个方面,从图117的Bayer图像模式重构的RGB图像的彩图;
图120-123描述按照一个实施例,可用于实现图99的原始像素处理块的线缓冲器的结构和布置;
图124是表示按照一个实施例,利用图120-123中所示的线缓冲器结构,处理原始像素数据的方法的流程图;
图125是表示按照本公开的各个方面,可在图98的ISP管道处理逻辑器中实现的RGB处理块的一个实施例的更详细的示图;
图126是表示按照本公开的各个方面,可在图98的ISP管道处理逻辑器中实现的YCbCr处理块的一个实施例的更详细的示图;
图127是按照本公开的各个方面,在利用1-平面格式的源缓冲器内定义的亮度和色度的激活源区的图形描述;
图128是按照本公开的各个方面,在利用2-平面格式的源缓冲器内定义的亮度和色度的激活源区的图形描述;
图129是图解说明按照一个实施例,可在如图126中所示的YCbCr处理块中实现的图像锐化逻辑器的方框图;
图130是图解说明按照一个实施例,可在如图126中所示的YCbCr处理块中实现的边缘增强逻辑器的方框图;
图131是表示按照本公开的各个方面,色度衰减因子与锐化的亮度值的关系的图示;
图132是图解说明按照一个实施例,可在如图126中所示的YCbCr处理块中实现的图像明度(brightness)、对比度和颜色(BCC)调整逻辑器的方框图;
图133表示定义可在图132的BCC调整逻辑器中的颜色调整期间应用的各种色相角和饱和度值的YCbCr颜色空间中的色相和饱和度色轮;
图134是表示按照本公开的各个方面,图8的ISP后端处理逻辑器的一个实施例的方框图,所述ISP后端处理逻辑器可被配置成进行ISP管线下游的各个后处理步骤;
图135是表示一种常规的全局色调映射技术的图形表示;
图136是表示另一种常规的全局色调映射技术的图形表示;
图137描述按照本公开的各个方面,为了应用局部色调应用技术,可如何分割图像的各个区域;
图138图形地图解说明常规的局部色调映射如何导致输出色调范围的有限利用;
图139图形地图解说明按照本公开的实施例,用于局部色调映射的技术;
图140是按照本公开的各个方面,表示局部色调映射LTM逻辑器的一个实施例的更详细的方框图,所述局部色调映射LTM逻辑器可被配置成实现图134的ISP后端逻辑器中的色调映射处理;
图141是表示按照一个实施例,利用图134的ISP后端处理逻辑器处理图像数据的方法的流程图;
图142是表示按照一个实施例,利用图140中所示的LTM逻辑器,应用色调映射的方法的流程图。
具体实施方式
下面将说明本公开的一个或多个具体实施例。这些说明的实施例只是目前公开的技术的例子。另外,在致力于提供这些实施例的简明描述的过程中,在说明书中可能未描述实际实现的所有特征。应意识到,在任何这种实际实现的开发中,和任何工程或设计项目中一样,为了实现开发人员的可能因实现而异的特定目标,比如遵守与系统相关的和与商业相关的约束条件,必须做出各种特定于实现的决策。此外,应意识到这样的开发工作可能复杂和费时,不过对受益于本公开内容的普通技术人员来说,这样的开发工作不过是常规的设计、加工和生产任务。
当介绍本公开的各个实施例的部件时,冠词“一个”等旨在意味存在一个或多个所述部件。用语“包含”、“包括”和“具有”旨在是开放的,并且意味可以存在除列举的部件以外的其它部件。另外,应明白本公开的对“一个实施例”或“实施例”的引用并不意图被解释成排除也包含所引用特征的其它实施例的存在。
如下所述,本公开一般涉及处理利用一个或多个图像感测设备获得的图像数据的技术。特别地,本公开的某些方面可以涉及检测和校正缺陷像素的技术,对原始图像模式去马赛克的技术,利用多尺度非锐化掩膜锐化亮度图像的技术,和应用透镜阴影增益校正透镜阴影不规则性的技术。此外,应明白,目前公开的技术可应用于静止图像和运动图像(例如,视频),并且可用在任何适当类型的成像应用中,比如数字照相机、具有一体化数字照相机的电子设备、安全或视频监视系统、医疗成像系统等等。
在记住以上内容的同时,图1是图解说明通过利用上面简要提及的一种或多种图像处理技术,提供图像数据的处理的电子设备10的例子的方框图。电子设备10可以是被配置成接收和处理图像数据,比如利用一个或多个图像感测组件获得的数据的任意类型的电子设备,比如膝上型或桌上型计算机、移动电话、数字媒体播放器等等。例如,电子设备10可以是便携式电子设备,比如可从Cupertino,California的苹果公司获得的某种型号的或另外,电子设备10可以是桌上型或膝上型计算机,比如可从苹果公司获得的某种型号的 Pro、MacBookMini或Mac在其它实施例中,电子设备10也可以是另一家制造商的能够获得和处理图像数据的某种型号的电子设备。
与其形式(例如,便携式或非便携式)无关,应明白,电子设备10可利用上面简要讨论的一种或多种图像处理技术提供图像数据的处理,所述图像处理技术可包括缺陷像素校正和/或检测技术、透镜阴影校正技术、去马赛克技术或者图像锐化技术等等。在一些实施例中,电子设备10可把这样的图像处理技术应用于保存在电子设备10的存储器中的图像数据。在另外的实施例中,电子设备10可包括被配置成获取图像数据的一个或多个成像设备,比如一体的或者外部的数字照相机,电子设备10随后可利用一种或多种上述图像处理技术处理所述图像数据。下面在图3-6中进一步讨论表示电子设备10的便携式和非便携式实施例的各个实施例。
如图1中所示,电子设备10可包括为设备10的功能作出贡献的各个内部和/或外部组件。本领域的普通技术人员将认识到图1中所示的各个功能块可包含硬件部件(包括电路)、软件部件(包括保存在计算机可读介质上的计算机代码)、或者硬件部件和软件部件的组合。例如,在目前举例说明的实施例中,电子设备10可包括输入/输出(I/O)端口12、输入结构14、一个或多个处理器16、存储设备18、非易失性存储设备20、扩展卡22、连网设备24、电源26和显示器28。另外,电子设备10可包括一个或多个成像设备30(比如数字照相机)和图像处理电路32。如下进一步所述,图像处理电路32可被配置成在处理图像数据时实现一种或多种上述图像处理技术。可认识到,图像处理电路32处理的图像数据可以取自存储器18和/或非易失性存储设备20,或者可以利用成像设备30获得。
在继续进行说明之前,应明白图1中所示的设备10的系统方框图旨在是描述可包括在这样的设备10中的各个组件的高级控制图。即,图1中表示的各个单独组件之间的连接线不一定必须代表数据流经的,或者在设备10的各个组件之间传送数据的路径或方向。事实下,如下所述,在一些实施例中,描述的处理器16可包括多个处理器,比如主处理器(例如,CPU)和专用图像和/或视频处理器。在这样的实施例中,图像数据的处理主要可由这些专用处理器负责,从而有效地从主处理器(CPU)卸载这些任务。
就图1中例示的每个组件来说,I/O端口12可包括被配置成与各个外部设备连接的端口,所述外部设备比如是电源、音频输出设备(例如,头戴式听筒或头戴式收话器)、或者其它电子设备(比如手持设备和/或计算机、打印机、投影仪、外部显示器、调制解调器、扩展坞等等)。在一个实施例中,I/O端口12可被配置成连接到外部成像设备,比如数字照相机,以便获得可利用图像处理电路32处理的图像数据。I/O端口12可支持任何适当的接口类型,比如通用串行总线(USB)端口、串行连接端口、IEEE-1394(火线)端口、以太网或调制解调器端口、和/或AC/DC电力连接端口。
在一些实施例中,某些I/O端口12可被配置成提供不止一种功能。例如,在一个实施例中,I/O端口12可包括苹果公司的专用端口,所述专用端口不仅能够使数据在电子设备10和外部源之间的传送更容易,而且能够使设备10与充电接口(比如用于从壁装电源插座提供电力的电源适配器,或者被配置成从另一个电设备,比如桌上型或膝上型计算机抽取电力的接口电缆)耦接,以便对电源26(它可包括一个或多个可再充电电池)充电。因此,I/O端口12可被配置成基于经I/O端口12与设备10耦接的外部组件,既起数据传送端口的作用,又起AC/DC电源连接端口的作用。
输入结构14可向处理器16提供用户输入或反馈。例如,输入结构14可被配置成控制电子设备10的一个或多个功能,比如在电子设备10上运行的应用程序。例如,输入结构14可以包括按钮、滑动器、开关、控制板、按键、旋钮、滚轮、键盘、鼠标、触摸板等等,或者它们的组合。在一个实施例中,输入结构14允许用户操纵显示在设备10上的图形用户界面(GUI)。另外,输入结构14可包括结合显示器28设置的触敏机构。在这样的实施例中,用户可以利用触敏机构选择或与显示的界面部件互动。
输入结构14可包括向一个或多个处理器16提供用户输入或反馈的各种设备、电路和通道。这种输入结构14可被配置成控制设备10的功能,在设备10上运行的应用,和/或与电子设备10连接或者由电子设备10使用的任意接口或设备。例如,输入结构14可以允许用户操纵显示的用户界面或应用界面。输入结构14的例子可包括按钮、滑动器、开关、控制板、按键、旋钮、滚轮、键盘、鼠标、触摸板等等。
在一些实施例中,输入结构14和显示器设备28可以设置在一起,比如在“触摸屏”的情况下,从而与显示器28相结合地设置触敏机构。在这种实施例中,用户可借助触敏机构,选择或与显示的界面部件互动。这样,显示的界面可提供交互式功能,从而允许用户通过触摸显示器28来操纵显示的界面。例如,用户与输入结构14的交互,比如与显示在显示器28上的用户或者应用界面互动可生成表示用户输入的电信号。这些输入信号可以经由适当的通道,比如输入集线器或数据总线路由到一个或多个处理器16,以供进一步处理。
在一个实施例中,输入结构14可包括音频输入设备。例如,电子设备10可以配有一个或多个音频捕捉设备,比如一个或多个麦克风。音频捕捉设备可以与电子设备10一体化,或者可以是比如通过I/O端口12与电子设备10耦接的外部设备。如下进一步所述,电子设备10可以既是音频输入设备又是成像设备30,以捕捉声音和图像数据(例如,视频数据),并且可以包括被配置成提供使捕捉的视频数据和音频数据同步的逻辑器。
除了处理经输入结构14接收的各种输入信号外,处理器16可控制设备10的一般操作。例如,处理器16可提供执行操作系统、程序、用户界面和应用界面、和电子设备10的任何其它功能的处理能力。处理器16可包括一个或多个微处理器,比如一个或多个“通用”微处理器、一个或多个专用微处理器和/或专用微处理器(ASIC),或者这些处理组件的组合。例如,处理器16可包括一个或多个指令集(例如,RISC)处理器、以及图形处理器(GPU)、视频处理器、音频处理器和/或相关的芯片集。应认识到,处理器16可以与一个或多个数据总线耦接,以便在设备10的各个组件之间传送数据和指令。在一些实施例中,处理器16可提供在电子设备10上运行成像应用,比如可从苹果公司获得的Photo 或或者由苹果公司提供的存在于各种型号的上的“照相机”和/或“照片”应用的处理能力。
将由处理器16处理的指令或数据可被保存在计算机可读介质,比如存储器装置18中。可以易失性存储器(比如随机存取存储器(RAM)),或者以非易失性存储器(比如只读存储器(ROM)),或者以一个或多个RAM和ROM设备的组合的形式提供存储器装置18。存储器18可保存各种信息,并且可用于各种用途。例如,存储器18可保存电子设备10的固件,比如基本输入/输出系统(BIOS)、操作系统、各种程序、应用、或者可在电子设备10上运行的任何其它例程,包括用户接口功能、处理器功能等等。另外,在电子设备10的工作期间,存储器18可用于缓存或高速缓存。例如,在一个实施例中,存储器18包括当视频数据被输出给显示器28时,缓存视频数据的一个或多个帧缓冲器。
除了存储器装置18之外,电子设备10还可包括用于永久保存数据和/或指令的非易失性存储设备20。非易失性存储设备20可包括闪速存储器,硬盘驱动器,或者任何其它光、磁和/或固态存储介质,或者它们的某种组合。从而,尽管为了清楚起见,在图1中被描述成单个设备,但应明白,非易失性存储设备20可包括结合处理器16工作的一个或多个上面列举的存储设备的组合。非易失性存储器20可被用于保存固件、数据文件、图像数据、软件程序和应用、无线连接信息、个人信息、用户首选项、和任何其它适当的数据。按照本公开的各个方面,在显示器上被输出之前,保存在非易失性存储设备20和/或存储器装置18中的图像数据可被图像处理电路32处理。
图1中图解说明的实施例还包括一个或多个卡或者扩展槽。卡槽可被配置成接纳扩展卡22,扩展卡22可用于向电子设备10增添功能,比如额外的存储器、I/O功能或者连网能力。这种扩展卡22可通过任意种类的适当连接器与设备连接,并且可相对于电子设备10的机壳在外部或内部被访问。例如,在一个实施例中,扩展卡22可以是闪速存储卡,比如安全数字卡(SD)卡、小型或微型SD、紧凑式闪存卡等,或者可以是PCMCIA设备。另外,扩展卡22可以是供电子设备10的提供移动电话能力的实施例使用的用户识别模块(SIM)卡。
电子设备10还包括网络设备24,它可以是通过无线802.11标准,或者任何其它适当的连网标准提供网络连通性的网络控制器或网络接口卡(NIC),其它适当的连网标准比如是局域网(LAN)、广域网(WAN),例如增强数据速率GSM演进(EDGE)网络,3G数据网络或因特网。在一些实施例中,网络设备24可提供与在线数字媒体内容提供者,比如可从苹果公司得到的音乐服务的连接。
设备10的电源26可包括按非便携式和便携式设置向设备10供电的能力。例如,在便携式设置中,设备10可包括向设备10供电的一个或多个电池,比如锂离子电池。通过把设备10连接到外部电源,比如连接到壁装电源插座,电池可被再充电。在非便携式设置中,电源26可包括被配置成从壁装电源插座抽取电力,并且向非便携式电子设备(比如桌上型计算系统)的各个组件分配电力的电源单元(PSU)。
显示器28可用于显示设备10生成的各种图像,比如操作系统的GUI,或者图像处理电路32处理的图像数据(包括静止图像和视频数据),如下进一步所述。如上所述,图像数据可包括利用成像设备30获得的图像数据,或者从存储器18和/或非易失性存储设备20取回的图像数据。显示器28可以是任何适当类型的显示器,比如,例如液晶显示器(LCD)、等离子体显示器、或者有机发光二极管(OLED)显示器。另外,如上所述,可以结合上述触敏机构(例如,触摸屏)设置显示器28,所述触敏机构起电子设备10的控制界面的一部分的作用。
可以被配置成获得静止图像和运动图像(例如视频)的数字照相机的形式,提供图解所示的成像设备30。照相机30可包括镜头,和被配置成捕捉光并把光转换成电信号的一个或多个图像传感器。例如,图像传感器可包括CMOS图像传感器(例如,CMOS有源像素传感器(APS))或者CCD(电荷耦合器件)传感器。通常,照相机30中的图像传感器包括具有像素阵列的集成电路,其中,每个像素包括感测光的光电探测器。本领域的技术人员将认识到,成像像素中的光电探测器通常探测经照相机镜头捕捉的光的强度。不过,光电探测器本身通常不能检测捕捉的光的波长,从而不能确定颜色信息。
因此,图像传感器还包括覆盖或者置于图像传感器的像素阵列上,以捕捉颜色信息的色彩滤镜阵列(CFA)。色彩滤镜阵列可包括微小色彩滤镜的阵列,每个色彩滤镜可重叠在图像传感器的相应像素上,并按波长过滤捕捉的光。从而,当结合使用时,色彩滤镜阵列和光电探测器可提供关于通过照相机捕捉的光的波长和强度信息,所述光可以代表捕捉的图像。
在一个实施例中,色彩滤镜阵列可包括Bayer色彩滤镜阵列,它提供为50%绿色元素,25%红色元素和25%蓝色元素的滤波模式。例如,图2表示Bayer CFA的2×2像素块,它包括2个绿色元素(Gr和Gb)、1个红色元素(R)和一个蓝色元素(B)。从而,利用Bayer色彩滤镜阵列的图像传感器可提供关于照相机30在绿色、红色和蓝色波长下接收的光的强度有关的信息,从而每个图像像素只记录三种颜色(RGB)之一。随后可利用一种或多种去马赛克技术处理该信息(可被称为“原始图像数据”或者“原始域”中的数据),以把原始图像数据转换成全色图像,通常是通过对于每个像素内插一组红色、绿色和蓝色值进行的。如下进一步所述,这种去马赛克技术由图像处理电路32执行。
如上所述,图像处理电路32可提供各种图像处理步骤,比如缺陷像素检测/校正、透镜阴影校正、去马赛克、图像锐化、降噪、伽马校正、图像增强、颜色空间变换、图像压缩、色度子采样和图像比例缩放操作等等。在一些实施例中,图像处理电路32可包括各种子组件和/或离散逻辑器单元,所述子组件和/或离散逻辑器单元共同构成执行各种图像处理步骤中的每一种的图像处理“管线”。这些子组件可以利用硬件(例如,数字信号处理器或ASIC)或者软件实现,或者借助硬件和软件组件的组合实现。图像处理电路32可提供的各种图像处理操作,尤其是与缺陷像素检测/校正、透镜阴影校正、去马赛克和图像锐化相关的那些处理操作将在下面更详细地说明。
在继续进行说明之前,应注意,虽然下面说明的各种图像处理技术的各个实施例可利用Bayer CFA,不过目前公开的技术并不意图局限于此。事实上,本领域的技术人员将认识到这里提供的图像处理技术适合于任何适当类型的色彩滤镜阵列,包括RGBW滤镜、CYGM滤镜等等。
重新参见电子设备10,图3-6图解说明电子设备10可以采取的各种形式。如上所述,电子设备10可以采取计算机的形式,包括通常便携的计算机(比如膝上型、笔记本和平板计算机),以及通常不便携的计算机(比如桌上型计算机、工作站和/或服务器),或者其它类型的电子设备,比如手持便携式电子设备(例如,数字媒体播放器或移动电话机)。特别地,图3和4分别描述呈膝上型计算机40和桌上型计算机50形式的电子设备10。图5和6分别表示呈手持便携式设备60形式的电子设备10的正视图和后视图。
如图3中所示,描述的膝上型计算机40包括机壳42、显示器28、I/O端口12和输入结构14。输入结构14可包括与机壳42一体化的键盘和触摸板鼠标。另外,输入结构14可包括各种其它按钮和/或开关,所述各种其它按钮和/或开关可用于与计算机40交互,比如使计算机通电或启动计算机,操作GUI或者在计算机40上运行的应用,以及调整与计算机40的操作相关的各个其它方面(例如,音量、显示明度等)。计算机40还可包括提供与如上所述的其它设备的连通性的各种I/O端口12,比如Fire或USB端口、高分辨率多媒体接口(HDMI)端口、或者适合于连接到外部设备的任何其它类型的端口。另外,如上关于图1所述,计算机40可包括网络连通性(例如,网络设备26)、存储器(例如,存储器20),和存储能力(例如,存储设备22)。
此外,在图解说明的实施例中,膝上型计算机40可包括一体式成像设备30(例如,照相机)。在其它实施例中,代替或者除了一体式照相机30之外,膝上型计算机40可以利用连接到一个或多个I/O端口12的外部照相机(例如,外部USB照相机或“网络照相机(webcam)”)。例如,外部照相机可以是可从苹果公司获得的照相机。照相机30(不论是一体的,还是外部的)可提供图像的捕捉和记录。这样的图像随后可由用户利用图像观看应用观看,或者可被其它应用使用,所述其它应用包括:视频会议应用(比如)和图像编辑/观看应用(比如Photo或者),这些应用程序可从苹果公司获得。在一些实施例中,描述的膝上型计算机40可以是可从苹果公司获得的某种型号的Pro、MacBook或者另外,在一个实施例中,计算机40可以是便携式平板计算设备,比如也可从苹果公司获得的某种型号的平板计算机。
图4还图解说明其中以桌上型计算机50的形式提供电子设备10的实施例。要认识到,桌上型计算机50可包括许多大体与图4中所示的膝上型计算机40提供的那些特征类似的特征,不过可具有通常更大的整体形状因子。如图所示,桌上型计算机50可被置于外壳42中,所述外壳42包括显示器28,以及上面关于图1中所示的方框图讨论的各种其它组件。此外,桌上型计算机50可包括可以通过一个或多个I/O端口12(例如,USB)与计算机50耦接,或者可以与计算机50无线(例如,RF、蓝牙等)通信的外部键盘和鼠标(输入结构14)。桌上型计算机50还包括成像设备30,如上所述,成像设备30可以是一体式或外部照相机。在一些实施例中,描述的桌上型计算机50可以是可从苹果公司获得的某种型号的mini或Mac
如图进一步所示,显示器28可被配置成生成可由用户观看的各种图像。例如,在计算机50的工作期间,显示器28可显示图形用户界面(“GUI”)52,GUI 52允许用户与在计算机50上运行的操作系统和/或应用交互。GUI 52可包括可以显示在整个或者部分显示器28中的各种层、窗口、屏幕、模板或其它图形元素。例如,在描述的实施例中,操作系统GUI 52可包括各种图形图标54,每个图形图标54对应于当检测到用户选择(例如,借助键盘/鼠标或触摸屏输入)时,被打开或执行的各种应用。图标54可被显示在坞站(dock)56中,或者被显示在显示于屏幕上的一个或多个图形窗口元素58内。在一些实施例中,图标54的选择可通向分级导航处理,从而图标54的选择通向屏幕,或者打开包括一个或多个另外的图标或其它GUI元素的另一个图形窗口。例如,显示在图4中的操作系统GUI 52可以源自可从苹果公司获得的某种版本的Mac操作系统。
继续参见图5和6,图中进一步以便携式手持电子设备60的形式图解说明了电子设备10,所述便携式手持电子设备60可以是可从苹果公司获得的某种型号的或在所描述的实施例中,手持设备60包括壳体42,壳体42可保护内部组件免受物理损坏,和屏蔽内部组件使其不受电磁干扰的影响。壳体42可以用任何适当的材料,或者多种材料的组合构成,所述材料比如是塑料、金属或复合材料,并且可以允许某些频率的电磁辐射(比如无线连网信号)通过,从而到达置于壳体42内的无线通信电路(例如,网络设备24),如图5中所示。
壳体42还包括各种用户输入结构14,通过用户输入结构14,用户可以与手持设备60交互。例如,每个输入结构14可被配置成当被按下或启动时,控制一个或多个相应设备功能。例如,一个或多个输入结构14可被配置成调用“主”屏幕,或者要显示的菜单,在睡眠、唤醒或者通电/断电模式之间切换,使蜂窝电话机应用的铃声静音,增大或减小音量输出等等。应明白,图解说明的输入结构14仅仅是例证性的,并且手持设备60可包括以各种形式(包括按钮、开关、按键、旋钮、滚轮等)存在的许多适当的用户输入结构。
如图5中所示,手持设备60可包括各种I/O端口12。例如,描述的I/O端口12可包括传送和接收数据文件,或者对电源26充电的专用连接端口12a,和使设备60与音频输出设备(例如,头戴式收话器或扬声器)连接的音频连接端口12b。此外,在手持设备60提供移动电话功能的实施例中,设备60可包括接纳用户识别模块(SIM)卡(例如,扩展卡22)的I/O端口12c。
显示器设备28(它可以是LCD、OLED或者任何适当类型的显示器)可以显示手持设备60生成的各种图像。例如,显示器28可显示向用户提供关于手持设备60的一个或多个状态(比如电源状态、信号强度、外部设备连接等等)的反馈的各种系统指示符64。显示器还可显示如下参考图4所述,允许用户与设备60交互的GUI 52。GUI 52可包括图形元素,比如图标54,图标54与当检测到用户选择相应图标54时,可被打开或运行的各种应用相对应。例如,图标54之一可代表可以结合照相机30(图5中用虚线表示)使用,以便获得图像的照相机应用66。简要地参见图6,图中图解说明了图5中所示的手持电子设备60的后视图,该图把照相机30表示成与机壳42一体化,并被置于手持设备60的背面。
如上所述,利用图像处理电路32可以处理利用照相机30获得的图像数据,图像处理电路32可包括硬件(例如,置于壳体42内)和/或保存在设备60的一个或多个存储器(例如,存储器18或非易失性存储设备20)上的软件。利用照相机应用66和照相机30获得的图像可保存在设备60上(例如,保存在存储设备20中),并且可在稍后利用照片观看应用68观看。
手持设备60还可包括各种音频输入和输出部件。例如,由附图标记70表示的音频输入/输出部件可包括输入接收器,比如一个或多个麦克风。例如,在手持设备60包括蜂窝电话功能的情况下,输入接收器可被配置成接收用户音频输入,比如用户的话音。另外,音频输入/输出部件70可包括一个或多个输出发送器。这样的输出发送器可包括一个或多个扬声器,所述扬声器可用于向用户传送音频信号,比如在利用媒体播放器应用72重放音乐数据期间。此外,在手持设备60包括蜂窝电话应用的实施例中,可以设置另外的音频输出发送器74,如图5中所示。类似于音频输入/输出部件70的输出发送器,输出发送器74也包括被配置成向用户传送音频信号,比如在电话通话期间接收的话音数据的一个或多个扬声器。从而,音频输入/输出部件70和74可以一起工作,起电话机的音频接收和发送部件的作用。
在提供了关于电子设备10可以采取的各种形式的一些背景的情况下,下面的讨论将专注于图1中描述的图像处理电路32。如上所述,图像处理电路32可以利用硬件和/或软件组件实现,并且可包括定义图像信号处理(ISP)管线的各种处理单元。特别地,下面讨论将专注于在本公开中陈述的图像处理技术的各个方面,尤其是涉及缺陷像素检测/校正技术、透镜阴影校正技术、去马赛克技术和图像锐化技术的方面。
现在参见图7,按照目前公开技术的一个实施例,图解说明描述可实现成图像处理电路32的一部分的若干功能组件的简化高级方框图。特别地,图7意图图解说明按照至少一个实施例,图像数据是如何流过图像处理电路32的。为了提供图像处理电路32的概述,这里参考图7提供了这些功能组件如何工作以处理图像数据的一般性描述,而每个图解说明的功能组件的更具体说明以及它们相应的子组件将在下面进一步提供。
参见图解说明的实施例,图像处理电路32可以包括图像信号处理(ISP)前端处理逻辑器80、ISP管道处理逻辑器82和控制逻辑器84。成像设备30捕捉的图像数据可以首先由ISP前端逻辑器80处理,并对其进行分析以捕捉可用于确定ISP管道逻辑器82和/或成像设备30的一个或多个控制参数的图像统计信息。ISP前端逻辑器80可被配置成从图像传感器输入信号捕捉图像数据。例如,如图7中所示,成像设备30可包括具有一个或多个透镜88和图像传感器90的照相机。如上所述,图像传感器90可包括色彩滤镜阵列(例如,Bayer滤镜),从而可提供用图像传感器90的每个成像像素捕捉的光强度和波长信息,以提供可由ISP前端逻辑器80处理的一组原始图像数据。例如,成像设备30的输出92可被传感器接口94接收,传感器接口94接着可基于例如传感器接口类型把原始图像数据96提供给ISP前端逻辑器80。例如,传感器接口94可以利用标准移动成像架构(SMIA)接口或者其它串行或并行照相机接口,或者它们的某种组合。在一些实施例中,ISP前端逻辑器80可在它自己的时钟域内工作,并且可向传感器接口94提供异步接口,以支持大小和定时要求不同的图像传感器。在一些实施例中,传感器接口94可包括在传感器侧的子接口(例如,传感器侧接口)和在ISP前端侧的子接口,所述子接口构成传感器接口94。
原始图像数据96可被提供给ISP前端逻辑器80,并按多种格式逐个像素地处理。例如,每个图像像素可具有8、10、12或14比特的位深度。表示在存储器中如何保存和寻址像素数据的存储格式的各种例子将在下面进一步详细讨论。ISP前端逻辑器80可对原始图像数据96进行一个或多个图像处理操作,以及收集关于图像数据96的统计信息。可按相同或不同的位深度精度进行图像处理操作,以及统计数据的收集。例如,在一个实施例中,可以14比特的精度进行原始图像像素数据96的处理。在这种实施例中,ISP前端逻辑器80接收的位深度小于14比特(例如,8比特、10比特、12比特)的原始像素数据可被上采样到14比特,以便进行图像处理。在另一个实施例中,可以8比特的精度进行统计处理,从而,具有较高位深度的原始像素数据可被下采样成8比特格式,以供统计。要认识到,下采样到8比特可减小硬件尺寸(例如,面积),还降低关于统计数据的处理/计算复杂性。另外,可在空间上平均原始图像数据,以使统计数据对噪声的鲁棒性更高。
此外,如图7中所示,ISP前端逻辑器80还可从存储器108接收像素数据。例如,如附图标记98所示,原始像素数据可从传感器接口94被发送给存储器108。驻留在存储器108中的原始像素数据随后可被提供给ISP前端逻辑器80以供处理,如附图标记100所示。存储器108可以是存储器装置18的一部分、存储设备20,或者可以是电子设备10内的独立的专用存储器,并且可包括直接存储器存取(DMA)特征。此外,在一些实施例中,ISP前端逻辑器80可在它自己的时钟域内工作,并且可向传感器接口94提供异步接口,以支持大小不同并且具有不同的定时要求的传感器。
当收到原始图像数据96(来自传感器接口94)或100(来自存储器108)时,ISP前端逻辑器80可进行一个或多个图像处理操作,比如时域滤波和/或箱化补偿滤波。处理后的图像数据随后可被提供给ISP管道逻辑器82(输出信号109),以便在被显示(例如,显示在显示器设备28上)之前进行另外的处理,或者可被发送给存储器(输出信号110)。ISP管道逻辑器82或者直接从ISP前端逻辑器80接收“前端”处理数据,或者从存储器108接收“前端”处理数据(输入信号112),并且可提供原始域中以及RGB和YCbCr颜色空间中的图像数据的其它处理。ISP管道逻辑器82处理的图像数据随后可被输出给显示器28(信号114),以供用户观看和/或可由图形引擎或GPU进一步处理。另外,ISP管道逻辑器82的输出可被发送给存储器108(信号115),并且显示器28可从存储器108读取图像数据(信号116),在一些实施例中,存储器108可被配置成实现一个或多个帧缓冲器。此外,在一些实现中,ISP管道逻辑器82的输出可被提供给压缩/解压缩引擎118(信号117),以便编码/解码图像数据。编码的图像数据可被保存,稍后在被显示在显示器设备28上(信号119)之前被解压缩。例如,压缩引擎或“编码器”118可以是用于编码静止图像的JPEG压缩引擎、或者编码视频图像的H.264压缩引擎、或者它们的某种组合、以及解码图像数据的对应解压缩引擎。关于可在ISP管道逻辑器82中提供的图像处理操作的额外信息将在下面参考图98-133更详细地讨论。另外,应注意,ISP管道逻辑器82还可从存储器108接收原始图像数据,如由输入信号112所示。
ISP前端逻辑器80确定的统计数据102可被提供给控制逻辑器单元84。例如,统计数据102可包括涉及自动曝光、自动白平衡、自动聚焦、闪烁检测、黑电平补偿(BLC)、透镜阴影校正等等的图像传感器统计信息。控制逻辑器84可包括被配置成执行一个或多个例程(例如,固件)的处理器和/或微控制器,所述一个或多个例程可以被配置成根据接收的统计数据102,确定成像设备30的控制参数104,以及ISP管道逻辑器82的控制参数106。例如,控制参数104可包括传感器控制参数(例如,增益、曝光控制的积分时间)、照相机闪光控制参数、透镜控制参数(例如,聚焦或变焦用焦距)、或者这些参数的组合。ISP控制参数106可包括用于自动白平衡和颜色调整(例如,在RGB处理期间)的增益水平和色彩校正矩阵(CCM),以及透镜阴影校正参数,如下所述,透镜阴影校正参数可以是根据白点平衡参数确定的。在一些实施例中,除了分析统计数据102之外,控制逻辑器84还可以分析历史统计信息,所述历史统计信息可保存在电子设备10上(例如,保存在存储器18或存储设备20中)。
参见图解说明的实施例,图像处理电路32可包括信号处理(ISP)前端处理逻辑器80、ISP管道处理逻辑器82和控制逻辑器84。成像设备30捕捉的图像数据首先可由ISP前端逻辑器80处理,并被分析以捕捉可用于确定ISP管道逻辑器82和/或成像设备30的一个或多个控制参数的图像统计信息。ISP前端逻辑器80可被配置成从图像传感器输入信号中捕捉图像数据。例如,如图7中所示,成像设备30可包括具有一个或多个透镜88和图像传感器90的照相机。如上所述,图像传感器90可包括色彩滤镜阵列(例如,Bayer滤镜),从而可提供用图像传感器90的每个成像像素捕捉的光强度和波长信息,以提供可由ISP前端逻辑器80处理的一组原始图像数据。例如,成像设备30的输出92可被传感器接口94接收,传感器接口94随后把原始图像数据96提供给基于例如传感器接口类型的ISP前端逻辑器80。例如,传感器接口94可以利用标准移动成像架构(SMIA)接口,或者其它串行或并行照相机接口,或者它们的某种组合。在一些实施例中,ISP前端逻辑器80可在它自己的时钟域内工作,并且可向传感器接口94提供异步接口,以支持大小和定时要求不同的图像传感器。
图8表示描述图像处理电路32的另一个实施例的方框图,其中,相同的组件用相同的附图标记表示。一般来说,图8的图像处理电路32的操作和功能与图7的图像处理电路32类似,除了图8中所示的实施例还包括ISP后端处理逻辑器单元120之外,ISP后端处理逻辑器单元120可耦接在ISP管线82的下游并且提供另外的后处理步骤。
在图解说明的实施例中,ISP后端逻辑器120可从ISP管线82接收输出114,并对接收的数据114进行后处理。另外,ISP后端120可直接从存储器108接收图像数据,如输入124所示。如下参考图134-142进一步所述,ISP后端逻辑器120的一个实施例可提供图像数据的动态范围压缩(通常称为“色调映射”)、明度、对比度和颜色调整、以及把图像数据比例缩放到期望的尺寸或分辨率(例如,根据输出显示器设备的分辨率)的比例缩放逻辑器。此外,ISP后端逻辑器120还可包括检测图像数据中的某些特征的特征检测逻辑器。例如,在一个实施例中,特征检测逻辑器可包括被配置成识别图像数据内,面部和/或面部特征位于和/或置于的区域的面部检测逻辑器。面部检测数据可被提供给前端统计信息处理单元,作为用于确定自动白平衡、自动聚焦、闪烁和自动曝光统计信息的反馈数据。例如,ISP前端80中的统计信息处理单元(下面在图68-97中更详细地讨论)可被配置成根据确定的图像数据中的面部和/或面部特征的位置,选择用于统计信息处理的窗口。
在一些实施例中,代替或者除了被反馈给ISP前端统计信息反馈控制回路之外,面部检测数据也可被提供给局部色调映射处理逻辑器、ISP后端统计信息单元、或者编码器/解码器单元118中至少之一。如下进一步所述,提供给后端统计信息单元的面部检测数据可被用于控制量化参数。例如,当编码或压缩输出图像数据(例如,在宏块中)时,对于图像的已确定为包括面部和/或面部特征的区域,可以减少量化,从而当用户显示和观看图像时,提高面部和面部特征的视觉质量。
在其它实施例中,特征检测逻辑器还可被配置成检测图像帧中的对象的角落的位置。该数据可用于识别连续图像帧中的特征的位置,以确定各帧之间的全局运动的估计,这可用于进行某些图像处理操作,比如图像配准。在一个实施例中,角落特征等的识别可能对于组合多个图像帧的算法(比如某些高动态范围(HDR)成像算法,以及某些全景拼接算法)特别有用。
此外,如图8中所示,ISP后端逻辑器120处理的图像数据可被输出给显示器设备28(信号126),以供用户观看,和/或可被图形引擎或GPU进一步处理。另外,ISP后端逻辑器120的输出可被发送给存储器108(信号122),并且显示器28可从存储器108读取图像数据(信号116),在一些实施例中,存储器108可被配置成实现一个或多个帧缓冲器。在图解说明的实施例中,ISP后端逻辑器120的输出还可被提供给压缩/解压缩引擎118(信号117),以编码/解码图像数据,供存储和随后重放之用,如上面大体在图7中所述。在其它实施例中,图8的ISB子系统32可具有旁路ISP后端处理单元120的选项。在这样的实施例中,如果后端处理单元120被旁路,那么图8的ISP子系统32可按照和图7中所示类似的方式工作,即,ISP管线82的输出被直接/间接发送到存储器108、编码器/解码器118或显示器28中的一个或多个。
在图7和图8中所示的实施例中描述的图像处理技术可大体利用图9中的流程图中描述的方法130概述。如图所示,方法130始于方框132,在方框132,利用传感器接口,从图像传感器(例如,90)接收原始图像数据(例如,Bayer模式数据)。在方框134,利用ISP前端逻辑器80处理在步骤132接收的原始图像数据。如上所述,ISP前端逻辑器80可被配置成应用时域滤波、箱化补偿滤波。随后在步骤136,ISP前端逻辑器80处理的原始图像数据可被ISP管线82进一步处理,ISP管线82可进行各种处理步骤,以把原始图像数据去马赛克成全色RGB数据,并且进一步把RGB颜色数据转换到YUV或YC1C2颜色空间(其中C1和C2代表不同的色度差颜色,其中,在一个实施例中,C1和C2可代表蓝色色差(Cb)和红色色差(Cr)色度)。
从步骤136,方法130可以继续到步骤138,或者继续到步骤140。例如,在ISP管线82的输出被提供给显示器设备28的实施例(图7)中,方法130继续到步骤140,在步骤140,利用显示器设备28显示YC1C2图像数据(或者把YC1C2图像数据从ISP管线82发送给存储器108)。另一方面,在用ISP后端单元120对ISP管线82的输出进行后处理的实施例(图8)中,方法130可从步骤136继续到步骤138,在步骤138,利用ISP后端处理逻辑器120处理ISP管线182的YC1C2输出,随后在步骤140用显示器设备显示。
由于这里所示的图像处理电路32的一般复杂的设计,有益的是把ISP前端逻辑器80、ISP管道处理逻辑器82(或ISP管线)和ISP后端处理逻辑器120的讨论分成多个独立的部分,如下所示。特别地,本申请的图10-97可以涉及ISP前端逻辑器80的各个实施例和各个方面的讨论,本申请的图98-133可以涉及ISP管道处理逻辑器82的各个实施例和各个方面的讨论,图134-142可以涉及ISP后端逻辑器120的各个实施例和各个方面的讨论。
ISP前端处理逻辑器
图10是按照一个实施例,更详细地表示可在ISP前端逻辑器80中实现的功能逻辑器块的方框图。基于成像设备30和/或传感器接口94的结构,如上在图7中所述,原始图像数据可由一个或多个图像传感器90提供给ISP前端逻辑器80。在描述的实施例中,原始图像数据可由第一图像传感器90a(Sensor0)和第二图像传感器90b(Sensor1)提供给ISP前端逻辑器80。如下进一步所述,每个图像传感器90a和90b可被配置成对全分辨率图像数据应用箱化,以便提高图像信号的信噪比。例如,可以应用诸如2×2箱化之类的箱化技术,所述箱化技术可以内插以相同颜色的4个全分辨率图像像素为基础的“箱化的”原始图像像素。在一个实施例中,这会导致相对于单个噪声分量,存在与箱化的像素相关的4个累积信号分量,从而提高图像数据的信噪比,不过降低总分辨率。另外,箱化还会可能导致图像数据的不均匀或不一致的空间采样,这可利用箱化补偿滤波来校正,如下更详细所述。
如图所示,图像传感器90a和90b可分别提供作为信号Sif0和Sif1的原始图像数据。每个图像传感器90a和90b可大体与相应的统计信息处理单元142(StatsPipe0)和144(StatsPipe1)关联,统计信息处理单元142(StatsPipe0)和144(StatsPipe1)可被配置成处理图像数据,以确定一组或多组统计信息(如信号Stats0和Stats1所示),包括与自动曝光、自动白平衡、自动聚焦、闪烁检测、黑电平补偿和透镜阴影校正等等相关的统计信息。在一些实施例中,当只有传感器90a或90b之一在有效地获取图像时,如果需要另外的统计信息,那么图像数据可被发给StatsPipe0和StatsPipe1。例如,举例来说,如果StatsPipe0和StatsPipe1都可用,那么可以利用StatsPipe0收集一个颜色空间(例如RGB)的统计信息,并且利用StatsPipe1收集另一个颜色空间(例如,YUV或YCbCr)的统计信息。即,统计信息处理单元142和144可以并行工作,以收集有效传感器获得的图像数据的每一帧的多组统计信息。
在本实施例中,在ISP前端80中提供5个异步数据源。这些包括:(1)来自对应于Sensor0(90a)的传感器接口的直接输入(称为Sif0或Sens0),(2)来自对应于Sensor1(90b)的传感器接口的直接输入(称为Sif1或Sens1),(3)来自存储器108的Sensor0数据输入(称为SifIn0或Sens0DMA),存储器108可包括DMA接口,(4)来自存储器108的Sensor1数据输入(称为SifIn0或Sens1DMA),和(5)具有来自从存储器108取回的Sensor0和Sensor1数据输入的各帧的一组图像数据(称为FeProcIn或ProcInDMA)。ISP前端80还可包括来自多个源的图像数据可被发送到的多个目的地,其中,每个目的地可以是存储器(例如,108)中的存储位置,或者是处理单元。例如,在本实施例中,ISP前端80包括6个目的地:(1)接收存储器108中的Sensor0数据的Sif0DMA,(3)接收存储器108中的Sensor1数据的Sif1DMA,(3)第一统计信息处理单元142(StatsPipe0),(4)第二统计信息处理单元144(StatsPipe1),(5)前端像素处理单元(FEProc)150,和(6)到存储器108或ISP管线82的FeOut(或FEProcOut)(下面更详细讨论)。在一个实施例中,ISP前端80可被配置成使得只有某些目的地对于特定数据源有效,如下面的表1中所示。
SIf0iDMA | SIf1DMA | StatsPipe0 | StatsPipe1 | FEProc | FEOut | |
Sens0 | X | X | X | X | X | |
Sens1 | X | X | X | X | X | |
Sens0DMA | X | |||||
Sens1DMA | X | |||||
ProcInDMA | X | X |
表1每个源的ISP前端有效目的地的例子
例如,按照表1,源Sens0(Sensor0的传感器接口)可被配置成把数据提供给目的地SIf0DMA(信号154)、StatsPipe0(信号156)、StatsPipe1(信号158)、FEProc(信号160)或FEOut(信号162)。对于FEOut,在一些情况下,源数据可被提供给FEOut,从而利用FEProc绕开比如用于调试或测试目的的像素处理。另外,源Sens1(Sensor1的传感器接口)可被配置成把数据提供给目的地SIf1DMA(信号164)、StatsPipe0(信号166)、StatsPipe1(信号168)、FEProc(信号170)或FEOut(信号172),源Sens0DMA(来自存储器108的Sensor0数据)可被配置成把数据提供给StatsPipe0(信号174),源SensIDMA(来自存储器108的Sensor1数据)可被配置成把数据提供给StatsPipe1(信号176),并且源ProcInDMA(来自存储器108的Sensor0和Sensor1数据)可被配置成把数据提供给FEProc(信号178)和FEOut(信号182)。
应注意,目前举例说明的实施例被配置成使得Sens0DMA(来自存储器108的Sensor0帧)和Sens1DMA(来自存储器108的Sensor1帧)只分别被提供给StatsPipe0和StatesPipe1。这种结构允许ISP前端80把一定数目的在先帧(例如,5个帧)保留在存储器中。例如,由于用户发起利用图像传感器的捕捉事件(例如,使图像系统从预览模式转变到捕捉或记录模式,或者甚至只是开启或初始化图像传感器)的时间到捕捉图像场景的时间之间的延迟或滞后,并不是用户意图拍摄的每一帧都可以被拍摄和基本实时地处理。从而,通过在存储器108中保留一定数目的在先帧(例如,来自预览阶段),可在响应捕捉事件实际拍摄的各帧之后或者并排地处理这些在先帧,从而补偿任何这样的滞后,并提供更完整的一组图像数据。
就图10的图解说明的结构来说,应注意StatsPipe0142被配置成接收由选择逻辑器146,比如多路复用器,确定的输入156(来自Sens0)、166(来自Sens1)和174(来自Sens0DMA)之一。类似地,选择逻辑器148可以从信号158、176和168中选择输出以提供给StatsPipe1,选择逻辑器152可从信号160、170和178中选择输入以提供给FEProc。如上所述,统计数据(Stats0和Stats1)可被提供给控制逻辑器84,以便确定可用于操作成像设备30和/或ISP管道处理逻辑器82的各种控制参数。可认识到,图10中所示的选择逻辑器块(146、148和152)可由任何适当类型的逻辑器提供,所述逻辑器比如是响应控制信号选择多个输入信号之一的多路复用器。
像素处理单元(FEProc)150可被配置成逐个像素地对原始图像数据进行各种图像处理操作。如图所示,作为目的地处理单元的FEProc 150可通过选择逻辑器152从源Sens0(信号160)、Sens1(信号170)或ProcInDMA(信号178)接收图像数据。当进行像素处理操作时,FEProc150还可接收和输出各种信号(例如,可代表在时域滤波期间使用的运动历史和亮度数据的Rin、Hin、Hout和Yout),所述像素处理操作可包括时域滤波和箱化补偿滤波,如下进一步所述。像素处理单元150的输出109(FEProcOut)随后可比如借助一个或多个先入先出(FIFO)队列被转发给ISP管道逻辑器82,或者可被发送给存储器108。
此外,如图10中所示,除了接收信号160、170和178之外,选择逻辑器152还可接收信号180和184。信号180可代表来自StatsPipe0的“预处理”原始图像数据,信号184可代表来自StatsPipe1的“预处理”原始图像数据。如下所述,在收集统计信息之前,每个统计信息处理单元可对原始图像数据应用一个或多个预处理操作。在一个实施例中,每个统计信息处理单元可进行一定程度的缺陷像素检测/校正、透镜阴影校正、黑电平补偿和逆黑电平补偿。从而,信号180和184可代表已利用上述预处理操作处理的原始图像数据(如下在图68中更详细所述)。从而,选择逻辑器152赋予ISP前端处理逻辑器80提供来自Sensor0(信号160)和Sensor1(信号170)的未预处理的原始图像数据,或者来自StatsPipe0(信号180)和StatsPipe1(信号184)的预处理的原始图像数据的灵活性。另外,如选择逻辑器单元186和188所示,ISP前端处理逻辑器80还具有把来自Sensor0(信号154)或Sensor1(信号164)的未预处理的原始图像数据写入存储器108中,或者把来自StatsPipe0(信号180)或StatsPipe1(信号184)的预处理的原始图像数据写入存储器108中的灵活性。
为了控制ISP前端逻辑器80的操作,设置前端控制单元190。控制单元190可被配置成初始化和程控用于配置和启动图像帧的处理的寄存器(这里称为“执行(go)寄存器”),和选择用于更新双缓冲数据寄存器的一个或多个适当寄存器组。在一些实施例中,控制单元190还可提供记录时钟周期、存储器等待时间和服务质量(QOS)信息的性能监视逻辑器。此外,控制单元190还可控制动态时钟门控,当在来自有源传感器的输入队列中不存在足够的数据时,动态时钟门控可被用于禁用关于ISP前端80的一个或多个部分的时钟。
通过利用上述“执行寄存器”,控制单元190能够控制每个处理单元(例如,StatsPipe0、StatsPipe1和FEProc)的各个参数的更新,并且可与传感器接口对接,以控制处理单元的启动和停止。通常,每个前端处理单元逐帧地工作。如上所述(表1),处理单元的输入可以来自传感器接口(Sens0或Sens1),或者来自存储器108。此外,处理单元可以利用保存在对应的数据寄存器中的各种参数和配置数据。在一个实施例中,与每个处理单元或目的地相关的数据寄存器可被分成构成寄存器组分组的多个块。在图10的实施例中,在ISP前端中可以定义7个寄存器组分组:SIf0、SIf1、StatsPipe0、StatsPipe1、ProcPipe、FEOut和ProcIn。每个寄存器块地址空间被复制,以提供两个寄存器组。在第二个寄存器组中只实例化被双缓冲的寄存器。如果寄存器未被双缓冲,那么第二个寄存器组中的地址可被映射到第一个寄存器组中的相同寄存器的地址。
对被双缓冲的寄存器来说,一个寄存器组的寄存器被激活,并且被处理单元使用,而另一个寄存器组的寄存器被遮蔽(shadowed)。在硬件在使用激活的寄存器的时候,在当前帧间隔内,控制单元190可更新遮蔽的寄存器。在特定帧,关于哪个寄存器组用于特定处理单元的确定可由与向该处理单元提供图像数据的源对应的执行寄存器中的“NextBk”(下一个寄存器组)字段指定。本质上,NextBk是允许控制单元190控制关于下一帧的触发事件,哪个寄存器组变得激活的字段。
在详细讨论执行寄存器的操作之前,图11提供按照本发明的技术,逐帧地处理图像数据的一般方法200。从步骤202开始,被数据源(例如,Sens0、Sens1、Sens0DMA、Sens1DMA或ProcInDMA)作为目标的目的地处理单元进入空闲状态。这可以指示关于当前帧的处理已完成,于是,控制单元190可准备处理下一帧。例如,在步骤204,每个目的地处理单元的可编程参数被更新。这可包括,例如,更新与源对应的执行寄存器中的NextBk字段,以及更新与目的地单元对应的数据寄存器中的任何参数。之后,在步骤206,触发事件可以使目的地单元进入运行状态。此外,如在步骤208所示,被源作为目标的每个目的地单元完成其关于当前帧的处理操作,方法200随后可返回步骤202,以便处理下一帧。
图12描述表示ISP前端的各个目的地单元可使用的两个数据寄存器组210和212的方框图。例如,Bank0(210)可包括数据寄存器1-n(210a-210d),Bank1(212)可包括数据寄存器1-n(212a-212d)。如上所述,图10中所示的实施例可利用具有7个寄存器组分组(例如,SIf0、SIf1、StatsPipe0、StatsPipe1、ProcPipe、FEOut和ProcIn)的寄存器组(Bank0)。从而,在这样的实施例中,每个寄存器的寄存器块地址空间被复制,以提供第二寄存器组(Bank1)。
图12还图解说明对应于多个源之一的执行寄存器214。如图所示,执行寄存器214包括“NextVld”字段216和上述“NextBk”字段218。这些字段可在开始当前帧的处理之前被编程。特别地,NextVld指示来自数据源的数据将被发送到的目的地。如上所述,NextBk可为用NextVld指示的每个目标目的地,从Bank0或Bank1中选择对应的数据寄存器。尽管图12中未示出,不过,执行寄存器214还可包括可被设定以使执行寄存器作好准备的准备(arming)比特(这里称为“执行比特”)。当检测到关于当前帧的触发事件226时,NextVld和NextBk可被复制到对应的当前或“激活”寄存器220的CurrVld字段222和CurrBk字段224中。在一个实施例中,一个或多个当前寄存器220可以是可由硬件设定的只读寄存器,同时保持对于ISP前端80内的软件指令不可访问。
应理解,对于每个ISP前端源,可以提供对应的执行寄存器。对本公开来说,对应于上述源Sens0、Sens1、Sens0DMA、Sens1DMA和ProcInDMA的执行寄存器可分别被称为Sens0Go、Sens1Go、Sens0DMAGo、Sens1DMAGo和ProcInDMAGo。如上所述,控制单元可利用执行寄存器控制ISP前端80内的帧处理的排序。每个执行寄存器包含分别指示对于下一帧,哪些目的地有效和哪个寄存器组(0或1)将被使用的NextVld字段和NextBk字段。当发生下一帧的触发事件226时,NextVld和NextBk字段被复制到指示当前有效目的地和寄存器组编号的对应激活只读寄存器220,如上在图12中所示。每个源可被配置成异步工作,并且能够把数据发给它的任意有效目的地。此外,应明白,对于每个目的地,在当前帧期间,通常只有一个源可以是激活的。
就执行寄存器214的准备和触发来说,确认执行寄存器214中的准备比特或“执行比特”借助相关联的NextVld和NextBk字段使对应数据源作好准备。对于触发,基于源输入数据是读取自存储器(例如,Sens0DMA、Sens1DMA或ProcInDMA),还是来自传感器接口(例如,Sens0或Sens1)存在各种模式。例如,如果所述输入来自存储器108,那么使执行比特本身作好准备可充当触发事件,因为控制单元190能控制从存储器108读取数据的时间。如果传感器接口正在输入图像帧,那么触发事件可取决于相对于从传感器接口接收数据的时间,使对应的执行寄存器作好准备的定时。按照本实施例,图13-15中表示了根据传感器接口输入触发定时的三种不同技术。
首先参见图13,图中举例说明了第一种情形,其中,一旦被源作为目标的所有目的地从忙或运行状态转变成空闲状态,就发生触发。这里,数据信号VVALID(228)代表来自源的图像数据信号。脉冲230代表图像数据的当前帧,脉冲236代表图像数据的下一帧,间隔232代表垂直消隐间隔(VBLANK)232(例如,代表当前帧230的最后一行和下一帧236之间的时间差)。脉冲230的上升沿和下降沿之间的时间差代表帧间隔234。从而,在图13中,源可被配置成当所有目标目的地都已完成对当前帧230的处理操作,并转变成空闲状态时进行触发。在这种情形下,在目的地完成处理之前,使源作好准备(例如,通过设定准备或“执行”比特),以致一旦目标目的地变得空闲,源就能够触发和开始下一帧236的处理。在垂直消隐间隔232期间,在传感器输入数据到达之前,可以利用由与源对应的执行寄存器指定的寄存器组,为下一帧236设置和配置处理单元。例如,在下一帧236到达之前,可以填充由FEProc 150使用的读取缓冲器。在这种情况下,在触发事件之后,可以更新与激活寄存器组对应的遮蔽寄存器,从而允许全帧间隔为下一帧(例如,在帧236之后)设置双缓冲寄存器。
图14图解说明第二种情形,其中,通过使与源对应的执行寄存器中的执行比特作好准备来触发源。在这种“执行时触发(trigger-on-go)”配置中,被源作为目标的目的地单元已空闲,并且使执行比特作好准备是触发事件。这种触发模式可用于未被双缓冲,于是在垂直消隐期间被更新的寄存器(例如,与在帧间隔234期间更新双缓冲遮蔽寄存器相反)。
图15图解说明第三种触发模式,其中,当检测到下一帧的开始,即,上升的VSYNC时,触发数据源。不过应注意,在这种模式下,如果在下一帧236已开始处理之后,执行寄存器作好了准备(通过设置执行比特),那么源将使用对应于前一帧的目标目的地和寄存器组,因为在目的地开始处理之前,CurrVld和CurrBk字段未被更新。这未给设置目的地处理单元留下任何垂直消隐间隔,并且可能潜在地导致掉帧,尤其是当以双传感器模式工作时。不过应注意,如果图像处理电路32在按照对每一帧都使用相同寄存器组的单传感器模式(例如,目的地(NextVld)和寄存器组(NextBk)不变化)工作,那么这种模式仍然可产生精确的操作。
现在参见图16,图中更详细地图解说明控制寄存器(或者“执行寄存器”)214。执行寄存器214包括作好准备的“执行”比特238,以及NextVld字段216和NextBk字段218。如上所述,ISP前端80的每个源(例如,Sens0、Sens1、Sens0DMA、Sens1DMA或ProcInDMA)可具有对应的执行寄存器214。在一个实施例中,执行比特238可以是单比特字段,通过把执行比特238设为1,可使执行寄存器214作好准备。NextVld字段216可包含与ISP前端80的目的地的数目相对应的多个比特。例如,在图10中所示的实施例中,ISP前端包括6个目的地:Sif0DMA、Sif1DMA、StatsPipe0、StatsPipe1、FEProc和FEOut。从而,执行寄存器214可在NextVld字段216中包括6个比特,一个比特对应于一个目的地,并且其中目标目的地被设定为1。类似地,NextBk字段218可包含与ISP前端80中的数据寄存器的数目对应的多个比特。例如,如上所述,图10中所示的ISP前端80的实施例可包括7个数据寄存器:SIf0、SIf1、StatsPipe0、StatsPipe1、ProcPipe、FEOut和ProcIn。从而,NextBk字段218可包括7个比特,一个比特对应于一个数据寄存器,并且其中,通过把其相应的比特值设定为0或1,选择对应于Bank0和Bank1的数据寄存器。从而,通过利用执行寄存器214,当触发时,源明确地知道哪些目的地单元将要接收帧数据,哪些寄存器组将被用于配置目标目的地单元。
另外,由于ISP电路32支持的双传感器结构,ISP前端可按照单传感器结构模式(例如,只有一个传感器在获取数据)和双传感器结构模式(例如,两个传感器都在获取数据)工作。在典型的单传感器结构中,来自传感器接口(比如Sens0)的输入数据被发给StatsPipe0(用于统计信息处理)和FEProc(用于像素处理)。另外,传感器帧也可被发给存储器(SIf0DMA),以便以后处理,如上所述。
下面在表2中描述了当按单传感器模式工作时,如何配置与ISP前端80的每个源对应的NextVld字段的例子。
SIf0DMA | SIf1DMA | StatsPipe0 | StatsPipe1 | FEProc | FEOut | |
Sens0Go | 1 | X | 1 | 0 | 1 | 0 |
Sens1Go | X | 0 | 0 | 0 | 0 | 0 |
Sens0DMAGo | X | X | 0 | X | X | X |
Sens1DMAGo | X | X | X | 0 | X | X |
ProcInDMAGo | X | X | X | X | 0 | 0 |
表2-每个源的NextVld的例子:单传感器模式
如上参考表1所述,IPS前端80可被配置成使得只有一些目的地适用于特定的源。从而,表2中用“X”标记的目的地意图指示ISP前端80未被配置成允许特定源向该目的地发送帧数据。对于这样的目的地,与所述目的地对应的特定数据源的NextVld字段的比特可以始终为0。不过应明白这仅仅是一个实施例,事实上,在其它实施例中,ISP前端80可被配置成使得每个源能够以每个可用的目的地单元为目标。
上面在表2中所示的配置表示其中只有Sensor0在提供帧数据的单传感器模式。例如,Sens0Go寄存器把目的地表示成SIf0DMA、StatsPipe0和FEProc。从而,当被触发时,Sensor0图像数据的每一帧被发给这三个目的地。如上所述,SIf0DMA可把帧保存在存储器108中供以后处理,StatsPipe0应用统计信息处理以确定各种统计数据点,FEProc利用例如时域滤波和箱化补偿滤波对帧进行处理。此外,在需要额外的统计信息(例如,不同颜色空间中的统计信息)的一些结构中,在单传感器模式期间,也可启用StatsPipe1(对应的NextVld被设定为1)。在这样的实施例中,Sensor0帧数据被发送给StatsPipe0和StatsPipe1。此外,如本实施例中所示,在单传感器模式期间,只有单个传感器接口(例如,Sens0或Sens1)是唯一的激活的源。
考虑到上述内容,图17提供描述当只有单个传感器(例如,Sensor0)激活时,在ISP前端80中处理帧数据的方法240的流程图。尽管方法240举例图解说明FEProc 150对Sensor0帧数据的处理,不过应明白,该处理可应用于ISP前端80中的任何其它源和对应目的地单元。从步骤242开始,Sensor0开始获得图像数据,并把捕捉的帧发送给ISP前端80。控制单元190可初始化对应于Sens0(Sensor0接口)的执行寄存器,以确定目标目的地(包括FEProc)和要使用哪组寄存器,如步骤244所示。之后,判决逻辑器246确定是否发生了源触发事件。如上所述,从传感器接口输入的帧数据可利用不同的触发模式(图13-15)。如果未检测到触发事件,那么处理240继续等待触发。一旦触发出现,则在步骤248,下一帧就变成当前帧,并被发给FEProc(和其它目标目的地)以供处理。可利用基于在Sens0执行寄存器的NextBk字段中指定的对应数据寄存器(ProcPipe)的数据参数来配置FEProc。在步骤250完成当前帧的处理之后,方法240返回步骤244,在步骤244为下一帧对Sens0执行寄存器编程。
当ISP前端80的Sensor0和Sensor1都激活时,统计信息处理通常简单,因为每个传感器输入可由相应的统计信息块StatsPipe0和StatsPipe1处理。不过,由于ISP前端80的例示实施例只提供单个像素处理单元(FEProc),因此FEProc可被配置成交替处理对应于Sensor0输入数据的帧和对应于Sensor1输入数据的帧。可以理解,在例示实施例中,图像帧读取自FEProc以避免实时处理来自一个传感器的图像数据,而未实时地处理来自另一个传感器的图像数据的情况。例如,如下面的表3中所示(表3描述当ISP前端80按照双传感器模式工作时,对于每个数据源来说,执行寄存器中的NextVld字段的一种可能配置),来自每个传感器的输入数据被发给存储器(SIf0DMA和SIf1DMA)和对应的统计信息处理单元(StatsPipe0和StatsPipe1)。
SIf0DMA | SIf1DMA | StatsPipe0 | StatsPipe1 | FEProc | FEOut | |
Sens0Go | 1 | X | 1 | 0 | 0 | 0 |
Sens1Go | X | 1 | 0 | 1 | 0 | 0 |
Sens0DMAGo | X | X | 0 | X | X | X |
Sens1DMAGo | X | X | X | 0 | X | X |
ProcInDMAGo | X | X | X | X | 0 | 0 |
表3-每个源的NextVld的例子:双传感器模式
存储器中的传感器帧从ProcInDMA源被发给FEProc,从而传感器帧按以其对应的帧速率为基础的速率在Sensor0和Sensor1之间交替。例如,如果Sensor0和Sensor1都以30帧/秒(fps)的速率获得图像数据,那么可按照1对1的方式交错其传感器帧。如果Sensor0(30fps)以两部于Sensor1(15fps)的速率获得图像数据,那么所述交错可以是2对1。即,相对于Sensor1数据的每一个帧,从存储器读出Sensor0数据的两个帧。
考虑到以上内容,图18描述在具有同时获取图像数据的两个传感器的ISP前端80中处理帧数据的方法252。在步骤254,Sensor0和Sensor1都开始获取图像帧。可以理解,Sensor0和Sensor1可利用不同的帧速率、分辨率等获取图像帧。在步骤256,从Sensor0和Sensor1获得的帧被写入存储器108中(例如,利用SIf0DMA和SIf1DMA目的地)。之后,源ProcInDMA交替地从存储器108读取帧数据,如步骤258所示。如上所述,帧可基于获得数据的帧速率在Sensor0数据和Sensor1数据之间交替。在步骤260,获得来自ProcInDMA的下一帧。之后,在步骤262,基于下一帧是Sensor0数据还是Sensor1数据,对应于源(这里,ProcInDMA)的执行寄存器的NextVld和NextBk字段被编程。之后,判决逻辑器264确定是否发生了源触发事件。如上所述,可通过使执行比特作好准备来触发自存储器的数据输入(例如,“执行时触发”模式)。从而,一旦执行寄存器的执行比特被设定为1,就可能出现触发。一旦触发出现,在步骤266,下一帧就变成当前帧,并被发送给FEProc,以供处理。如上所述,可利用基于在ProcInDMA执行寄存器的NextBk字段中指定的对应数据寄存器(ProcPipe)的数据参数,配置FEProc。在步骤268,在完成当前帧的处理之后,方法252可以返回步骤260并继续进行。
ISP前端80被配置成处理的另一个操作事件是图像处理期间的配置变化。例如,当ISP前端80从单传感器配置转变成双传感器配置,或者从双传感器配置转变成单传感器配置时,可发生这样的事件。如上所述,取决于一个图像传感器激活还是两个图像传感器都激活,关于某些源的NextVld字段可能不同。从而,当传感器配置被改变时,在新的源把目的地单元确定为目标之前,ISP前端控制单元190可释放所有目的地单元。这可避免无效的配置(例如,把多个数据源分配给一个目的地)。在一个实施例中,通过把所有执行寄存器的NextVld字段设定为0,从而禁用所有目的地,并使执行比特(go bit)作好准备,可实现目的地单元的释放。在释放了目的地单元之后,可根据当前传感器模式重新配置执行寄存器,然后继续图像处理。
图19中按照一个实施例,表示了在单传感器配置和双传感器配置之间切换的方法270。从步骤272开始,识别来自ISP前端80的特定源的图像数据的下一帧。在步骤274,目标目的地(NextVld)被编程到对应于该源的执行寄存器中。随后,在步骤276,取决于目标目的地,NextBk被编程为指向与目标目的地相关联的正确数据寄存器。之后,判决逻辑器278确定是否发生了源触发事件。一旦触发出现,下一帧就被发送给由NextVld指定的目的地单元,并由所述目的地单元利用由NextBk指定的对应数据寄存器处理,如步骤280所示。处理继续进行到步骤282,在步骤282,完成当前帧的处理。
随后,判决逻辑器284确定所述源的目标目的地是否变化。如上所述,对应于Sens0和Sens1的执行寄存器的NextVld设置可基于是一个传感器激活还是两个传感器都激活而变化。例如,参见表2,如果只有Sensor0激活,那么Sensor0数据被发给SIf0DMA、StatsPipe0和FEProc。不过,参见表3,如果Sensor0和Sensor1都激活,那么Sensor0数据并不被直接发给FEProc。相反,如上所述,Sensor0和Sensor1数据被写入存储器108中,并由源ProcInDMA交替地读出到FEProc。从而,如果在判决逻辑器284未检测到目标目的地变化,那么控制单元190推断传感器配置没有变化,并且方法270返回步骤276,在步骤276,源执行寄存器的NextBk字段被编程为指向下一帧的正确数据寄存器,从而继续处理。
不过,如果在判决逻辑器284检测到目的地变化,那么控制单元190确定发生了传感器配置变化。例如,这可代表从单传感器模式切换到双传感器模式,或者关闭所有传感器。因而,方法270进行到步骤286,在步骤286,所有执行寄存器的NextVld字段的所有比特都被设定为0,从而有效地禁止在下次触发时把帧发送给任何目的地。随后,在判决逻辑器288,确定所有目的地单元是否都转变成空闲状态。如果否,那么方法270在判决逻辑器288等待,直到所有目的地单元都已完成其当前操作为止。随后,在判决逻辑器290,确定是否要继续图像处理。例如,如果目的地变化代表Sensor0和Sensor1都停用,那么在步骤292结束图像处理。不过,如果确定要继续图像处理,那么方法270返回步骤274,并且按照当前操作模式(例如,单传感器或双传感器)对执行寄存器的NextVld字段编程。如这里所示,清除执行寄存器和目的地字段的步骤284-292可集体用附图标记294表示。
下面,图20通过提供另一种双传感器模式的操作的流程图(方法296),表示另一个实施例。方法296描述其中一个传感器(例如Sensor0)在主动地获得图像数据,并把图像帧发给FEProc 150以供处理,同时还把图像帧发给StatsPipe0和/或存储器108(Sif0DMA),而另一个传感器(例如Sensor1)停用(例如,被关闭)的情况,如步骤298所示。判决逻辑器300随后检测在下一帧,Sensor1将变得激活,从而向FEProc发送图像数据的条件。如果该条件不被满足,那么方法296返回步骤298。不过,如果该条件被满足,那么方法296着手执行动作294(整体为图19的步骤284-292),从而在步骤294清除和重新配置源的目的地字段。例如,在步骤294,与Sensor1相关的执行寄存器的NextVld字段可被编程,以指定FEProc作为目的地,以及StatsPipe1和/或存储器(Sif1DMA),而与Sensor0相关的执行寄存器的NextVld字段可被编程,以清除作为目的地的FEProc。在这个实施例中,尽管在下一帧时,Sensor0捕捉的帧不被发送给FEProc,不过Sensor0可仍然保持激活,并继续把其图像帧发给StatsPipe0,如在步骤302所示,而在步骤304,Sensor1捕捉并把数据发给FEProc以供处理。从而,两个传感器,即,Sensor0和Sensor1可继续按照这种“双传感器”模式工作,尽管只有来自一个传感器的图像帧被发给FEProc以供处理。对本例来说,向FEProc发送帧以供处理的传感器可被称为“激活传感器”,不向FEProc发送帧但是仍然向统计信息处理单元发送数据的传感器可被称为“半激活传感器”,根本不获取数据的传感器被称为“停用传感器”。
上述技术的一个益处在于,由于对半激活传感器(Sensor0)来说,继续获取统计信息,因此当下次半激活传感器转变成激活状态,以及当前的激活传感器(Sensor1)转变成半激活或者停用状态时,半激活传感器可在一帧内开始获取数据,因为归因于图像统计信息的继续收集,色平衡和曝光参数可以已经是可获得的。这种技术可被称为图像传感器的“热切换”,并且避免了与图像传感器的“冷启动”相关的缺陷(例如,从无可用的统计信息开始)。此外,为了节省电力,由于每个源是异步的(如上所述),因此,在半激活期间,半激活传感器可按降低的时钟和/或帧速率工作。
在继续更详细地说明在图10的ISP前端逻辑器80中说明的统计信息处理和像素处理操作之前,相信简要地介绍可结合目前公开的技术使用的若干类型的存储器寻址格式,以及各种ISP帧区的定义将有助于更好地理解本发明的主题。
现在参见图21和22,图中分别图解说明可应用于接收自图像传感器90,并保存在存储器(例如108)中的像素数据的线性寻址模式和分块(tiled)寻址模式。描述的实施例可基于64字节的主接口块请求大小。可以理解,其它实施例可以利用不同的块请求大小(例如,32字节,128字节等等)。在图21中所示的线性寻址模式中,图像样本顺序地位于存储器中。术语“线性跨距”用字节数指定2个相邻垂直像素之间的距离。在本例中,使平面的起始基地址(starting base address)对准64字节边界,直线跨距可以是64的倍数(根据块请求大小)。
在分块模式格式的例子中,如图22中所示,图像样本首先被顺序排列在“区块”中,所述区块随后被顺序保存在存储器中。在图解说明的实施例中,每个区块可以是256字节宽×16行高。术语“区块跨距”应被理解为用字节数表示2个相邻垂直区块之间的距离。在本例中,使分块模式下的平面的起始基地址对准4096字节边界(例如,区块的大小),区块跨距可以是4096的倍数。
考虑到上述内容,图23中图解说明了在图像源帧内可定义的各种帧区。提供给图像处理电路32的源帧的格式可使用上面说明的分块或线性寻址模式,因为可以利用8、10、12、14或16比特精度的像素格式。如图23中所示,图像源帧306可包括传感器帧区308、原始帧区308和激活区310。传感器帧308通常是图像传感器90能够向图像处理电路32提供的最大帧大小。原始帧区310可被定义成发送给ISP前端处理逻辑器80的传感器帧308的区。激活区312可被定义成源帧306的一部分,一般在原始帧区310内,对其进行关于特定图像处理操作的处理。按照本发明技术的实施例,对不同的图像处理操作来说,激活区312可以相同或者可以不同。
按照本发明技术的各个方面,ISP前端逻辑器80只接收原始帧310。从而,对本讨论来说,ISP前端处理逻辑器80的总帧大小可被假定为由宽度314和高度316确定的原始帧大小。在一些实施例中,从传感器帧308的边界到原始帧310的边界的偏移量可由控制逻辑器84确定和/或保持。例如,控制逻辑器84可包括根据输入参数(比如相对于传感器帧308指定的x偏移量318和y偏移量320)确定原始帧区310的固件。此外,在一些情况下,IPS前端逻辑器80或者ISP管道逻辑器82内的处理单元可具有定义的激活区,从而在原始帧中但在有效区312以外的像素不被处理,即,保持不变。例如,可根据相对于原始帧310的x偏移量326和y偏移量328,定义具有宽度322和高度324的特定处理单元的激活区312。此外,在没有具体定义激活区的情况下,图像处理电路32的一个实施例可以假定激活区312与原始帧310相同(例如,x偏移量326和y偏移量328都等于0)。从而,对于对图像数据执行的图像处理操作来说,可相对于原始帧310或激活区312的边界定义边界条件。另外,在一些实施例中,可通过识别存储器中的开始和结束位置,而不是开始位置和窗口大小信息来指定窗口(帧)。
在一些实施例中,ISP前端处理单元(FEProc)80还可利用重叠垂直条带支持处理图像帧,如图24中所示。例如,可利用左条带(Stripe0)、中间条带(Stripe1)和右条带(Stripe2)三次(in three passes)发生本例中的图像处理。这可允许IPS前端处理单元80多次地处理更宽的图像,而不需要增大线缓冲器的大小。这种技术可被称为“跨距寻址”。
当利用多个垂直条带处理图像帧时,稍微重叠地读取输入帧,从而运行足够的滤波上下文重叠,以致在多次读取图像和单次读取图像之间,不存在或几乎不存在差异。例如,在本例中,具有宽度SrcWidth0的Stripe0和具有宽度SrcWidth1的Stripe1部分重叠,如重叠区330所示。类似地,Stripe1还在右侧与具有宽度SrcWidth2的Stripe2重叠,如重叠区332所示。这里,总跨距是每个条带的宽度(SrcWidth0、SrcWidth1、SrcWidth2)之和减去重叠区330和332的宽度(334、336)。当把图像帧写入存储器(例如,108)中时,定义激活输出区,只写入在激活输出区内的数据。如图24中所示,在对存储器进行写入时,根据未重叠的宽度ActiveDst0、ActiveDst1和ActiveDst2,写入每个条带。
如上所述,图像处理电路32可直接从传感器接口(例如,94)接收图像数据,或者从存储器108(例如,DMA存储器)接收图像数据。在从存储器提供输入数据的情况下,图像处理电路32和ISP前端处理逻辑器80可被配置成提供字节交换,其中,来自存储器的进入像素数据在处理之前可以被字节交换。在一个实施例中,交换代码可被用于指示来自存储器的输入数据的相邻双字、字、半字或字节是否被交换。例如,参见图25,可利用4比特交换代码,以16字节(字节0-15)的一组数据进行字节交换。
如图所示,交换代码可包括4比特,所述4比特从左到右可被称为bit3、bit2、bit1和bit0。当所有比特都被设为0时,如附图标记338所示,不进行任何字节交换。当bit3被设为1时,如附图标记340所示,双字(例如,8字节)被交换。例如,如图25中所示,用字节0-7表示的双字与用字节8-15表示的双字交换。如果bit2被设定为1,如附图标记342所示,进行字(例如,4字节)交换。在图解说明的例子中,这会导致用字节8-11表示的字与用字节12-15表示的字交换,用字节0-3表示的字与用字节4-7表示的字交换。类似地,如果bit1被设定为1,那么如附图标记344所示,进行半字(例如,2字节)交换(例如,字节0-1与字节2-3交换,等等),如果bit0被设定为1,那么如附图标记346所示,则进行字节交换。
在本实施例中,可通过有序地评估交换代码的bit3、bit2、bit 1和bit 0来进行交换。例如,如果bit3和bit2被设定成值1,那么首先进行双字交换(bit3),之后进行字交换(bit2)。从而,如图25中所示,当交换代码被设定成“1111”时,那么最终结果是输入数据从小端格式(littleendian format)交换成大端格式。
下面,按照某些公开的实施例,进一步详细讨论对于原始图像数据(例如,Bayer RGB数据)、RGB颜色数据和YUV(YCC、亮度/色度数据),图像处理电路32可以支持的图像像素数据的各种存储器格式。首先,讨论图像处理电路32的各个实施例可支持的目的地/源帧中的原始图像像素(例如,去马赛克之前的Bayer数据)的格式。如上所述,某些实施例可支持8、10、12、14和16比特精度的图像像素处理。在原始图像数据的情况下,这里可把8、10、12、14和16比特原始像素格式分别称为RAW8、RAW10、RAW12、RAW14和RAW16格式。图26中图形表示了在存储器中如何以非紧缩形式保存RAW8、RAW10、RAW12、RAW14和RAW16格式的例子。对比特精度大于8比特(并且不是8比特的倍数)的原始图像格式来说,也可以紧缩格式保存像素数据。例如,图27表示如何把RAW10图像像素保存在存储器中的例子。类似地,图28和29图解说明把RAW12和RAW14图像像素保存在存储器中的例子。如下进一步所述,当把图像数据写入存储器中/从存储器读取图像数据时,与传感器接口94相关的控制寄存器可定义目的地/源像素格式(不论该像素采用紧缩格式还是非紧缩格式),寻址格式(例如,线性或分块),和交换代码。从而,ISP处理电路32读取和判读像素数据的方式可以取决于像素格式。
图像信号处理(ISP)电路32还可以支持传感器接口源/目的地帧(例如,310)中的RGB颜色像素的某些格式。例如,RGB图像帧可接收自传感器接口(例如,在传感器接口包括板上去马赛克逻辑器的实施例中)并且被保存到存储器108中。在一个实施例中,当收到RGB帧时,ISP前端处理逻辑器80(FEProc)可旁路像素和统计信息处理。例如,图像处理电路32可支持下述RGB像素格式:RGB-565和RGB-888。图30中表示了如何把RGB-565像素数据保存在存储器中的例子。如图所示,RGB-565格式可提供按RGB顺序交错的5比特红色分量、6比特绿色分量和5比特蓝色分量的一个平面。从而,总共16比特可用于表示RGB-565像素(例如,{R0,G0,B0}或{R1,G1,B1})。
如图31中所示,RGB-888格式可包括按RGB顺序交错的8比特红色、绿色和蓝色分量的一个平面。在一个实施例中,ISP电路32还可以支持RGB-666格式,RGB-666格式通常提供按RGB顺序交错的6比特红色、绿色和蓝色分量的一个平面。在这样的实施例中,当选择RGB-666格式时,通过利用图31中所示的RGB-888格式,RGB-666像素数据可被保存在存储器中,不过每个像素被左对齐,两个最低有效位(LSB)被设置为0。
在一些实施例中,ISP电路32还可以支持允许像素具有浮点值的扩展范围和精度的RGB像素格式。例如,在一个实施例中,ISP电路32可支持图32中所示的RGB像素格式,其中,红色(R0)、绿色(G0)和蓝色(B0)颜色分量被表示成8比特值,具有共用的8比特指数(E0)。从而,在这样的实施例中,用R0、G0、B0和E0定义的实际的红色(R′)、绿色(G′)和蓝色(B′)值可被表示成:
R′=R0[7:0]*2^E0[7:0]
G′=G0[7:0]*2^E0[7:0]
B′=B0[7:0]*2^E0[7:0]
这种像素格式可被称为RGBE格式,它有时也称为Radiance图像像素格式。
图33和34图解说明ISP电路32可支持的另外的RGB像素格式。特别地,图33描述可保存具有5比特共用指数的9比特红色、绿色和蓝色分量的像素格式。例如,每个红色、绿色和蓝色像素的高8位[8:1]被保存在存储器中的相应字节中。另一个字节用于保存每个红色、绿色和蓝色像素的5比特指数(例如,E0[4:0])和最低有效位[0]。从而,在这样的实施例中,用R0、G0、B0和E0定义的实际的红色(R′)、绿色(G′)和蓝色(B′)值可被表示成:
R′=R0[8:0]*2^E0[4:0]
G′=G0[8:0]*2^E0[4:0]
B′=B0[8:0]*2^E0[4:0]
此外,图33中图解说明的像素格式也是灵活的,因为它可以与图31中所示的RGB-888格式兼容。例如,在一些实施例中,ISP处理电路32可处理具有指数分量的全RGB值,或者也可按照与RGB-888格式相似的方式,只处理每个RGB颜色分量的高8位部分[7:1]。
图34描述可保存具有2比特共享分量的10比特红色、绿色和蓝色分量的像素格式。例如,每个红色、绿色和蓝色像素的高8位[9:2]被保存在存储器中的相应字节中。另一个字节被用于保存每个红色、绿色和蓝色像素的2比特指数(例如,E0[1:0])和最低有效2比特[1:0]。从而,在这样的实施例中,用R0、G0、B0和E0定义的实际的红色(R′)、绿色(G′)和蓝色(B′)值可被表示成:
R′=R0[9:0]*2^E0[1:0]
G′=G0[9:0]*2^E0[1:0]
B′=B0[9:0]*2^E0[1:0]
另外,类似于图33中所示的像素格式,图34中图解说明的像素格式也是灵活的,因为它与图31中所示的RGB-888格式兼容。例如,在一些实施例中,ISP处理电路32可处理具有指数分量的全RGB值,或者也可按照与RGB-888格式类似的方式,只处理每个RGB颜色分量的高8位部分(例如,[9:2])。
ISP电路32另外还可以支持传感器接口源/目的地帧(例如,310)中的YCbCr(YUV)亮度和色度像素的某些格式。例如,YCbCr图像帧可接收自传感器接口(例如,在传感器接口包括板上去马赛克逻辑器,和被配置成把RGB图像数据转换到YCC颜色空间的逻辑器的实施例中)并被保存到存储器108中。在一个实施例中,当收到YCbCr帧时,ISP前端处理逻辑器80可旁路像素和统计信息处理。例如,图像处理电路32可以支持下述YCbCr像素格式:YCbCr-4:2:08,2平面;和YCbCr-4:2:2 8,1平面。
YCbCr-4:2:0 8,2平面像素格式可在存储器中提供两个独立的图像平面,一个用于亮度像素(Y),一个用于色度像素(Cb,Cr),其中,色度平均交错Cb和Cr像素样本。另外,可沿着水平(x)方向和垂直(y)方向1/2地对色度平面子采样。图35中表示了如何把YCbCr-4:2:08,2平面的数据保存在存储器中的例子,图35描述用于保存亮度(Y)样本的亮度平面347和用于保存色度(Cb,Cr)样本的色度平面348。图36中表示的YCbCr-4:2:28,1平面的格式可以包括交错的亮度(Y)和色度(Cb,Cr)像素样本的一个图像平面,同时色度样本沿着水平(x)方向和垂直(y)方向1/2地被子采样。在一些实施例中,通过利用上述8比特格式和舍入(例如,10比特数据的两个最低有效位被舍入),把像素样本保存到存储器中,ISP电路32还可支持10比特YCbCr像素格式。此外,可以理解,通过利用上面在图30-34中讨论的任意RGB像素格式,还可保存YC1C2值,其中,按照与R、G和B分量类似的方式分别保存Y、C1和C2分量。
返回参见图10中所示的ISP前端处理逻辑器80,提供到存储器108的各种读取和写入通道。在一个实施例中,读/写通道可共用公共的数据总线,可利用高级微控制器总线架构,比如高级可扩展接口(AXI)总线或者任何其它适当种类的总线(AHB、ASB、APB、ATB等),提供所述公共数据总线。取决于如上所述可借助控制寄存器确定的图像帧信息(例如,像素格式、地址格式、紧缩方法),可实现成控制逻辑器84的一部分的地址生成块可被配置成向总线接口提供地址和突发大小信息。例如,地址计算可取决于各种参数,比如像素数据是否被紧缩,像素数据格式(例如,RAW8、RAW10、RAW12、RAW14、RAW16、RGB或YCbCr/YUV格式),使用分块寻址格式还是线性寻址格式,图像帧数据相对于存储器阵列的x偏移量和y偏移量,以及帧宽度、高度和跨距。计算像素地址时可以使用的其它参数可包括最小像素单元值(MPU)、偏移掩码、每个MPU值的字节(BPPU),和MPU值的Log2(L2MPU)。下面所示的表4按照一个实施例,举例说明紧缩和非紧缩像素格式的上述参数。
表4-像素地址计算参数(MPU、L2MPU、BPPU)
应理解,MPU和BPPU设置允许ISP电路32访问为了读取一个像素而需要被读取的像素的数目,即使不是所有读取的数据都是需要的。即,MPU和BPPU设置可允许ISP电路32按照与存储器字节对齐的像素数据格式(例如,使用8比特(1字节)的倍数来保存像素值)和未与存储器字节对齐的像素数据格式(例如,利用小于或大于8比特(1字节)的倍数,即,RAW10、RAW12等保存像素值)进行读取。
参见图37,图中图解说明按照线性寻址,保存在存储器中的图像帧350的位置的例子,其中每个块代表64字节(如上在图21中所述)。在一个实施例中,下面的伪代码举例说明可由控制逻辑器实现的以识别线性寻址下的存储帧的起始块和块宽度的处理。
BlockWidth=LastBlockX-BlockOffsetX+1;其中
BlockOffsetX=(((OffsetX>>L2MPU)*BPPU)>>6)
LastBlockX=((((OffsetX+Width-1)>>L2MPU)*BPPU+
BPPU-1)>>6)
BlockStart=OffsetY*Stride+BlockOffsetX
其中,Stride代表帧跨距(字节),是64的倍数。例如,在图37中,SrcStride和DstStride为4,意味4个64字节的块。参见上面的表4,L2MPU和BPPU的值可以取决于帧350中的像素的格式。如图所示,一旦已知BlockOffsetX,就可确定BlockStart。随后利用BlockOffsetX和LastBlockX,可确定BlockWidth,BlockOffsetX和LastBlockX可利用对应于帧350的像素格式的L2MPU和BPPU的值确定。
图38中描述了按照分块寻址的类似例子,其中,源图像帧352被保存在存储器中,并且重叠一部分的Tile0、Tile 1、Tile n和Tile n+1。在一个实施例中,下述伪代码举例说明可由控制逻辑器实现的、识别分块寻址下的存储帧的起始块和块宽度的处理。
BlockWidth=LastBlockX-BlockOffsetX+1;其中
BlockOffsetX=(((OffsetX>>L2MPU)*BPPU)>>6)
LastBlockX=((((OffsetX+Width-1)>>L2MPU)*BPPU+
BPPU-1)>>6)
BlockStart=((OffsetY>>4)*(Stride>>6)+
(BlockOffsetX>>2)*64+OffsetY[3:0]*4+
(BlockOffsetX[1:0])
上述计算中,表达式“(OffsetY>>4)*(Stride>>6)”可代表到达图像帧在存储器中处于的分块行的块数。表达式“(BlockOffsetX>>2)*64”可代表保存的图像帧在x方向偏移的块数。表达式“OffsetY[3:0]*4”可代表到达图像帧的起始地址所位于的分块内的行的块数。此外,表达式“BlockOffsetX[1:0]”可代表到达分块内与图像帧的起始地址对应的x偏移量的块数。另外,在图38中图解说明的实施例中,每个分块的块数(BlocksPerTile)是64块,每个块的字节数(BytesPerBlock)可以是64字节。
如上面在表4中所示,对按照RAW10、RAW12和RAW14紧缩格式保存的像素来说,4个像素分别构成5、6或7个字节(BPPU)的最小像素单元(MPU)。例如,参见图27中所示的RAW10像素格式例子,4个像素P0~P3的MPU包括5个字节,其中,像素P0~P3每一个的高8位被保存在4个相应的字节中,每个像素的低位2字节被保存在32比特地址01h的比特0~7中。类似地,参见图28,利用RAW12格式的4个像素P0~P3的MPU包括6个字节,其中像素P0和P1的低4位被保存在与地址00h的比特16~23对应的字节中,像素P2和P3的低4位保存在与地址01h的比特8-15对应的字节中。图29表示利用RAW14格式的4个像素P0~P3的MPU包括7字节,其中4个字节用于保存MPU的每个像素的高8位,3字节用于保存MPU的每个像素的低6位。
利用这些像素格式,在帧行的末尾可能具有其中使用MPU的不到4个像素的局部MPU(例如,当行宽模4不为0时)。当读取局部MPU时,未用的像素可被忽略。类似地,当把局部MPU写入目的地帧中时,可用0值写入未使用的像素。此外,在一些情况下,帧行的最后一个MPU可能未对准64字节块边界。在一个实施例中,在最后MPU之后一直到最后的64字节块的末尾的字节不被写入。
按照本公开的实施例,ISP处理电路32还可被配置成提供溢出处理。例如,在ISP前端处理逻辑器80从它自己的内部处理单元,从下游处理单元(例如,ISP管线82和/或ISP后端处理逻辑器120),或者从目的地存储器(例如,图像数据将被写入的存储器)受到背压的某些情形下,会发生溢出状态(也称为“过速”)。当比一个或多个处理块能够处理数据的速度,或者比数据可被写入目的地(例如,存储器108)的速度更快地(例如,从传感器接口或者存储器)读入像素数据时,可能发生溢出状态。
如下进一步所述,读写存储器可成为溢出状态的原因之一。不过,由于输入数据被保存,因此在溢出状态的情况下,ISP电路32可以简单地停止输入数据的读取,直到溢出状态恢复为止。不过,当直接从图像传感器读取图像数据时,“直播”数据通常不能被停止,因为图像传感器通常正在实时获得图像数据。例如,图像传感器(例如,90)可按照基于它自己的内部时钟的定时信号工作,并且可被配置成以一定的帧速率,比如15或30帧/秒(fps),输出图像帧。从而,到ISP电路32和存储器108的传感器输入可包括在输入的图像数据被处理(由ISP电路32处理),或者被写入存储器(例如108)中之前,缓存输入的图像数据的输入队列。因而,如果在输入队列接收图像数据的速度比从队列读出并处理或保存图像数据(例如,写入存储器的图像数据)的速度更快,那么会出现溢出状态。即,如果缓冲器/队列已满,那么不能缓存另外的进入像素,从而取决于实现的溢出处理技术,所述另外的进入像素可能被丢弃。
图39表示ISP处理电路32的方框图,并且专注于可按照一个实施例提供溢出处理的控制逻辑器84的特征。如图所示,与Sensor090a和Sensor1 90b相关的图像数据可从存储器(分别利用接口174和176)被读入ISP前端处理逻辑器80(FEProc)中,或者可直接从相应的传感器接口被提供给ISP前端处理逻辑器80。在后一情况下,在被发送给ISP前端处理逻辑器80之前,来自图像传感器90a和90b的进入像素数据可分别被传送给输入队列400和402。
当出现溢出状态时,其中出现溢出的处理块(例如,块80、82或120)或存储器(例如,108)可提供设定中断请求(IRQ)寄存器404中的一个比特的信号(如信号405、407和408所示)。在本实施例中,IRQ寄存器404可被实现成控制逻辑器84的一部分。另外,可为Sensor0图像数据和Sensor1图像数据分别实现独立的IRQ寄存器404。根据保存在IRQ寄存器404中的值,控制逻辑器84能够确定ISP处理块80、82、120或存储器108内的哪些逻辑器单元产生溢出状态。所述逻辑器单元可被称为“目的地单元”,因为它们可构成像素数据被发往的目的地。根据溢出状态,控制逻辑器84还可(例如,通过固件/软件处理)控制丢弃哪些帧(例如,或者不被写入存储器,或者不被输出给显示器以供查看)。
一旦检测到溢出状态,执行溢出处理的方式可取决于ISP前端是在从存储器108,还是从图像传感器输入队列(例如,缓冲器)400、402读取像素数据,在一个实施例中,所述图像传感器输入队列可以是先入先出(FIFO)队列。在一个实施例中,当通过例如相关的DMA接口(例如,174或176),从存储器108读取输入像素数据时,如果作为(例如,借助利用IRQ寄存器404的控制逻辑器84)从任意下游目的地块检测到溢出状态的结果,ISP前端接收到背压,那么ISP前端将停止像素数据的读取,所述下游目的地块可包括ISP管线82、ISP后端处理逻辑器120或者存储器108(在ISP前端逻辑器80的输出被写入存储器108的情况下)。在这种情况下,控制逻辑器84可通过在溢出状态恢复之前停止从存储器108读取像素数据,来防止溢出。例如,当导致溢出状态的下游单元在IRQ寄存器404中设定指示不再发生溢出的对应比特时,可用信号通知溢出恢复。图40的方法410的步骤412-420大致图解说明了该处理的一个实施例。
尽管通常可在传感器输入队列监视溢出状态,不过应明白在ISP子系统32的处理单元(例如,包括IPS前端逻辑器80、ISP管线82以及ISP后端逻辑器120的内部单元)之间可存在许多另外的队列。另外,ISP子系统32的各个内部单元也可包括线缓冲器,所述线缓冲器也可起队列的作用。从而,ISP子系统32的所有队列和线缓冲器可提供缓存。因而,当特定的处理块的链中的最后一个处理块已满(例如,其线缓冲器和任何中间队列已满)时,可对在前(例如上游)的处理块等施加背压,以致背压通过逻辑器链向上传播,直到其到达溢出状态可受到监视的传感器接口为止。从而,当在传感器接口出现溢出时,可能意味所有下游队列和线缓冲器都已满。
如图40中所示,方法410开始于方框412,在方框412,把当前帧的像素数据从存储器读取到ISP前端处理逻辑器80。判决逻辑器414随后确定是否存在溢出状态。如上所述,这可通过确定IRQ寄存器404中的比特的状态来评估。如果未检测到溢出状态,那么方法410返回步骤412,继续读取当前帧的像素。如果判决逻辑器414检测到溢出状态,那么方法410停止从存储器读取当前帧的像素,如方框416所示。随后,在判决逻辑器418,确定溢出状态是否已恢复。如果溢出状态仍然持续,那么方法410在判决逻辑器418等待,直到溢出状态恢复为止。如果判决逻辑器418指示溢出状态已恢复,那么方法410进入方框420,并且重新开始从存储装置读取当前帧的像素数据。
当在从传感器接口读入输入像素数据的时候,出现了溢出状态,那么中断可指示哪个下游单元(例如,处理块或目的地存储器)产生溢出。在一个实施例中,可根据两种情形提供溢出处理。在第一种情形下,溢出状态出现在图像帧期间,不过在下一个图像帧开始之前恢复。在这种情况下,在溢出状态恢复,并且在对应于图像传感器的输入队列中存在可用空间之前,来自图像传感器的输入像素被丢弃。控制逻辑器84可提供可保持跟踪丢弃的像素和/或丢弃的帧的数目的计数器406。当溢出状态恢复时,可用未定义的像素值(例如,全1(例如,14比特像素值的11111111111111),全0,或者编程写入数据寄存器的设定未定义像素值是什么的数值)替换丢弃的像素,从而下游处理可重新开始。在另一个实施例中,可用以前的未溢出像素(例如,读入输入缓冲器中的最后一个“良好”像素)替换丢弃的像素。这确保把数目正确的像素(例如,与一个完整帧中的预期像素数对应的多个像素)发给ISP前端处理逻辑器80,从而使ISP前端处理逻辑器80能够输出当发生溢出时,正从传感器输入队列读入的帧的数目正确的像素。
尽管在所述第一种情形下,ISP前端可输出数目正确的像素,不过取决于在溢出状态下丢弃和替换的像素的数目,可被实现成控制逻辑器84的一部分的软件处理(例如,固件)可选择丢弃(例如,排除)该图像帧,以免将其发送给显示器和/或写入存储器中。这样的确定可基于例如丢弃像素计数器406的值与可接受的丢弃像素阈值的比较。例如,如果在该帧期间仅仅简短地出现溢出状态,以致只有相当少量的像素被丢弃(例如,并且用未定义值或者虚值代替;例如10~20个像素以下),那么控制逻辑器84可选择显示和/或保存该图像,而不管所述少量的丢弃像素,即使替换像素的存在只极短暂地表现为最终图像中轻微伪像。不过,由于替换像素的数目较少,这样的伪像通常可能不会被用户注意到,或者少量地察觉到。即,由于短暂溢出状态的未定义像素引起的任何这种伪像的存在不会显著降低图像的美感质量(例如,对人眼来说,任何这样的降低极其轻微,或者可以忽略)。
在第二种情形下,溢出状态可能保持到下一图像帧的开始。在这种情况下,类似于上面说明的第一种情形,当前帧的像素也被丢弃和计数。不过,如果当检测到VSYNC上升沿(例如,指示下一帧的开始)时,溢出状态仍然存在,那么ISP前端处理逻辑器80可被配置成阻拦下一帧,从而丢弃整个下一帧。在这种情形下,在溢出恢复之前,下一帧和后续各帧将继续被丢弃。一旦溢出恢复,先前的当前帧(例如,当最初检测到溢出时正在读取的帧)可用未定义的像素值替换它的丢弃像素,从而允许ISP前端逻辑器80输出该帧的数目正确的像素。之后,可重新开始下游处理。至于丢弃的各帧,控制逻辑器84还可包括计算丢弃的各帧的数目的计数器。该数据可被用于调整用于音频-视频同步的定时。例如,对以30fps的帧速率捕捉的视频来说,每帧的持续时间约33毫秒。从而,如果由于溢出,丢弃了3帧,那么控制逻辑器84可被配置成调整音频-视频同步参数,以考虑可归因于丢弃的帧的约99毫秒(33毫秒×3帧)持续时间。例如,为了补偿可归因于丢弃的帧的时间,控制逻辑器84可通过重复一个或多个在先帧来控制图像输出。
图41中图解说明表示可能在从传感器接口读取像素数据时发生的上述情形的处理430的实施例。如图所示,方法430始于方框432,在方框432,当前帧的像素数据从传感器被读入ISP前端处理逻辑器80中。判决逻辑器434随后确定是否存在溢出状态。如果不存在溢出,那么方法430继续读入当前帧的像素(例如,返回方框432)。如果判决逻辑器434确定存在溢出状态,那么方法430继续到方框436,在方框436,丢弃当前帧的下一个进入像素。随后,判决逻辑器438确定是否当前帧已结束,并且下一帧已开始。例如,在一个实施例中,这可包括检测VSYNC信号中的上升沿。如果传感器仍在发送当前帧,那么方法430继续到判决逻辑器440,判决逻辑器440确定最初在逻辑器434检测到的溢出状态是否仍然存在。如果溢出状态还没有恢复,那么方法430前进到方框442,在方框442,丢弃像素计数器被递增(例如,以考虑在方框436丢弃的进入像素)。方法随后返回方框436,并继续执行。
如果在判决逻辑器438,检测到当前帧已结束,并且传感器在发送下一帧(例如,VSYNC上升沿),那么方法430前进到方框450,并且只要溢出状态仍然存在(例如,由判决方框452表示),就丢弃下一帧的所有像素,以及后续各帧。如上所述,独立的计数器可跟踪丢弃各帧的数目,所述数目可用于调整音频-视频同步参数。如果判决逻辑器452指示溢出状态已恢复,那么首先出现溢出状态的初始帧的丢弃像素被与所述初始帧的丢弃像素的数目(由丢弃像素计数器指示)对应的多个未定义像素值替换。如上所述,未定义像素值可以是全1、全0、编程写入数据寄存器中的替换值,或者可以取在溢出状态之前读取的在前像素(例如,在检测到溢出状态之前读取的最后一个像素)的值。因而,这允许用数目正确的像素处理所述初始帧,在方框446,可继续下游图像处理,所述下游图像处理包括把所述初始帧写入存储器中。另外如上所述,取决于在帧中丢弃的像素的数目,当输出视频数据时,控制逻辑器84可以选择排除或包含该帧(例如,如果丢弃像素的数目大于或小于可接受的丢弃像素阈值)。应理解,可对ISP子系统32的每个输入队列400和402分别进行溢出处理。
利用描述方法460的流程图,图42中表示了可按照本公开实现的溢出处理的另一个实施例。这里,按照和图41中所示相同的方式,处理关于在当前帧期间发生,但是在当前帧结束之前恢复的溢出状态的溢出处理,于是,这些步骤用相同的附图标记432-446编号。图42的方法460和图41的方法430之间的差异在于当溢出状态延续到下一帧时的溢出处理。例如,参见判决逻辑器438,当溢出状态延续到下一帧时,不是像在图41的方法430中那样丢弃下一帧,相反方法460实现方框462,其中,丢弃像素计数器被清零,传感器输入队列被清零,并且用信号通知控制逻辑器84丢弃部分当前帧。通过清除传感器输入队列和丢弃像素计数器,方法460准备获得下一帧(该下一帧现在变成当前帧),方法返回方框432。可以理解,该当前帧的像素可被读入传感器输入队列。如果在输入队列变满之前,溢出状态恢复,那么下游处理重新开始。不过,如果溢出状态持续,那么方法460将从方框436继续进行(例如,开始丢弃像素,直到溢出恢复或者开始下一帧为止)。
如上所述,电子设备10还可与图像数据(例如,借助具有图像传感器90的成像设备30)同时地提供音频数据的捕捉(例如,借助作为输入结构14之一设置的音频捕捉设备)。例如,如图43中示意所示,音频数据470和图像数据472可代表用电子设备同时捕捉的视频数据和音频数据。音频数据470可包括在时间(t)内捕捉的音频样本474,类似地,图像数据472可代表在时间t内捕捉的一系列图像帧。图像数据472的每一帧476可代表静止图像帧。从而,当按时间顺序连续查看静止图像帧时(例如,特定帧数/秒,比如15~30帧/秒),观看者将感觉出现运动图像的外观,从而提供视频数据。当获得音频数据470,并将其表示成数字数据时,它可按相等的时间间隔被保存为表示音频信号的振幅的样本(例如474)的二进制值。此外,尽管在图43中被表示成具有不连续的部分474,不过应理解,在实际的实现中,音频数据可具有足够大的采样速率,以致人耳把音频数据470感觉成连续声音。
在视频数据472的重放期间,对应的音频数据470也可以被重放,从而使观看者不仅观看捕捉的事件的视频数据,而且还听到与捕捉的事件对应的声音。理想地,视频数据472和音频数据470是同步重放的。例如,如果音频样本474a最初出现在时间tA,那么在理想的重放条件下,最初在时间tA捕捉的图像帧与音频样本474a同步输出。不过,如果未实现同步,那么观众/听众可注意到音频数据和视频数据之间的时延或偏移。例如,假定音频样本474a与最初在时间t0(在时间上早于时间tA)捕捉的图像帧476c一起被输出。在这种情况下,音频数据470在视频数据472“之前”,并且用户可感受到听到在时间tA的音频样本和看到其预期的对应视频样本(在时间tA的图像帧476a)之间的延迟,所述延迟是时间tA和t0之间的差值。类似地,假定音频样本474a和在时间tB(在时间上晚于时间tA)的图像帧476b一起被输出。那么在后面这种情况下,音频数据470在视频数据472“之后”,并且用户可感受到看到在时间tA的视频样本(476a)和听到其在时间tA的对应音频样本之间的延迟,所述延迟是时间tA和tB之间差值。这种种类的延迟有时被称为“对口型”误差。可以理解,后面的两种情形可不利地影响用户的感受。为了实现音频-视频同步,系统通常被配置成使得,例如,如果存在同步问题,那么关于同步问题的任何补偿优先于视频考虑音频,图像帧可能被丢弃或重复,而不变更音频。
在一些常规系统中,利用起始帧中断(例如,根据VSYNC信号),进行音频数据和视频数据的同步。当发生这样的中断(指示新帧的开始)时,处理器可执行中断服务例程,以服务所述中断(例如,清除比特),与处理器服务于所述中断的时间对应的时间戳和该帧关联。可以理解,在中断请求和处理器服务所述中断的时间之间通常存在一定的延时。从而,与特定图像帧关联的时间戳可以反映所述延时,从而实际上可并不代表所述图像帧实际开始的精确时间。另外,所述延时可随处理器负载和带宽而变化,这可以进一步使音频-视频同步问题复杂化。
如上所述,ISP前端逻辑器80可在它自己的时钟域内工作,并向传感器接口94提供异步接口,以支持大小不同并且具有不同的定时要求的传感器。为了提供音频数据和视频数据的同步,ISP处理电路32可利用ISP前端时钟提供可用于生成可与捕捉的图像帧关联的时间戳的计数器。例如,参见图44,在一个实施例中,都可以被用于提供时间戳的四个寄存器(包括定时器配置寄存器490、时间码寄存器492、Sensor0时间码寄存器494和Sensor1时间码寄存器496)至少部分根据ISP前端处理逻辑器80的时钟工作。在一个实施例中,寄存器490、492、494和496可包括32位寄存器。
定时器配置寄存器490可被配置成提供值NC1k,值NC1k可被用于提供生成时间戳代码的计数。在一个实施例中,NC1k可以是0~15的4比特值。根据NC1k,每2^NClk时钟周期(基于ISP前端时钟域),指示当前时间码的定时器或计数器的值可被加1。当前时间码可被保存在时间码寄存器492中,从而提供具有32比特分辨率的时间码。时间码寄存器492也可由控制逻辑器84重置。
简要地参见图10,对于每个传感器接口输入Sif0和Sif1,当在垂直同步(VSYNC)信号上检测到上升沿(或者如果检测到下降沿,这取决于VSYNC是如何配置的)时,时间码寄存器492可被采样,从而指示新帧的开始(例如,在垂直消隐间隔结束时)。对应于VSYNC上升沿的时间码可被保存在时间码寄存器494或496中,取决于提供图像帧的传感器(Sensor0或Sensor1),从而提供指示开始当前帧的捕捉的时间的时间戳。在一些实施例中,来自传感器的VSYNC信号可具有经编程的或可编程的延迟。例如,如果帧的第一个像素被延迟n个时钟周期,那么控制逻辑器84可被配置成补偿所述延迟,比如通过在硬件中设置偏移量,或者利用软件/固件补偿。从而,可根据添加了经编程的延迟的VSYNC上升沿,生成时间戳。在另一个实施例中,可利用带有可编程的延迟的VSYNC信号的下降沿,确定与帧的开始对应的时间戳。
在处理当前帧时,控制逻辑器84从传感器时间码寄存器(494或496)读取时间戳,该时间戳可以与视频图像帧相关联,作为与该图像帧关联的元数据中的一个参数。这更清楚地示于图45中,图45提供图像帧476及其相关元数据498的图示,元数据498包括从适当的时间码寄存器(例如,用于Sensor0的寄存器494或用于Sensor1的寄存器496)读取的时间戳500。在一个实施例中,当被起始帧中断触发时,控制逻辑器84随后可从时间码寄存器读取时间戳。从而,ISP处理电路32捕捉的每个图像帧可具有基于VSYNC信号的相关时间戳。可实现成ISP控制逻辑器84的一部分或者电子设备10的独立控制单元的一部分的控制电路或固件可利用图像帧时间戳对准或同步对应的一组音频数据,从而实现音频-视频同步。
在一些实施例中,设备10可包括被配置成负责音频数据(例如,音频数据470)的处理的音频处理器。例如,音频处理器可以是独立的处理单元(例如,处理器16的一部分),或者可以与主处理器集成,或者可以是片上系统处理设备的一部分。在这样的实施例中,音频处理器和可由独立于音频处理器的处理器(例如,控制逻辑器84的一部分)控制的图像处理电路32可根据独立的时钟工作。例如,时钟可以利用单独的锁相环(PLL)生成。从而,对音频-视频同步来说,设备10可需要能够使图像时间戳与音频时间戳相关联。在一个实施例中,这种关联可用设备10的主处理器(例如,CPU)实现。例如,主处理器可以使它自己的时钟与音频处理器的时钟和ISP电路32的时钟同步,以确定音频处理器的时钟和ISP电路32的时钟之间的差异。一旦已知,所述差异就可用于使音频数据(例如,470)的时间戳和图像数据(例如,472)的图像帧时间戳关联。
在一个实施例中,控制逻辑器84还可被配置成处理回绕状态,比如当达到32比特时间码的最大值,并且其中新的增量需要额外一个比特(例如,33比特),以便提供精确的值时。提供一个简化的例子,当由于局限于4个数位,值9999递增,结果变成0000而不是10000时,在4位计数器上会出现这种回绕。尽管控制逻辑器84能够重置时间码寄存器492,不过当在仍在捕捉视频会话的同时出现回绕状态时,重置时间码寄存器492并不可取。从而,在这种情况下,控制逻辑器84可以包括被配置成通过根据32比特寄存器值,生成精度更高的时间戳(例如,64比特),处理回绕状态的逻辑器,在一个实施例中,所述逻辑器可用软件实现。所述软件可生成精度更高的时间戳,所述时间戳可被写入图像帧元数据中,直到时间码寄存器492被重置为止。在一个实施例中,软件可被配置成检测回绕,并把由回绕产生的时间差增加到分辨率更高的计数器中。例如,在一个实施例中,当对于32比特计数器检测到回绕状态时,软件可计算32比特计数器的最大值(以考虑到回绕)和32比特计数器指示的当前时间值的和,并把结果保存在分辨率更高的计数器(例如,大于32比特)中。在这种情况下,高分辨率计数器中的结果可被写入图像元数据信息中,直到32比特计数器被重置为止。
图46描述概述上面讨论的音频-视频同步技术的方法510。如图所示,方法510始于步骤512,在步骤512,从图像传感器(例如,Sensor0或Sensor1)接收像素数据。之后,在判决逻辑器514,确定VSYNC信号是否指示新帧的开始。如果未检测到新帧,那么方法510返回步骤512,继续接收当前图像帧的像素数据。如果在判决逻辑器514检测到新帧,那么方法510继续到步骤516,在步骤516,时间码寄存器(例如,寄存器492)被采样,从而获得与在步骤514检测到的VSYNC信号的上升(或下降)沿对应的时间戳值。随后,在步骤518,时间戳值被保存到与提供输入像素数据的图像传感器对应的时间码寄存器(例如,寄存器494或496)。随后,在步骤520,使时间戳与新的图像帧的元数据关联,之后,图像帧元数据中的时间戳信息可用于音频-视频同步。例如,电子设备10可被配置成通过按照使对应音频输出和视频输出之间的任何延迟大大最小化的方式,使视频数据(利用每个单独帧的时间戳)与对应音频数据对准,提供音频-视频同步。例如,如上所述,可利用设备10的主处理器确定如何关联音频时间戳和视频时间戳。在一个实施例中,如果音频数据在视频数据之前,那么可丢弃图像帧,以允许正确的图像帧“追上”音频数据流,并且如果音频数据在视频数据之后,那么可重复图像帧,以允许音频数据“追上”视频流。
转到图47~50,ISP处理逻辑器或子系统32还可被配置成提供闪光(也称为“频闪”)同步。例如,当利用闪光模块时,可临时提供人工照明,以帮助照明图像场景。例如,当在低照明状态下捕捉图像场景时,闪光的使用是有益的。可利用任何适当的光源,比如LED闪光设备或氙闪光设备等,提供闪光或频闪。
在本实施例中,ISP系统32可包括闪光控制器,闪光控制器被配置成控制闪光模块激活的定时和/或时间间隔。可以理解,通常可取的是控制闪光模块激活的定时和持续时间,以致闪光间隔在捕捉目标帧(例如,待捕捉的图像帧)的第一个像素之前开始,并在捕捉目标帧的最后一个像素之后但在开始下一个连续图像帧之前结束。这有助于在捕获图像场景的同时确保目标帧内的所有像素暴露在相似的照明条件下。
参见图47,按照本公开的一个实施例,图解说明表示实现成ISP子系统32的一部分,并被配置成控制闪光模块552的闪光控制器的方框图。在一些实施例中,闪光模块552可以包括不止一个频闪设备。例如,在一些实施例中,闪光控制器550可被配置成提供预闪光(例如,用于红眼消除),之后提供主闪光。预闪光事件和主闪光事件可以是顺序的,并且可利用相同或不同的频闪设备提供。
在图解说明的实施例中,可根据从图像传感器90a和90b提供的定时信息,控制闪光模块552的定时。例如,可利用卷帘式快门技术,控制图像传感器的定时,从而利用扫描图像传感器(例如,90a和90b)的像素阵列的狭缝孔径,控制积分时间。使用利用可经传感器接口94a和94b(可分别包括传感器侧接口548和前端侧接口549)提供给ISP子系统32的传感器定时信息(这里用附图标记556表示),控制逻辑器84可把适当的控制参数554提供给闪光控制器550,闪光控制器550随后利用控制参数554启用闪光模块552。如上所述,通过利用传感器定时信息556,闪光控制器556可确保闪光模块在捕捉目标帧的第一个像素之前被启用,并持续在目标帧的持续时间保持启用状态,同时闪光模块在捕捉目标帧的最后一个像素之后,且在下一图像帧开始(例如VSYNC上升沿)之前被停用。这种处理可被称为“闪光同步”或“频闪同步”技术,将在下面进一步讨论。
另外,如图47的实施例中所示,控制逻辑器84还可以利用来自ISP前端80的统计数据558确定对应于目标帧的图像场景中的当前照明条件是否适合于使用闪光模块。例如,ISP子系统32可利用自动曝光,以试图通过调整积分时间和/或传感器增益,保持目标曝光水平(例如,光级)。不过可以理解,积分时间不能长于帧时间。例如,对以30fps获得的视频数据来说,每帧的持续时间约为33毫秒。从而,如果利用最大积分时间不能达到目标曝光水平,那么还可应用传感器增益。不过,如果积分时间和传感器增益两者的调整都不能实现目标曝光(例如,如果光级小于目标阈值),那么闪光控制器可被配置成启用闪光模块。此外,在一个实施例中,还可限制积分时间,以避免运动模糊。例如,尽管积分时间可被延长高达帧的持续时间,不过在一些实施例中可进一步限制积分时间,以避免运动模糊。
如上所述,为了确保闪光的启用在目标帧的整个持续时间照明目标帧(例如,在目标帧的第一个像素之前开启闪光,并在目标帧的最后一个像素之后关闭闪光),ISP子系统32可利用传感器定时信息556确定何时启用/停用闪光552。
图48图形表示来自图像传感器90的传感器定时信号如何用于控制闪光同步。例如,图48表示可由图像传感器90a或90b之一提供的图像传感器定时信号556的一部分。信号556的逻辑器高电平部分代表帧间隔。例如,第一帧(FRAME N)用附图标记570表示,第二帧(FRAME N+1)用附图标记572表示。第一帧570开始的实际时间用在时间tVSYNC_ra0(例如,“r”指示上升沿,“a”指示定时信号556的“实际”方面)的信号556的上升沿指示,第一帧570结束的实际时间用在时间tVSYNC_fa0(例如,“f”指示下降沿)的信号556的下降沿指示。类似地,第二帧572开始的实际时间用在时间tVSYNC_ra1的信号556的上升沿指示,第二帧572结束的实际时间用在时间tVSYNC_fa1的信号556的下降沿指示。第一帧和第二帧之间的间隔574可被称为消隐间隔(例如,垂直消隐),所述消隐间隔可允许图像处理电路(例如,ISP子系统32)识别图像帧何时结束和开始。应理解,图48中所示的帧间隔和垂直消隐间隔不一定必须是按比例绘制的。
如图48中所示,信号556可代表从图像传感器90观点看的实际定时。即,信号556代表图像传感器实际获得帧的定时。不过,当传感器定时信息被提供给图像处理系统32的下游组件时,在传感器定时信号中可引入延迟。例如,信号576代表从传感器90和ISP前端处理逻辑器80之间的接口逻辑器94的传感器侧接口548的观点看的延迟定时信号(被延迟第一时延578)。信号580可代表从前端侧接口549的观点看的延迟的传感器定时信号,该信号在图48中被表示成相对于传感器侧接口定时信号572被延迟第二时延582,相对于初始传感器定时信号556被延迟第三时延584,第三时延584等于第一时延578和第二时延582之和。随后,当来自接口94的前端侧549的信号580被提供给ISP前端处理逻辑器80(FEProc)时,可以施加另外的延迟,以致从ISP前端处理逻辑器80的观点看到延迟信号588。具体地说,这里,ISP前端处理逻辑器80看到的信号588被表示成相对于延迟信号580(前端侧定时信号)延迟第四时延590,相对于初始传感器定时信号556延迟第五时延592,第五时延592等于第一时延578、第二时延582和第四时延590之和。
为了控制闪光定时,闪光控制器550可利用ISP前端可获得的第一信号,于是,所述第一信号相对于实际的传感器定时信号556被偏移最小时延量。从而,在本实施例中,闪光控制器550可根据从传感器与ISP接口94的前端侧549的观点看的传感器定时信号580,确定闪光定时参数。从而,本例中的闪光控制器550使用的信号596可以与信号580相同。如图所示,延迟的信号596(相对于信号556被延迟了时延584)包括位于和第一帧570相关的时间tVSYNC_rd0和tVSYNC_fd0之间的帧间隔(例如,“d”表示“延迟”),和位于和第二帧572相关的时间tVSYNC_rd1和tVSYNC_fd1之间的帧间隔。如上所述,通常可取的是在帧开始之前启用闪光,并保持帧的持续时间(例如,在帧的最后一个像素之后停用闪光),以确保对于整个帧照明图像场景,以及考虑到在启用期间,闪光为了达到满强度而需要的任何预热时间(数量级可以为微秒(例如100~800微秒)到几毫秒(例如,1~5毫秒))。不过,由于由闪光控制器550分析的信号596相对于实际定时信号556被延迟,因此当确定闪光定时参数时,要考虑到该延迟。
例如,假定闪光将被启用以照明第二帧572的图像场景,在tVSYNC_rd1的延迟的上升沿出现于在tVSYNC_ra1的实际上升沿之后。从而,闪光控制器550难以使用延迟的上升沿tVSYNC_rd1来确定闪光启用开始时间,因为在第二帧572已开始之后(例如,在信号556的tVSYNC_ra1之后),延迟的上升沿tVSYNC_rd1才出现。在本实施例中,闪光控制器550可改为根据前一帧的结束(这里,在时间tVSYNC_fd0的下降沿),确定闪光启用开始时间。例如,闪光控制器550可以相加时间间隔600(它代表垂直消隐间隔574)和时间tVSYNC_fd0,以计算与帧572的延迟的上升沿时间tVSYNC_rd1对应的时间。可以理解,延迟的上升沿时间tVSYNC_rd1出现在实际的上升沿时间tVSYNC_ra1(信号556)之后,于是,从时间tVSYNC_fd0和消隐间隔时间600之和中减去与信号580的时延584对应的时间偏移598(OFFSet1)。这产生与在时间tVSYNC_ra1的第二帧572的开始同步开始的闪光启用开始时间。不过,如上所述,取决于提供的闪光设备的种类(例如,氙闪光、LED等),闪光模块552可能经历在启用闪光模块时和闪光设备达到其满发光度之间的预热时间。预热时间量可以取决于使用的闪光设备的种类(例如,氙闪光设备,LED闪光设备等)。从而,为了考虑这样的预热时间,可从在时间tVSYNC_ra1的第二帧572的开始减去可编程或预设(例如,利用控制寄存器)的另一偏移量602(OffSet2)。这使闪光启用开始时间退回到时间604,从而确保闪光在图像传感器获得的帧572的开始之前被启用(如果为了照明场景而需要闪光的话)。可利用下面的公式表示确定闪光启用时间的该过程:
tflash_start_frame1=tVSYNC_fd0+tvert_blank_int-tOffSet1-tOffSet2
在图解说明的实施例中,可在闪光控制器信号596的时间tVSYNC_fd1发生闪光的停用,只要时间tVSYNC_fd1出现在在帧572之后的帧(例如,FRAME N+2,图48中未示出)开始之前,如在传感器定时信号556上的时间605所示。在其它实施例中,可以在位于信号596的时间tVSYNC_fd1之后,但是在下一帧开始之前(例如,传感器定时信号556上的指示FRAME N+2的开始的后续VSYNC上升沿之前)的时间,发生闪光的停用,或者可在紧接着时间tVSYNC_fd1之前的间隔608内发生闪光的停用,其中间隔608小于OffSet1(598)的量。可以理解,这确保闪光持续目标帧(例如,帧572)的整个持续时间处于开启状态。
图49按照图48中所示的实施例,描述在电子设备10上确定闪光启用开始时间的处理618。从方框620开始,获得来自图像传感器的传感器定时信号(例如,556),并将其提供给闪光控制逻辑器(例如,闪光控制器550),闪光控制逻辑器可以是电子设备10的图像信号处理子系统(例如,32)的一部分。传感器定时信号被提供给闪光控制逻辑器,不过相对于原始定时信号(例如,556)被延迟。在方框622,确定传感器定时信号和延迟的传感器定时信号(例如,596)之间的延迟(例如,延迟584)。随后,在方框624识别请求闪光照明的目标帧(例如,帧572)。为了确定闪光模块(例如552)应被启用,以确保在目标帧开始之前闪光被激活的时间,处理618随后前进至方框626,在方框626,确定如延迟的定时信号指示的,与在目标帧之前的帧的结束对应的第一时间(例如,时间tVSYNC_fd0)。之后,在方框628,确定帧之间的消隐间隔的长度,并将其加入在方框626确定的第一时间中,以确定第二时间。随后,从第二时间中减去在方框622确定的延迟,如在方框630所示,以确定第三时间。如上所述,这按照非延迟传感器定时信号,把闪光启用时间设定成与目标帧的实际开始同时发生。
为了确保在目标帧开始之前,闪光是激活的,从第三时间中减去偏移量(例如,602,Offset2),如在方框632所示,以确定期望的闪光启用时间。可以理解,在一些实施例中,方框632的偏移量不仅可以确保闪光在目标帧之前处于开启状态,而且还可以补偿闪光灯从最初被启用到达到满发光度所需的任何预热时间。在方框634,在方框632确定的闪光开始时间启用闪光552。如上所述和在方框636中所示,闪光在目标帧的整个持续时间内保持开启状态,并且可在目标帧结束之后被停用,以致目标帧中的所有像素经历相似的照明条件。尽管上面在图48和49中说明的实施例讨论了利用单个闪光的闪光同步技术的应用,不过应进一步理解这些闪光同步技术也可应用于具有两个以上闪光设备(例如,两个LED闪光灯)的设备的实施例。例如,如果利用不止一个闪光模块,那么可把上面的技术应用于两个闪光模块,以致每个闪光模块在帧开始之前被闪光控制器启用,并在该帧的持续时间内保持开启状态(例如,不一定必须对多个相同的帧启用多个闪光模块)。
当利用设备10获得图像时,可以应用这里描述的闪光定时技术。例如,在一个实施例中,在图像获取期间可以使用预闪光技术。例如,当在设备10上激活照相机或图像获取应用时,所述应用可按照“预览”模式工作。在预览模式下,图像传感器(例如,90)可能正在获得可由设备10的ISP子系统32处理的图像数据的多个帧以供预览(例如,显示在显示器28上),尽管在用户发出拍摄请求,以使设备10进入“捕捉”模式之前,所述各帧实际上可以未被捕捉或保存。例如,这可通过用户启动设备10上的物理捕获按钮或者软捕获按钮来实现,所述软捕获按钮可借助软件实现成图形用户界面的一部分,并显示在设备10的显示器上,并且可对用户界面输入(例如,触摸屏输入)作出响应。
由于在预览模式期间闪光一般并不处于激活状态,因此在一些情况下,相对于未用闪光照明的相同图像场景,突然启用闪光和利用闪光照明图像场景会显著改变特定场景的某些图像统计信息,比如与自动白平衡统计信息等相关的图像统计信息。从而,为了改善用于处理所需目标帧的统计信息,在一个实施例中,预闪光操作技术可包括接收捕获请求闪光照明的图像帧的用户请求,在设备10仍然处于预览模式的时候,在第一时间利用闪光照明第一帧,并在下一帧开始之前更新统计信息(例如,自动白平衡统计信息)。设备10可以进入捕获模式,并在启用闪光的情况下,利用更新的统计信息捕捉下一帧,从而提供改善的图像/颜色准确性。
图50描述更详细地图解说明这种处理640的流程图。处理640始于方框642,在方框642,接收利用闪光拍摄图像的请求。在方框644,在设备10仍然处于预览模式的时候,启用闪光(例如,可利用图48和49中所示的技术对闪光定时),以照明第一帧。随后,在方框646,根据从被照明的第一帧获得的统计信息,更新图像统计信息,比如自动白平衡统计信息。之后,在方框648,设备10可以进入捕获模式,并利用在方框646更新的图像统计信息获得下一帧。例如,更新的图像统计信息可用于确定可被固件(例如,控制逻辑器84)用于对ISP管线82编程的白平衡增益和/或颜色校正矩阵(CCM)。从而,利用根据在方框646更新的图像统计信息确定的一个或多个参数,ISP管线82可以处理在方框648获得的帧(例如,下一帧)。
在另一个实施例中,当用闪光捕捉图像帧时,可以应用无闪光图像场景(例如,在没有闪光的情况下获得或预览的图像场景)的颜色性质。可以理解,相对于利用闪光照明的图像场景,无闪光的图像场景通常表现出更好的颜色性质。不过,相对于无闪光的图像,闪光的使用可以降低噪声和提高亮度(例如,在低照明条件下)。不过,闪光的使用也可以导致相对于相同场景的无闪光图像,闪光图像中的某些颜色显得稍微褪色。从而,在一个实施例中,为了保持闪光图像的噪声低和明亮的益处,同时还部分保持无闪光图像的一些颜色性质,设备10可被配置成分析无闪光的第一帧,以获得其颜色性质。随后,设备10可利用闪光捕捉第二帧,并利用无闪光图像的颜色性质,对闪光图像应用调色板转移技术。
在一些实施例中,被配置成实现上述任意闪光/频闪技术的设备10可以是可从苹果公司获得的某种型号的具有一体成像设备或者外部成像设备的或计算设备。此外,成像/照相机应用可以是也可从苹果公司获得的某种版本的 或应用。
继续参见图51,图中按照本发明技术的一个实施例,图解说明(前面在图10中讨论的)ISP前端像素处理逻辑器150的更详细示图。如图所示,ISP前端像素处理逻辑器150包括时域滤波器650和箱化补偿滤波器652。时域滤波器650可以接收输入图像信号Sif0、Sif1、FEProcIn,或者预处理图像信号(例如,180,184)之一,并可以在进行任何另外的处理之前,对原始图像数据进行操作。例如,时域滤波器650可初始处理图像数据,以通过沿时间方向平均图像帧来降低噪声。下面更详细讨论的箱化补偿滤波器652可对来自图像传感器(例如,90a,90b)的箱化的原始图像数据应用比例缩放和再采样,从而保持图像像素的均匀空间分布。
时域滤波器650可以根据运动和亮度特性是像素自适应的。例如,当像素运动较大时,可以降低滤波强度,以避免在最终的处理后的图像中出现“拖尾”或“伪像”,而当几乎未检测到运动时,可以增大滤波强度。另外,也可根据亮度数据(例如,“亮度”)调整滤波强度。例如,当图像亮度增大时,对人眼来说,滤波伪像会变得更显而易见。从而,当像素具有较高的亮度时,可进一步降低滤波强度。
在应用时域滤波时,时域滤波器650可以接收基准像素数据(Rin)和运动历史输入数据(Hin),它们可来自先前滤波的帧或者原始帧。利用这些参数,时域滤波器650可提供运动历史输出数据(Hout)和经滤波的像素输出(Yout)。经滤波的像素输出Yout随后被传给箱化补偿滤波器652,箱化补偿滤波器652可被配置成对经滤波的像素输出数据Yout进行一个或多个比例缩放操作,从而产生输出信号FEProcOut。处理后的像素数据FEProcOut随后可被转发给ISP管道处理逻辑器82,如上所述。
参见图52,图中按照第一实施例图解说明描述可由图51中所示的时域滤波器进行的时域滤波处理654的处理图。时域滤波器650可包括2抽头滤波器,其中,至少部分根据运动和亮度数据,每个像素地自适应调整滤波系数。例如,可以比较输入像素x(t)(其中变量“t”表示时间值)与先前经滤波的帧或者先前的初始帧中的基准像素r(t-1),从而生成运动历史表(M)655中的运动索引查寻,所述运动历史表(M)655可包含滤波系数。另外,根据运动历史输入数据h(t-1),可以确定与当前输入像素x(t)对应的运动历史输出h(t)。
运动历史输出h(t)和滤波系数K可根据运动增量(delta)d(j,i,t)确定,其中,(j,i)代表当前像素x(j,i,t)的空间位置坐标。通过确定相同颜色的3个水平并置像素的初始像素和基准像素之间的3个绝对增量的最大值,可计算运动增量d(j,i,t)。例如,简要参见图53,图中图解说明了与初始输入像素660、661和662对应的3个并置基准像素657、658和659的空间位置。在一个实施例中,可利用下面的公式,根据这些初始像素和基准像素,计算运动增量:
d(j,i,t)=max3[abs(x(j,i-2,t)-r(j,i-2,t-1)),
(abs(x(j,i,t)-r(j,i,t-1)), (1a)
(abs(x(j,i+2,t)-r(j,i+2,t-1))]
下面在图55中进一步图解说明描述确定运动增量值的这种技术的流程图。此外,应明白如上面在等式1a中(和下面在图55中)所示的计算运动增量值的技术仅仅用于提供确定运动增量值的一个实施例。
在其它实施例中,可以评估相同颜色的像素的阵列,以确定运动增量值。例如,除了等式1a中涉及的3个像素之外,确定运动增量值的一个实施例还可包括在基准像素660、661和662及其对应的并置像素上面两行(例如,j-2;假定Bayer模式),和在基准像素660、661和662及其对应的并置像素下面两行(例如,j+2;假定Bayer模式)的相同颜色的像素之间的绝对增量。例如,在一个实施例中,可如下表示运动增量值:
d(j,i,t)=max9[abs(x(j,i-2,t)-r(j,i-2,t-1)),
(abs(x(j,i,t)-r(j,i,t-1)),
(abs(x(j,i+2,t)-r(j,i+2,t-1)),
(abs(x(j-2,i-2,t)-r(j-2,i-2,t-1)),
(abs(x(j-2,i,t)-r(j-2,i,t-1)), (1b)
(abs(x(j-2,i+2,t)-r(j-2,i+2,t-1)),
(abs(x(j+2,i-2,t)-r(j+2,i-2,t-1))
(abs(x(j+2,i,t)-r(j+2,i,t-1)),
(abs(x(j+2,i+2,t)-r(j+2,i+2,t-1))]
从而,在用等式1b描述的实施例中,通过比较3×3阵列的相同颜色像素之间的绝对增量,可确定运动增量值,当前像素(661)位于所述3×3阵列的中心(例如,如果计数不同颜色的像素的话,那么对Bayer颜色模式来说,实际上是5×5阵列)。应理解,可以分析颜色相同的像素的任何适当2维阵列(例如,包括所有像素在相同行中的阵列(例如,等式1a),或者所有像素在相同列中的阵列)以确定运动增量值,当前像素(例如,661)位于阵列的中心。此外,尽管运动增量值可被确定为绝对增量的最大值(例如,如等式1a和1b中所示),不过在其它实施例中,运动增量值也可被选为绝对增量的平均值或中位值。另外,上述技术也可以应用于其它种类的色彩滤镜阵列(例如,RGBW、CYGM等),并不旨在专用于Bayer模式。
返回参见图52,一旦确定了运动增量值,通过计算当前像素(例如,在空间位置(j,i))的运动增量d(t)和运动历史输入h(t-1)之和,可以计算可用于从运动表(M)655选择滤波系数K的运动索引查寻。例如,可如下确定滤波系数K:
K=M[d(j,i,t)+h(j,i,t-1)] (2a)
另外,可利用下述公式,确定运动历史输出h(t):
h(j,i,t)=d(j,i,t)+(1-K)×h(j,i,t-1) (3a)
之后,当前输入像素x(t)的亮度可被用于生成亮度表(L)656中的亮度索引查寻。在一个实施例中,亮度表可包含在0和1之间,并且可根据亮度索引选择的衰减因数。如下面的公式中所示,通过把第一滤波系数K乘以亮度衰减因数,可以计算第二滤波系数K′:
K′=K×L[x(j,i,t)] (4a)
确定的K′的值随后可用作时域滤波器650的滤波系数。如上所述,时域滤波器650可以是2抽头滤波器。另外,时域滤波器650可被配置成利用前一滤波帧的无限脉冲响应(IIR)滤波器,或者被配置成利用先前的初始帧的有限脉冲响应(FIR)滤波器。时域滤波器650可利用下面的公式,用当前输入像素x(t)、基准像素r(t-1)和滤波系数K′,计算滤波后的输出像素y(t)(Yout):
y(j,i,t)=r(j,i,t-1)+K′(x(j,i,t)-r(j,i,t-1)) (5a)
如上所述,可逐个像素地进行图52中所示的时域滤波处理654。在一个实施例中,对于所有颜色分量(例如,R、G和B),可以使用相同的运动表M和亮度表L。另外,一些实施例可以设置旁路机构,其中,可以绕过时域滤波,比如响应来自控制逻辑器84的控制信号。此外,如下参考图57和58所述,时域滤波器650的一个实施例可以对图像数据的每个颜色分量使用单独的运动表和亮度表。
根据图54,可以更好地理解参考图52和53说明的时域滤波技术的实施例,图54是按照上述实施例,图解说明方法664的流程图。方法664始于步骤665,在步骤665,时域滤波系统654接收位于图像数据的当前帧的空间位置(j,i)的当前像素x(t)。在步骤666,至少部分根据图像数据的前一帧(例如,紧接在当前帧之前的图像帧)的一个或多个并置基准像素(例如,r(t-1)),确定当前像素x(t)的运动增量值d(t)。在步骤666确定运动增量值d(t)的技术在下面参考图55进一步说明,可按照如上所述的等式1a执行。
一旦获得了步骤666的运动增量值d(t),利用运动增量值d(t)和对应于前一帧的空间位置(j,i)的运动历史输入值h(t-1),可确定运动表查寻索引,如步骤667中所示。另外,尽管未示出,一旦已知运动增量值d(t),那么,例如,利用上面所示的等式3a,在步骤667也可确定对应于当前像素x(t)的运动历史值h(t)。之后,在步骤668,利用步骤667的运动表查寻索引,可从运动表655选择第一滤波系数K。如上所述,按照等式2a,可确定运动表查寻索引,并从运动表选择第一滤波系数K。
随后,在步骤669,可从亮度表656选择衰减因数。例如,亮度表656可包含大约在0和1之间的衰减因数,通过利用当前像素x(t)的值作为查寻索引,可从亮度表656选择衰减因数。一旦选择了衰减因数,利用选择的衰减因数和第一滤波系数K(来自步骤668),就可在步骤670确定第二滤波系数K′,如上面的等式4a中所示。随后,在步骤671,根据第二滤波系数K′(来自步骤669)、并置的基准像素r(t-1)的值和输入像素x(t)的值,确定对应于当前输入像素x(t)的时域滤波输出值y(t)。例如,在一个实施例中,如上所述,按照公式5a,可确定输出值y(t)。
参见图55,按照一个实施例,更详细地图解说明方法664的确定运动增量值d(t)的步骤666。具体地,运动增量值d(t)的确定通常可对应于上面说明的按照公式1a的运算。如图所示,步骤666可包括子步骤672-675。从子步骤672开始,识别颜色值和当前输入像素x(t)相同的一组3个水平相邻的像素。例如,按照图53中所示的实施例,图像数据可包括Bayer图像数据,并且3个水平相邻的像素可包括当前输入像素x(t)(661)、在当前输入像素661左侧的相同颜色的第二个像素660、和在当前输入像素661右侧的相同颜色的第三个像素。
随后,在子步骤673,识别前一帧中与选择的一组3个水平相邻的像素660、661和662对应的3个并置的基准像素657、658和659。利用选择的像素660、661和662及3个并置的基准像素657、658和659,在子步骤674分别确定三个选择的像素660、661和662各自与其对应的并置基准像素657、658和659之间的差值的绝对值。随后,在子步骤675,选择子步骤674的3个差值中的最大值,作为当前输入像素x(t)的运动增量值d(t)。如上所述,图解说明公式1a中所示的运动增量值计算技术的图55仅旨在提供一个实施例。事实上,如上所述,可以使用当前像素位于中心的相同颜色像素的任何适当2维阵列来确定运动增量值(例如,公式1b)。
图56中进一步描述了对图像数据应用时域滤波的技术的另一个实施例。例如,由于图像数据的不同颜色分量的信噪比可能不同,因此可对当前像素应用增益,以致在从运动表655和亮度表656中选择运动值和亮度值之前,使当前像素获得增益。通过应用取决于颜色的相应增益,在不同的颜色分量之间,信噪比可以更一致。例如,在使用原始Bayer图像数据的实现中,与绿色(Gr和Gb)通道相比,红色和蓝色通道通常更敏感。从而,通过对每个处理后的像素应用适当的颜色相关增益,通常可减小各颜色分量之间的信噪比变化,从而减小伪像等,以及增大在自动白平衡之后的不同颜色间的一致性。
考虑到此,图56是按照这样的实施例,描述对从前端处理单元150接收的图像数据应用时域滤波的方法676的流程图。从步骤677开始,时域滤波系统654接收位于图像数据的当前帧的空间位置(j,i)的当前像素x(t)。在步骤678,至少部分根据图像数据前一帧(例如,紧接在当前帧之前的图像帧)的一个或多个并置基准像素(例如,r(t-1)),确定当前像素x(t)的运动增量值d(t)。步骤678可以类似于图54的步骤666,并且可利用在上面的公式1中表示的运算。
随后,在步骤679,利用运动增量值d(t)、对应于前一帧的空间位置(j,i)(例如,对应于并置的基准像素r(t-1))的运动历史输入值h(t-1)和与当前像素的颜色相关的增益,可确定运动表查寻索引。之后,在步骤680,通过利用在步骤679确定的运动表查寻索引,可从运动表655中选择第一滤波系数K。例如,在一个实施例中,可如下确定滤波系数K和运动表查寻索引:
K=M[gain[c]×(d(j,i,t)+h(j,i,t-1))], (2b)
其中,M代表运动表,增益[c]对应于与当前像素的颜色相关的增益。另外,尽管图56中未示出,不过应明白,也可确定当前像素的运动历史输出值h(t),并可以将其用于对后续图像帧(例如,下一帧)的并置像素应用时域滤波。在本实施例中,可利用下述公式确定当前像素x(t)的运动历史输出h(t):
h(j,i,t)=d(j,i,t)+K[h(j,i,t-1)-d(j,i,t)] (3b)
随后,在步骤681,通过利用根据与当前像素x(t)的颜色相关的增益(gain[c])确定的亮度表查寻索引,可从亮度表656中选择衰减因数。如上所述,保存在亮度表中的衰减因数可以具有约0~1的范围。之后,在步骤682,可以根据衰减因数(来自步骤681)和第一滤波系数K(来自步骤680)计算第二滤波系数K′。例如,在一个实施例中,可如下确定第二滤波系数K′和亮度表查寻索引:
K′=K×L[gain[c]×x(j,i,t)] (4b)
随后,在步骤683,根据第二滤波系数K′(来自步骤682)、并置基准像素r(t-1)的值和输入像素x(t)的值,确定对应于当前输入像素x(t)的时域滤波输出值y(t)。例如,在一个实施例中,可如下确定输出值y(t):
y(j,i,t)=x(j,i,t)+K′(r(j,i,t-1)-x(j,i,t)) (5b)
继续到图57,图中描述时域滤波处理384的另一个实施例。这里,除了为各个颜色分量提供单独的运动表和亮度表,而不是对每个输入像素应用颜色相关增益(例如,gain[c])和使用共用的运动表和亮度表之外,可按照和在图56中讨论的实施例相似的方式实现时域滤波处理384。例如,如图57中所示,运动表655可包括对应于第一种颜色的运动表655a,对应于第二种颜色的运动表655b,和对应于第n种颜色的运动表655c,其中n取决于存在于原始图像数据中的颜色的数目。类似地,亮度表656可包括对应于第一种颜色的亮度表656a,对应于第二种颜色的亮度表656b,和对应于第n种颜色的亮度表656c。从而,在原始图像数据是Bayer图像数据的实施例中,分别为红色、蓝色和绿色分量提供3个运动表和亮度表。如下所述,滤波系数K和衰减因数的选择可取决于为当前颜色(例如,当前输入像素的颜色)选择的运动表和亮度表。
图58中表示了图解说明利用颜色相关的运动表和亮度表的时域滤波的另一个实施例。可以理解,方法685可以采用的各种计算和公式与图54中所示的实施例类似,不过为每种颜色选择特定的运动表和亮度表,或者类似于图56中所示的实施例,不过用颜色相关运动表和亮度表的选择代替颜色相关的gain[c]的使用。
从步骤686开始,时域滤波系统684(图57)接收位于图像数据的当前帧的空间位置(j,i)的当前像素x(t)。在步骤687,至少部分根据图像数据的前一帧(例如,紧接在当前帧之前的图像帧)的一个或多个并置基准像素(例如,r(t-1)),确定当前像素x(t)的运动增量值d(t)。步骤687可以类似于图54的步骤666,并且可以利用在上面的公式1中表示的运算。
随后在步骤688,利用运动增量值d(t)和对应于前一帧的空间位置(j,i)(例如,对应于并置基准像素r(t-1))的运动历史输入值h(t-1),可确定运动表查寻索引。之后,在步骤689,根据当前输入像素的颜色,可从可用的运动表(例如,655a、655b、655c)之一中选择第一滤波系数K。例如,一旦识别了适当的运动表,就可利用在步骤688中确定的运动表查寻索引选择第一滤波系数K。
在选择了第一滤波系数K之后,选择对应于当前颜色的亮度表,并根据当前像素x(t)的值从选择的亮度表中选择衰减因数,如步骤690所示。之后,在步骤691,根据衰减因数(来自步骤690)和第一滤波系数K(步骤689),确定第二滤波系数K′。之后,在步骤692,根据第二滤波系数K′(来自步骤691)、并置基准像素r(t-1)的值和输入像素x(t)的值,确定对应于当前输入像素x(t)的时域滤波输出值y(t)。尽管图58中所示的技术实现成本可以更高(例如,由于保存额外的运动表和亮度表而需要的存储器),不过在一些情况下,它可带来伪像方面的进一步改善,和增大在自动白平衡之后的不同颜色间的一致性。
按照其它实施例,时域滤波器650提供的时域滤波处理可利用颜色相关增益和特定于颜色的运动表和/或色度表的组合,对输入像素应用时域滤波。例如,在一个这样的实施例中,可为所有颜色分量提供单个运动表,并且可根据颜色相关增益,确定从运动表中选择第一滤波系数(K)的运动表查寻索引(例如,如图56,步骤679-680所示),而亮度表查寻索引可不应用颜色相关增益,不过可被用于从取决于当前像素的颜色的多个亮度表之一中选择亮度衰减因数(例如,如图58,步骤690所示)。另一方面,在另一个实施例中,可以提供多个运动表,并且运动表查寻索引(没有被应用颜色相关增益)可用于从与当前输入像素的颜色对应的运动表中选择第一滤波系数(K)(例如,如图58,步骤689所示),而为所有颜色分量提供单个亮度表,其中,可根据颜色相关增益,确定用于选择亮度衰减因数的亮度表查寻索引(例如,如图56,步骤681-682所示)。此外,在利用Bayer色彩滤镜矩阵的一个实施例中,可分别为红色(R)和蓝色(B)分量提供一个运动表和/或亮度表,而为两个绿色分量(Gr和Gb)提供公共运动表和/或亮度表。
时域滤波器650的输出随后可被发送给箱化补偿滤波器(BCF)652,BCF 652可被配置成处理图像像素,以补偿由图像传感器90a或90b的箱化而引起的颜色样本的非线性布局(例如,不均匀的空间分布),以致ISP管道逻辑器82中的取决于颜色样本的线性布局的后续图像处理操作(例如,去马赛克等)能够正确工作。例如,现在参见图59,说明Bayer图像数据的全分辨率样本693。这可代表由与ISP前端处理逻辑器80耦接的图像传感器90a(或90b)捕捉的原始图像数据的全分辨率样本。
可以理解,在某些图像捕获条件下,把图像处理器90a捕捉的全分辨率图像数据发给ISP电路32处理并不可行。例如,当捕捉图像数据,以便保留人眼看来流畅的运动图像时,可能期望至少大约30帧/秒的帧速率。不过,当以30帧/秒采样时,如果包含在全分辨率样本的每一帧中的像素数据的量超过ISP电路32的处理能力,那么结合图像传感器90a的箱化,可以应用箱化补偿滤波,以降低图像信号的分辨率,同时还提高信噪比。例如,如上所述,可以应用各种箱化技术,比如2×2箱化,以通过平均在原始帧310的激活区312中的周围像素的值,产生“箱化的”原始图像像素。
参见图60,图中按照一个实施例,图解说明可被配置成箱化图59的全分辨率图像数据693,以产生图61中所示的对应的箱化原始图像数据700的图像传感器90a的一个实施例。如图所示,图像传感器90a可捕捉全分辨率原始图像数据693。箱化逻辑器699可被配置成对全分辨率原始图像数据693应用箱化,以产生箱化的原始图像数据700,通过利用传感器接口94a,所述原始图像数据700可被提供给ISP前端处理逻辑器80,如上所述,传感器接口94a可以是SMIA接口或者任何其它适当的并行或串行照相机接口。
如图61中图解所示,箱化逻辑器699可对全分辨率原始图像数据693应用2×2箱化。例如,就箱化的图像数据700来说,像素695、696、697和698可形成Bayer模式,并且可通过平均全分辨率原始图像数据693的各个像素的值来确定。例如,参见图59和61,箱化的Gr像素695可被确定为全分辨率Gr像素695a~695d的平均数或均值。类似地,箱化的R像素696可被确定为全分辨率R像素696a~696d的平均数,箱化的B像素697可被确定为全分辨率B像素697a~697d的平均数,箱化的Gb像素698可被确定为全分辨率Gb像素698a~698d的平均数。从而,在本实施例中,2×2箱化可提供一组4个全分辨率像素,包括左上像素(例如,695a)、右上像素(例如,695b)、左下像素(例如,695c)和右下像素(例如,695d),所述4个全分辨率像素被平均,从而得到位于由所述一组4个分辨率像素形成的正方形的中央的箱化像素。因而,图61中所示的箱化的Bayer块694包含4个“超像素”,所述4个超像素代表包含在图59的Bayer块694a-694d中的16个像素。
除了降低空间分辨率之外,箱化还带来减小图像信号中的噪声的附加优点。例如,只要图像传感器(例如,90a)暴露在光信号之下,就可以存在与图像相关的一定量的噪声,比如光子噪声。这种噪声可以是随机的或者系统的,它还可以来自多个源。从而,包含在图像传感器捕捉的图像中的信息量可用信噪比来表示。例如,每当用图像传感器90a捕捉图像,并把图像传给处理电路,比如ISP电路32时,由于读取和传送图像数据的处理固有地在图像信号中引入“读出噪声”,因此在像素值中可存在一定程度的噪声。这种“读出噪声”可以是随机的,并且通常不可避免。通过利用4个像素的平均值,通常可以减小噪声(例如光子噪声),而不考虑噪声的来源。
从而,当考虑图59的全分辨率图像数据693时,每个Bayer模式(2×2块)694a-694d包含4个像素,每个像素包含信号分量和噪声分量。如果分别读出例如Bayer块694中的每个像素,那么存在4个信号分量和4个噪声分量。不过,通过应用箱化,如图59和61中所示,4个像素(例如,695a、695b、695c、695d)可用箱化图像数据中的单个像素(例如695)表示,全分辨率图像数据693中4个像素占据的相同面积可作为只具有噪声分量的一个实例的单个像素被读出,从而提高信噪比。
此外,尽管本实施例把图60的箱化逻辑器699描述为被配置成应用2×2箱化处理,不过应理解,箱化逻辑器699可被配置成应用任何适当类型的箱化处理,比如3×3箱化,垂直箱化,水平箱化等等。在一些实施例中,图像传感器90a可被配置成在图像拍摄处理期间,在不同的箱化模式之间进行选择。另外,在其它实施例中,图像传感器90a也可被配置成应用可被称为“跳跃”的技术,其中,代替求像素样本的平均值,逻辑器699只从全分辨率数据693中选择某些像素(例如,每隔一个像素,每隔两个像素等等)输出给ISP前端80,以供处理。此外,虽然图60中只表示了图像传感器90a,不过应理解可按照类似的方式实现图像传感器90b。
另外,在图61中还描述了箱化处理的一种效果,即,箱化像素的空间采样未被均匀隔开。在一些系统中,这种空间畸变会导致通常不可取的混叠(例如,锯齿边缘)。此外,由于为了正确工作,ISP管道逻辑器82中的某些图像处理步骤可以取决于颜色样本的线性布局,因此可以应用箱化补偿滤波器(BCF)652,以进行箱化像素的再采样和重新布置,以致使箱化像素在空间上均匀分布。即,BCF 652通过对样本(例如,像素)的位置再采样,实质上补偿不均匀的空间分布(例如,如图61中所示)。例如,图62图解说明在用BCF 62处理之后的箱化图像数据702的再采样部分,其中,Bayer块703包含分别与图61的箱化图像数据700的箱化像素695、696、697和698对应的均匀分布的再采样像素704、705、706和707。另外,在利用如上所述的跳跃(例如,代替箱化)的实施例中,可以不存在图61中所示的空间畸变。在这种情况下,BCF 652可以起降低当图像传感器90a采用跳跃时可导致的伪像(例如,混叠)的低通滤波器的作用。
图63表示按照一个实施例,合并补偿滤波器652的方框图。BCF 652可包括箱化补偿逻辑器708,箱化补偿逻辑器708可以处理箱化像素700,以分别利用水平比例缩放逻辑器709和垂直比例缩放逻辑器710应用水平和垂直比例缩放,从而对箱化像素700进行再采样和重新布置,以致按照空间均匀的分布排列箱化像素700,如图62中所示。在一个实施例中,可利用水平和垂直多抽头多相滤波进行BCF 652进行的比例缩放操作。例如,该滤波处理可包括从输入的源图像数据(例如,图像传感器90a提供的箱化图像数据700)中选择适当的像素,把每个选择的像素乘以滤波系数,并计算结果值的总和,从而在希望的目的地形成输出像素。
比例缩放操作中使用的像素(它可包括中心像素和相同颜色的周围相邻像素)的选择可利用单独的微分分析器711确定,一个微分分析器用于垂直比例缩放,一个微分分析器用于水平比例缩放。在所描述的实施例中,微分分析器711可以是数字微分分析器(DDA),并且可被配置成沿垂直方向和水平方向,在比例缩放操作期间控制当前输出像素位置。在本实施例中,第一DDA(称为711a)在水平比例缩放期间用于所有颜色分量,第二DDA(称为711b)在垂直比例缩放期间用于所有颜色分量。例如,可以32比特数据寄存器的形式提供DDA 711,所述32比特数据寄存器包含整数部分16比特和小数部分16比特的2的补码定点数。16比特整数部分可用于确定输出像素的当前位置。DDA 711的小数部分可用于确定当前索引或相位,所述当前索引或相位可基于当前DDA位置(例如,对应于输出像素的空间位置)的像素间小数位置。所述索引或相位可用于从一组滤波系数表712中选择适当的一组系数。另外,可利用相同颜色的像素,每个颜色分量地进行滤波。从而,可以不仅根据当前DDA位置的相位,还根据当前像素的颜色选择滤波系数。在一个实施例中,在每个输入像素间可存在8个相位,从而,垂直和水平比例缩放组件可以利用深度为8的系数表,以致16比特小数部分的高位3比特用于表示当前相位或索引。从而,应理解这里使用的术语“原始图像”数据等指的是用覆盖有色彩滤镜阵列模式(例如Bayer)的单个传感器获得的多色图像数据,这些色彩滤镜阵列模式在一个平面中提供多个颜色分量。在另一个实施例中,对于每个颜色分量可以使用单独的DDA。例如,在这样的实施例中,BCF 652可从原始图像数据中提取R、B、Gr和Gb分量,并以单独的平面的形式处理每个分量。
操作中,水平和垂直比例缩放可包括初始化DDA 711,并利用DDA711的整数部分和小数部分进行多抽头多相滤波。在分别并利用单独的DDA进行水平和垂直比例缩放的时候,按照类似的方式进行垂直和水平比例缩放。步长值或步长大小(用于水平比例缩放的DDAStepX和用于垂直比例缩放的DDAStepY)确定在确定每个输出像素之后,DDA值(currDDA)被增大多少,并利用下一个currDDA值重复多抽头多相滤波。例如,如果步长值小于1,那么图像被比例放大,如果步长值大于1,那么图像被比例缩小。如果步长值等于1,那么不进行比例缩放。此外,应注意对于水平和垂直比例缩放,可以使用相同或不同的步长值。
BCF 652按照和输入像素相同的顺序(例如,利用Bayer模式)生成输出像素。在本实施例中,根据输入像素的排序,输入像素可被分类为偶数像素或奇数像素。例如,参见图64,图中图解说明了输入像素位置(行713)和基于各个DDAStep值的对应输出像素位置(行714~718)的图示。在这个例子中,描述的行代表原始Bayer图像数据中的一行红色(R)和绿色(Gr)像素。对水平滤波来说,行713中在位置0.0的红色像素可被看作偶数像素,行713中在位置1.0的绿色像素可被看作奇数像素,等等。对输出像素位置来说,可根据DDA 711的小数部分(低位16比特)中的最低有效位,确定偶数像素和奇数像素。例如,假定DDAStep为1.25,如行715中所示,最低有效位对应于DDA的比特14,因为该比特给出0.25的分辨率。从而,在DDA位置(currDDA)0.0的红色输出像素可被视为偶数像素(最低有效位比特14为0),在currDDA 1.0的绿色输出像素(比特14为1)可被视为奇数像素,等等。此外,虽然关于水平方向的滤波(利用DDAStepX),讨论了图64,不过应明白,对于垂直滤波(利用DDAStepY),可按照相同的方式应用偶数和奇数输入和输出像素的确定。在其它实施例中,DDA 711还可用于跟踪输入像素的位置(例如,而不是跟踪期望的输出像素位置)。此外,应理解DDAStepX和DDAStepY可被设定成相同或不同的值。此外,假定使用Bayer模式,那么应注意BCF652使用的起始像素可以是Gr、Gb、R或B像素中任意之一,取决于例如哪个像素位于激活区312的角落。
考虑到上述内容,偶数/奇数输入像素被分别用于生成偶数/奇数输出像素。给定在偶数位置和奇数位置之间交替的输出像素位置,通过分别把DDA舍入到偶数或奇数输出像素位置的最近的偶数或奇数输入像素位置(根据DDAStepX),确定用于滤波的中心源输入像素位置(这里称为“currPixel”)。在DDA 711a被配置成使用16比特来表示整数,用16比特来表示小数的实施例中,通过利用下面的公式6a和6b,可关于偶数和奇数currDDA位置确定currPixel。
偶数输出像素位置可根据为下式的比特[31:16]来确定:
(currDDA+1.0)&0xFFFE.0000 (6a)
奇数输出像素位置可根据为下式的比特[31:16]来确定:
(currDDA)|0x0001.0000 (6b)
实质上,上面的公式代表舍入运算,从而由currDDA确定的偶数和奇数输出像素位置被分别舍入到最近的偶数和奇数输入像素位置,以便选择currPixel。
另外,还可在每个currDDA位置确定当前索引或相位(currIndex)。如上所述,索引或相位值代表输出像素位置相对于输入像素位置的像素间小数位置。例如,在一个实施例中,在每个输入像素位置之间可以定义8个相位。例如,重新参见图64,在位于位置0.0的第一红色输入像素和位于2.0的下一个红色输入像素之间,提供8个索引值0-7。类似地,在位于位置1.0的第一绿色输入像素和位于3.0的下一个绿色输入像素之间,提供8个索引值0-7。在一个实施例中,对于偶数和奇数输出像素位置,可分别按照下面的公式7a和7b确定currIndex值:
偶数输出像素位置可根据下式的比特[16:14]确定:
(currDDA+0.125) (7a)
奇数输出像素位置可根据下式的比特[16:14]确定:
(currDDA+1.125) (7b)
对奇数位置来说,额外的1像素位移等同于把奇数输出像素位置的系数索引加上为4的偏移量,以考虑到就DDA 711来说,不同颜色分量之间的索引偏移量。
一旦在特定的currDDA位置确定了currPixel和currIndex,滤波处理就可以根据currPixel(选择的中心输入像素),选择一个或多个相邻的相同颜色的像素。例如,在水平比例缩放逻辑器709包括5抽头多相滤波器,垂直比例缩放逻辑器710包括3抽头多相滤波器的实施例中,可以为水平滤波选择沿着水平方向,在currPixel每一侧的两个相同颜色的像素(例如,-2,-1,0,+1,+2),可以为垂直滤波选择沿着垂直方向在currPixel每一侧的相同颜色的像素(例如,-1,0,+1)。此外,currIndex可被用作选择索引,以从滤波系数表712中选择适当的滤波系数,以应用于选择的像素。例如,利用5抽头水平/3抽头垂直滤波实施例,可为水平滤波提供5个深度为8的表格,为垂直滤波提供3个深度为8的表格。尽管被图解表示成BCF 652的一部分,不过应理解在一些实施例中,滤波系数表712可被保存在与BCF 652物理分离的存储器,比如存储器108中。
在更详细地讨论水平和垂直比例缩放操作之前,表5表示了利用不同的DDAStep值(例如,可应用于DDAStepX或DDAStepY),根据各个DDA位置确定的currPixel和currIndex值的例子。
表5:箱化补偿滤波器-currPixel和currIndex计算的DDA例子
举例来说,假定选择为1.5的DDA步长大小(DDAStep)(图64的行716),同时当前DDA位置(currDDA)开始于0,指示偶数输出像素位置。为了确定currPixel,可以应用公式6a,如下所示:
currDDA=0.0(偶数)
0000 0000 0000 0001.0000 0000 0000 0000(currDDA+1.0)
(AND)1111 1111 1111 1110.0000 0000 0000 0000(0xFFFE.0000)
=0000 0000 0000 0000.0000 0000 0000 0000
currPixel(被确定为结果的比特[31:16])=0;
从而,在currDDA位置0.0(行716),用于滤波的源输入中心像素对应于在行713的位置0.0的红色输入像素。
为了确定在偶数currDDA 0.0的currIndex,可以应用公式7a,如下所示:
currDDA=0.0(偶数)
0000 0000 0000 0000.0000 0000 0000 0000(currDDA)
+0000 0000 0000 0000.0010 0000 0000 0000(0.125)
=0000 0000 0000 0000.0010 0000 0000 0000
currIndex(被确定为结果的比特[16:14])=[000]=0;
从而,在currDDA位置0.0(行716),为0的currIndex值可被用于从滤波器系数表712中选择滤波系数。
因而,可根据确定的在currDDA 0.0的currPixel和currIndex值,应用滤波(滤波可以是垂直滤波或水平滤波,取决于DDAStep在X(水平)方向还是在Y(垂直)方向),DDA 711被递增DDAStep(1.5),并确定下一个currPixel和currIndex值。例如,在下一个currDDA位置1.5(奇数位置),可如下利用公式6b确定currPixel:
currDDA=0.0(奇数)
0000 0000 0000 0001.1000 0000 0000 0000(currDDA)
(OR)0000 0000 0000 0001.0000 0000 0000 0000(0x0001.0000)
=0000 0000 0000 0001.1000 0000 0000 0000
currPixel(被确定为结果的比特[31:16])=1;
从而,在currDDA位置1.5(行716),用于滤波的源输入中心像素对应于在行713的位置1.0的绿色输入像素。
此外,在奇数currDDA 1.5的currIndex可利用公式7b来确定,如下所示:
currDDA=1.5(奇数)
0000 0000 0000 0001.1000 0000 0000 0000(currDDA)
+0000 0000 0000 0001.0010 0000 0000 0000(1.125)
=0000 0000 0000 0010.1010 0000 0000 0000
currIndex(被确定为结果的比特[16:14])=[010]=2;
从而,在currDDA位置1.5(行716),可以使用为2的currIndex值从滤波器系数表712中选择适当的滤波系数。从而可利用这些currPixel和currIndex值,如此应用滤波(滤波可以是垂直滤波或水平滤波,取决于DDAStep在X(水平)方向还是在Y(垂直)方向)。
之后,DDA 711再次被递增DDAStep(1.5),得到为3.0的currDDA值。利用公式6a,可确定对应于currDDA 3.0的currPixel,如下所示:
currDDA=3.0(偶数)
0000 0000 0000 0100.0000 0000 0000 0000(currDDA+1.0)
(AND)1111 1111 1111 1110.0000 0000 0000 0000(0xFFFE.0000)
=0000 0000 0000 0100.0000 0000 0000 0000
currPixel(被确定为结果的比特[31:16])=4;
从而,在currDDA位置3.0(行716),用于滤波的源输入中心像素对应于在行713的位置4.0的红色输入像素。
随后,可利用公式7a确定在偶数currDDA 3.0的currIndex,如下所示:
currDDA=3.0(偶数)
0000 0000 0000 0011.0000 0000 0000 0000(currDDA)
+0000 0000 0000 0000.0010 0000 0000 0000(0.125)
=0000 0000 0000 0011.0010 0000 0000 0000
currIndex(被确定为结果的比特[16:14])=[100]=4;
从而,在currDDA位置3.0(行716),可以使用为4的currIndex值从滤波系数表712中选择适当的滤波系数。可以理解,对于每个输出像素,可以继续使DDA 711增大DDAStep,并可利用对于每个currDDA值确定的currPixel和currIndex,应用滤波(滤波可以是垂直滤波或水平滤波,取决于DDAStep在X(水平)方向还是在Y(垂直)方向)。
如上所述,currIndex可用作从滤波器系数表712中选择适当的滤波系数以应用于所选像素的选择索引。滤波处理可包括获得中心像素(currPixel)周围的源像素值,把每个选择的像素乘以根据currIndex从滤波器系数表712选择的适当滤波系数,并计算结果的总和,以获得在对应于currDDA的位置的输出像素的值。此外,由于本实施例利用相同颜色的像素之间的8个相位,因此通过使用5抽头水平/3抽头垂直滤波实施例,可为水平滤波提供5个深度为8的表格,为垂直滤波提供3个深度为8的表格。在一个实施例中,每个系数表条目包括16比特(3个整数比特和13个小数比特)的2的补码定点数。
此外,假定Bayer图像模式的情况下,在一个实施例中,垂直比例缩放组件可包括4个单独的3抽头多相滤波器,分别用于各个颜色分量:Gr,R,B和Gb。每个3抽头滤波器可以使用DDA 711控制当前中心像素的步进和系数的索引,如上所述。类似地,水平比例缩放组件可包括4个单独的5抽头多相滤波器,分别用于各个颜色分量:Gr,R,B和Gb。每个5抽头滤波器可以使用DDA 711控制当前中心像素的步进(例如,借助DDAStep)和系数的索引。不过应明白,在其它实施例中,水平和垂直比例缩放组件(scalar)可以利用更少或更多的抽头。
对于边界情况来说,水平和垂直滤波处理中使用的像素可取决于当前DDA位置(currDDA)相对于帧边界(例如,用图23中的激活区312定义的边界)的关系。例如,在水平滤波中,当与中心输入像素的位置(SrcX)和帧的宽度(SrcWidth)(例如,图23的激活区312的宽度322)相比时,如果currDDA位置指示DDA 711接近所述边界,使得没有进行5抽头滤波的足够像素,那么可重复相同颜色的输入边界像素。例如,如果选择的中心输入像素在帧的左边缘,那么中心像素可被复制两次,以便进行水平滤波。如果中心输入像素在帧的左边缘附近,以致在中心输入像素和左边缘只有一个像素可用,那么对于水平滤波来说,复制所述一个可用像素,以便在中心输入像素的左侧提供两个像素值。此外,水平比例缩放逻辑器709可被配置成以致输入像素(包括初始像素和复制像素)的数量不能超过输入宽度。这可如下表示:
StartX=(((DDAInitX+0x0001.0000)&0xFFFE.0000)>>16)
EndX=(((DDAInitX+DDAStepX*(BCFOutWidth-1))|0x0001.0000)>>16)
EndX-StartX<=SrcWidth-1
其中,DDAInitX代表DDA 711的初始位置,DDAStepX代表水平方向的DDA步长值,BCFOutWidth代表BCF 652输出的帧的宽度。
对垂直滤波来说,当与中心输入像素的位置(SrcY)和帧的宽度(SrcHeight)(例如,图23的激活区312的宽度322)相比时,如果currDDA位置指示DDA 711接近边界,以致没有进行3抽头滤波的足够像素,那么可重复输入边界像素。此外,垂直比例缩放逻辑器710可被配置成以致输入像素(包括初始像素和复制像素)的数目不能超过输入高度。这可表示成如下:
StartY=(((DDAInitY+0x0001.0000)&0xFFFE.0000)>>16)
EndY=(((DDAInitY+DDAStepY*(BCFOutHeight-1))|0x0001.0000)>>16)
EndY-StartY<=SrcHeight-1
其中,DDAInitY代表DDA 711的初始位置,DDAStepY代表垂直方向的DDA步长值,BCFOutHeight代表BCF 652输出的帧的宽度。
现在参见图65,图65是按照一个实施例,说明对前端像素处理单元150接收的图像数据应用箱化补偿滤波的方法720的流程图。应理解图65中图解说明的方法720可应用于垂直比例缩放和水平比例缩放。从步骤721开始,初始化DDA 711,并确定DDA步长值(它可对应于水平比例缩放的DDAStepX和垂直比例缩放的DDAStepY)。随后,在步骤722,根据DDAStep确定当前DDA位置(currDDA)。如上所述,currDDA可对应于输出像素位置。通过利用currDDA,方法720可根据用于箱化补偿滤波的输入像素数据,确定中心像素(currPixel),以确定在currDDA的对应输出值,如在步骤723所示。随后,在步骤724,可根据currDDA相对于输入像素的像素间小数位置,确定对应于currDDA的索引(currIndex)(例如,图64的行713)。例如,在DDA包括16个整数比特和16个小数比特的实施例中,可按照公式6a和6b确定currPixel,并且可按照公式7a和7b确定currIndex,如上所述。尽管这里作为一个例子,说明了16比特整数/16比特小数结构,不过应理解,按照本发明的技术,可以利用DDA 711的其它结构。例如,DDA 711的其它实施例可被配置成包括12比特整数部分和20比特小数部分,14比特整数部分和18比特小数部分,等等。
一旦确定了currPixel和currIndex,就可为多抽头滤波选择在currPixel周围的相同颜色的源像素,如步骤725所示。例如,如上所述,一个实施例可在水平方向利用5抽头多相滤波(例如,在currPixel的每一侧选择2个相同颜色的像素),并且在垂直方向利用3抽头多相滤波(例如,在currPixel的每一侧选择1个相同颜色的像素)。随后,在步骤726,一旦选择了源像素,就可根据currIndex,从BCF 652的滤波器系数表712中选择滤波系数。
之后,在步骤727,可对源像素应用滤波,以确定与currDDA代表的位置对应的输出像素的值。例如,在一个实施例中,可把源像素乘以其相应的滤波系数,并计算结果的总和,从而获得输出像素值。在步骤727应用滤波的方向可以是垂直方向或水平方向,取决于DDAStep在X(水平)方向还是在Y(垂直)方向。最后,在步骤728,使DDA 711递增DDAStep,方法720返回步骤722,从而利用这里讨论的箱化补偿滤波技术确定下一个输出像素值。
参见图66,图中按照一个实施例,更详细地图解说明方法720的确定currPixel的步骤723。例如,步骤723可包括确定与currDDA(来自步骤722)对应的输出像素位置是偶数还是奇数的子步骤729。如上所述,可根据DDAStep,根据currDDA的最低有效位确定偶数或奇数输出像素。例如,给定DDAStep为1.25,那么1.25的currDDA值可被确定为奇数,因为最低有效位(对应于DDA 711的小数部分的比特14)的值为1。对2.5的currDDA值来说,比特14为0,从而指示偶数输出像素位置。
在判决逻辑器730,确定对应于currDDA的输出像素位置是偶数还是奇数。如果输出像素是偶数,那么判决逻辑器730进入子步骤731,在子步骤731,通过使currDDA值加1,并把结果舍入到最近的偶数输入像素位置,确定currPixel,如上面用公式6a所示。如果输出像素是奇数,那么判决逻辑器730进入子步骤732,在子步骤732,通过把currDDA值舍入成最近的奇数输入像素位置,确定currPixel,如上面用公式6b所示。随后可把currPixel值应用于方法720的步骤725,以选择滤波用源像素,如上所述。
另外参见图67,图中按照一个实施例,更详细地图解说明步骤720的确定currIndex的步骤724。例如,步骤724可包括确定对应于currDDA(来自步骤722)的输出像素位置是偶数还是奇数的子步骤733。可按照和图66的步骤729相似的方式进行所述确定。在判决逻辑器734,确定对应于currDDA的输出像素位置是偶数还是奇数。如果输出像素是偶数,那么判决逻辑器734进入子步骤735,在子步骤735,这样确定currIndex:使currDDA值递增一个索引步长,并根据DDA 711的最低整数比特和两个最高小数比特确定currIndex。例如,在其中在每个相同颜色的像素之间提供8个相位,并且其中DDA包括16个整数比特和16个小数比特的实施例中,一个索引步长可以对应于0.125,可根据递增0.125的currDDA值的比特[16:14]确定currIndex(例如,公式7a)。如果输出像素是奇数,那么判决逻辑器734可进入子步骤736,其中,这样确定currIndex:使currDDA值递增一个索引步长和一个像素位移,并根据DDA 711的最低整数比特和两个最高小数比特确定currIndex。从而,在其中在每个相同颜色的像素之间提供8个相位,并且其中DDA包括16个整数比特和16个小数比特的实施例中,一个索引步长可以对应于0.125,一个像素位移可以对应于1.0(朝着下一个相同颜色的像素移动8个索引步长),可根据递增1.125的currDDA值的比特[16:14],确定currIndex(例如,公式7b)。
尽管图解说明的实施例以前端像素处理逻辑器150的组件的形式提供BCF 652,不过其它实施例可把BCF 652并入ISP管道82的原始图像数据处理管线中,如下进一步所述,ISP管道82中可包括缺陷像素检测/校正逻辑器、增益/偏移量/补偿块、降噪逻辑器、透镜阴影校正逻辑器和去马赛克逻辑器。此外,在上述缺陷像素检测/校正逻辑器、增益/偏移量/补偿块、降噪逻辑器、透镜阴影校正逻辑器不依赖于像素的线性布局的实施例中,BCF 652可以与去马赛克逻辑器结合,以便在去马赛克之前进行箱化补偿滤波和重新布置像素,因为去马赛克通常依赖于像素的均匀空间布置。例如,在一个实施例中,BCF 652可被结合到传感器输入和去马赛克逻辑器之间的任意位置,同时在箱化补偿之前,对原始图像数据应用时域滤波和/或缺陷像素检测/校正。
如上所述,BCF 652的输出(它可以是具有空间均匀分布的图像数据(例如图62的样本702)的输出FEProcOut(109))可被转发给ISP管道处理逻辑器82,以便进行另外的处理。不过,在把讨论的焦点转移到ISP管道处理逻辑器82之前,首先更详细地说明由在ISP前端逻辑器80中实现的统计信息处理单元(例如,142和144)提供的各种功能。
返回参见统计信息处理单元142和144的概述,这些单元可被配置成收集和捕捉并提供原始图像信号(Sif0和Sif1)的图像传感器有关的各种统计信息,比如涉及自动曝光、自动白平衡、自动聚焦、闪烁检测、黑电平补偿和透镜阴影校正等等的统计信息。这样做时,统计信息处理单元142和144首先对它们各自的输入信号Sif0(来自Sensor0)和Sif1(来自Sensor1)应用一种或多种图像处理操作。
例如,参见图68,图中按照一个实施例,更详细地图解说明与Sensor0(90a)相关的统计信息处理单元142的方框图。如图所示,统计信息处理单元142可包括下述功能块:缺陷像素检测和校正逻辑器738、黑电平补偿(BLC)逻辑器739、透镜阴影校正逻辑器740、反转BLC逻辑器741和统计信息收集逻辑器742。下面将分别讨论这些功能块。此外,应明白可按照相似的方式实现与Sensor1(90b)相关的统计信息处理单元144。
首先,前端缺陷像素检测逻辑器738接收选择逻辑器146的输出(例如,Sif0或SifIn0)。应明白,“缺陷像素”可被理解成是指图像传感器90内未能准确感测光级的成像像素。缺陷像素可归因于许多因素,并且可包括“噪点”(或者漏)像素,“亮点”像素和“坏点”像素。在相同的空间位置,给定相同的光量下,噪点通常表现得比非缺陷像素更亮。重置失败和/或高泄漏可以导致噪点。例如,相对于非缺陷像素,噪点可以表现高于正常的电荷漏泄,从而显得比非缺陷像素亮。另外,“坏点”和“亮点”可能是在制备和/或装配期间,诸如灰尘或其它痕量物质之类的杂质污染图像传感器的结果,这会导致某些缺陷像素比非缺陷像素亮或暗,或者导致缺陷像素固定在特定的值,而不管它实际暴露于的光量。另外,坏点和亮点还可起因于在图像传感器的工作期间出现的电路故障。例如,亮点可以表现为始终接通(例如,完全充电),从而显得更明亮,而坏点表现为始终关闭。
ISP前端逻辑器80中的缺陷像素检测和校正(DPDC)逻辑器738可在统计信息收集(例如,742)中考虑缺陷像素之前,校正缺陷像素(例如,替换缺陷像素值)。在一个实施例中,对每个颜色分量(例如,Bayer模式的R、B、Gr和Gb)独立地进行缺陷像素校正。通常,前端DPDC逻辑器738可提供动态缺陷校正,其中,根据利用相同颜色的相邻像素计算的方向梯度,自动确定缺陷像素的位置。可以理解,在给定时间有缺陷的像素的表征可以取决于相邻像素中的图像数据的意义上,缺陷是“动态的”。例如,如果亮点的位置在当前图像的由更明亮的颜色或者白色支配的区域中,那么总是处于最大亮度的亮点不被看作缺陷像素。相反,如果亮点在当前图像的由黑色或者较暗的颜色支配的区域中,那么在DPDC逻辑器738的处理期间,亮点会被识别为缺陷像素,从而被校正。
DPDC逻辑器738可利用在当前像素每一侧的一个或多个相同颜色的水平相邻像素,借助像素-像素梯度,确定当前像素是否有缺陷。如果当前像素被识别为有缺陷,那么可用水平相邻像素的值替代缺陷像素的值。例如,在一个实施例中,使用在原始帧310(图23)内的5个相同颜色的水平相邻像素,其中,所述5个水平相邻像素包括当前像素和在每一侧的2个相邻像素。从而,如图69中图解所示,对于给定颜色分量c和当前像素P,DPDC逻辑器738可考虑水平相邻像素P0、P1、P2和P3。不过应注意,取决于当前像素P的位置,当计算像素-像素梯度时,不考虑在原始帧310之外的像素。
例如,如图69中所示,在“左边缘”情况743中,当前像素P在原始帧310的最左侧边缘,从而不考虑在原始帧310外的相邻像素P0和P1,只留下像素P、P2和P3(N=3)。在“左边缘+1”情况744中,当前像素P距离原始帧310的最左侧边缘一个单位像素,从而不考虑像素P0。只留下像素P1、P、P2和P3(N=4)。此外,在“居中”情况745中,在当前像素P的左侧的像素P0和P1,以及在当前像素P的右侧的像素P2和P3都在原始帧310边界之内,于是,在计算像素-像素梯度时考虑所有的相邻像素P0、P1、P2和P3(N=5)。另外,当逼近原始帧310的最右侧边缘时,会遇到类似的情况746和747。例如,给定“右边缘-1”情况746,当前像素P距离原始帧310的最右侧边缘一个单位像素,从而,不考虑像素P3(N=4)。类似地,在“右边缘”情况747中,当前像素P在原始帧310的最右侧边缘,从而,两个相邻像素P2和P3都不被考虑(N=3)。
在图解说明的实施例中,对于在画面边界(例如,原始帧310)内的每个相邻像素(k=0~3),可如下计算像素-像素梯度:
Gk=abs(P-Pk),0≤k≤3(只对于在原始帧内的k) (8)
一旦确定了像素-像素梯度,DPDC逻辑器738可如下进行缺陷像素检测。首先,假定如果像素的一定数目的梯度Gk等于或小于特定阈值(用变量dprTh表示),那么该像素有缺陷。从而,对于每个像素,累积对于在画面边界内的相邻像素,等于或小于阈值dprTh的梯度的数目的计数(C)。例如,对于在原始帧310内的每个相邻像素,可如下计算等于或小于阈值dprTh的梯度Gk的累积计数C:
其中0≤k≤3(只对于在原始帧内的k)
可以理解,阈值dprTh可随颜色分量变化。随后,如果确定累积计数C小于或等于最大计数(用变量dprMaxC表示),那么可认为该像素有缺陷。该逻辑器表示成如下所示:
如果(C≤dprMaxC),那么像素有缺陷 (10)
利用多种替换约定替换缺陷像素。例如,在一个实施例中,缺陷像素可用其左侧紧邻的像素P1替换。在边界情况下(例如,P1在原始帧310之外),缺陷像素可用其右侧紧邻的像素P2替换。此外,应明白,可为连续的缺陷像素检测操作保留或传导替换值。例如,参见图69中所示的一组水平像素,如果P0或P1先前被DPDC逻辑器738识别成缺陷像素,那么它们的对应替换值可用于当前像素P的缺陷像素检测和替换。
为了总结上面讨论的缺陷像素检测和校正技术,图70中提供了描述这种处理的流程图748。如图所示,处理748开始于步骤749,在步骤749,接收当前像素(P),并识别一组相邻像素。按照上面说明的实施例,相邻像素可包括当前像素的两侧的相同颜色分量的两个水平像素(例如,P0、P1、P2和P3)。随后,在步骤750,如上面在公式8中所示,关于原始帧310内的每个相邻像素计算水平像素-像素梯度。之后,在步骤751,确定小于或等于特定阈值dprTh的梯度的数目的计数C。如在判决逻辑器752所示,如果C小于或等于dprMaxC,那么处理748进入步骤753,当前像素被识别成有缺陷。随后,在步骤754利用替换值校正缺陷像素。另外,返回参见判决逻辑器752,如果C大于dprMaxC,那么处理进入步骤755,当前像素被识别成无缺陷,并且其值不被改变。
应注意,与在IPS管道逻辑器82中进行的缺陷像素检测/校正相比,在IPS前端统计处理期间应用的缺陷像素检测/校正技术的鲁棒性可以较低。例如,如下更详细所述,除了动态缺陷校正之外,在ISP管道逻辑器82中进行的缺陷像素检测/校正还提供固定缺陷校正,其中,缺陷像素的位置预先已知,并被载入一个或多个缺陷表中。此外,IPS管道逻辑器82中的动态缺陷校正还可考虑水平方向和垂直方向的像素梯度,并且还提供斑点的检测/校正,如下所述。
返回图68,DPDC逻辑器738的输出随后被传给黑电平补偿(BLC)逻辑器739。BLC逻辑器739可独立地对用于统计信息收集的像素的每个颜色分量“c”(例如,Bayer模式的R,B,Gr和Gb)提供数字增益、偏移量和限幅。例如,如用下面的运算所示,首先使当前像素的输入值偏移带符号的值,随后乘以增益。
Y=(X+O[c])×G[c],(11)
其中,X代表给定颜色分量c(例如,R、B、Gr或Gb)的输入像素值,O[c]代表当前颜色分量c的带符号的16比特偏移量,G[c]代表颜色分量c的增益值。在一个实施例中,增益G[c]可以是具有2个整数比特和14个小数比特的16比特无符号数(例如,浮点表示法中的2.14),增益G[c]可被应用舍入。例如,增益G[c]可以具有在0~4X之间的范围(例如,4倍输入像素值)。
随后,如下面的公式12所示,带符号的计算值Y随后被限制到最小和最大范围:
Y=(Y<min[c])?min[c]:(Y>max[c])?max[c]:Y) (12)
变量min[c]和max[c]可以分别代表最小和最大输出值的带符号的16比特“限幅值”。在一个实施例中,BLC逻辑器739也可被配置成保持按颜色分量,分别高于最大值和低于最小值而被限幅的像素的数目的计数。
随后,BLC逻辑器739的输出被转发给透镜阴影校正(LSC)逻辑器740。LSC逻辑器740可被配置成基于每个像素地应用适当的增益,以补偿强度的降低,所述强度的降低通常大体粗略地与离成像设备30的透镜88的光心的距离成比例。可以理解,这种强度降低可以是透镜的几何光学的结果。例如,具有理想光学特性的透镜可被模拟成入射角的余弦的4次方,即cos4(θ),称为cos4定律。不过,由于透镜制造并不完美,因此透镜中的各种不规则性可导致光学性质偏离假定的cos4模型。例如,透镜的较薄的边缘通常表现出最大的不规则性。另外,透镜阴影模式中的不规则性也可能是图像传感器内的微镜阵列未与色彩滤镜阵列完全对准的结果。此外,一些透镜中的红外(IR)滤光片可导致所述强度降低取决于照明体,从而,可根据检测到的光源调适透镜阴影增益。
参见图71,图中图解说明描述典型透镜的光强度和像素位置的关系的三维轮廓756。如图所示,在透镜的中心757的光强度朝着透镜的角落或边缘758逐渐降低。在图71中描述的透镜阴影不规则性可用图72更好地图解说明,图72表示了朝着角落和边缘,表现出光强度的降低的图像759的彩图。特别地,应注意在图像的近似中心的光强度显得量于在图像的角落和/或边缘的光强度。
按照本发明技术的实施例,透镜阴影校正增益可被规定为每个颜色通道(例如,Bayer滤镜的Gr、R、B、Gb)的增益的二维网格的形式。增益网格点可按固定的水平间隔和垂直间隔分布在原始帧310(图23)内。如上面在图23中所述,原始帧310可包括激活区312,激活区312定义对于特定的图像处理操作来说,对其进行处理的区域。就透镜阴影校正操作来说,在原始帧区310内定义激活处理区(可被称为LSC区)。如下所述,LSC区必须完全在增益网格边界内或上,否则结果可以是不明确的。
例如,参见图73,图中表示了可在原始帧310内定义的LSC区60和增益网格761。LSC区760可以具有宽度762和高度763,可用相对于原始帧310的边界的x偏移量764和y偏移量765限定。还提供了从网格增益761的基数768到LSC区760中的第一像素769的网格偏移量(例如,网格x偏移量766和网络y偏移量767)。这些偏移量可以在给定颜色分量的第一网络间隔内。对于每个颜色通道,可分别独立地规定水平(x方向)和垂直(y方向)网格点间隔770和771。
如上所述,假定使用Bayer色彩滤镜阵列,那么可以定义网格增益的4个颜色通道(R、B、Gr和Gb)。在一个实施例中,可获得总共4K(4096)个网格点,并且对于每个颜色通道,可以提供网格增益的起始位置的基地址,比如利用指针。此外,可按一个颜色平面的分辨率,按像素定义水平(770)和垂直(771)网格点间隔,在一些实施例中,水平(770)和垂直(771)网格点间隔可以提供在水平方向和垂直方向分离2的幂(比如间隔8、16、32、64或128等)的网格点间隔。可以理解,通过利用2的幂,可以有效地实现利用位移(例如,除法)运算和加法运算的增益内插。通过利用这些参数,即使当图像传感器裁切区变化时,也能够使用相同的增益值。例如,使网格点对准裁切的区只需要更新几个参数(例如,更新网格偏移量770和771),而不是更新所有网格增益值。例如,当在数字变焦操作期间使用裁切时,这可以是有益的。此外,虽然在图73的实施例中表示的增益网格761被描述成具有大致间隔均匀的网格点,不过应明白在其它实施例中,网格点可以不一定必须间隔均匀。例如,在一些实施例中,网格点可以不均匀地分布(例如,对数分布),以致在LSC区760的中央,网格点不太集中,而是朝着LSC区760的通常透镜阴影畸变更显著的角落方向变得更集中。
按照目前公开的透镜阴影校正技术,当当前像素位置位于LSC区760之外时,不应用增益(例如,使像素无变化地通过)。当当前像素位置在增益网格位置时,可以使用在该特定网格点的增益值。不过,当当前像素位置在网格点之间时,可以利用双线性内插内插增益。下面提供对于图74上的像素位置“G”内插增益的例子。
如图74中所示,像素G在网格点G0、G1、G2和G 3之间,相对于当前像素位置G,网格点G0,G1,G2和G3分别对应于左上增益、右上增益、左下增益和右下增益。网格间隔的水平大小和垂直大小分别用X和Y表示。另外,ii和jj分别代表相对于左上增益G0的位置的水平和垂直像素偏移量。根据这些因数,可如下内插对应于位置G的增益:
随后可以组合上面的公式13a中的各项,以获得下述表达式:
在一个实施例中,可递增地执行内插方法,而不是在每个像素都利用乘法器,从而降低计算复杂性。例如,可以利用加法器实现项(ii)(jj),在增益网格761的位置(0,0),所述加法器可被初始化为0,并且每当当前列数增大一个像素时,使所述加法器递增当前行数。如上所述,由于X和Y的值可被选为2的幂,因此可以利用简单的移位运算完成增益内插。从而,只有在网格点G0(而不是在每个像素)需要乘法器,并且只需要加法运算就可确定剩余像素的内插增益。
在一些实施例中,网格点之间的增益的内插可以利用14比特精度,网格增益可以是具有2个整数比特和8个小数比特的无符号10比特值(例如,2.8浮点表示法)。利用这种约定,增益的范围可以为0~4X,网格点之间的增益分辨率可以为1/256。
图75中所示的处理772进一步图解说明透镜阴影校正技术。如图所示,处理772开始于步骤773,在步骤773,相对于图73的LSC区760的边界,确定当前像素的位置。之后,判决逻辑器774确定当前像素位置是否在LSC区760内。如果当前像素位置在LSC区760之外,那么处理772进入步骤775,并且不对当前像素应用任何增益(例如,像素无变化地通过)。
如果当前像素位置在LSC区760内,那么处理772进入判决逻辑器776,在判决逻辑器776,进一步确定当前像素位置是否对应于增益网格761内的网格点。如果当前像素位置对应于网格点,那么选择在该网格点的增益值,并将其应用于当前像素,如步骤777中所示。如果当前像素位置不对应于网格点,那么处理772进入步骤778,并根据边界网格点(例如,图74的G0、G1、G2和G3)内插增益。例如,可按照上面讨论的公式13a和13b,计算内插增益。之后,处理772结束于步骤779,在步骤779,把步骤778的内插增益应用于当前像素。
可以理解,可对图像数据的每个像素重复处理772。例如,如图76中所示,图中图解说明描述可对LSC区(例如,760)内的每个像素位置应用的增益的三维轮廓。如图所示,由于在角落的光强度的降低更大(如图71和72中所示),因此在图像的角落780应用的增益通常可以大于对图像的中心781应用的增益。利用目前描述的透镜阴影校正技术,可以减少或基本消除在图像中出现光强度降低的现象。例如,图77提供了在应用透镜阴影校正之后,源于图72的图像759的彩图。如图所示,与图72的初始图像相比,在整个图像内,总的光强度大体更均匀。特别地,在图像的近似中心的光强度可基本上与在图像的角落和/或边缘的光强度值相同。另外,如上所述,在一些实施例中,通过利用顺序行和列递增结构,内插增益计算(公式13a和13b)可用网格点之间的增加的“增量”替换。可以理解,这可降低计算复杂性。
在其它实施例中,除了使用网格增益之外,使用作为离图像中心的距离的函数,比例缩放每个颜色分量的全局增益。图像的中心可以被设置成输入参数,并且可通过分析均匀照明的图像中的每个图像像素的光强度幅度来估算图像的中心。随后,识别的中心像素和当前像素之间的径向距离可被用于获得线性比例缩放的径向增益Gr,如下所示:
Gr=Gp[c]×R, (14)
其中,Gp[c]代表每个颜色分量c(例如,Bayer模式的R、B、Gr和Gb分量)的全局增益参数,其中,R代表中心像素和当前像素之间的径向距离。
参见图78,图中表示上面讨论的LSC区760,可利用几种技术计算或估计距离R。如图所示,对应于图像中心的像素C可以具有坐标(x0,y0),当前像素G可以具有坐标(xG,yG)。在一个实施例中,LSC逻辑器740可利用下述公式计算距离R:
在另一个实施例中,可以使用下面所示的更简单的估计公式获得R的估计值。
R=α×max(abs(xG-x0),abs(yG-y0))+β×min(abs(xG-x0),abs(yG-y0))(16)
在公式16中,估计系数α和β可被比例缩放成8比特值。例如,在一个实施例中,α可以近似等于123/128,β可以近似等于51/128,以提供R的估计值。利用这些系数值,最大误差可约为4%,中位误差约为1.3%。从而,即使与利用计算技术来确定R(公式15)相比,所述估计技术可能稍微不太精确,不过误差范围仍然足够低,以致估计值或者R适合于为当前的透镜阴影校正技术确定径向增益分量。
随后,可把径向增益Gr乘以当前像素的内插网格增益值G(公式13a和13b),以确定可应用于当前像素的总增益。通过把输入像素值X乘以总增益获得输出像素Y,如下所示:
Y=(G×Gr×X) (17)
从而,按照本技术,可以利用仅内插增益,内插增益分量和径向增益分量两者,来进行透镜阴影校正。另一方面,也可以结合补偿径向近似误差的径向网格表,仅仅利用径向增益实现透镜阴影校正。例如,代替如图73中所示的矩形增益网格761,可以提供具有沿着径向方向和角方向定义增益的多个网格点的径向增益网格。从而,当确定应用于未与LSC区760内的径向网格点之一对准的像素的增益时,可以通过利用围绕该像素的四个网格点,应用内插,以确定适当的内插透镜阴影增益。
参见图79,利用处理782,图解说明内插增益分量和径向增益分量在透镜阴影校正中的使用。应注意,处理782可包括与上面在图75中说明的处理772类似的步骤。因而,这样的步骤用相同的附图标记编号。从步骤773开始,接收当前像素,并确定其相对于LSC区域760的位置。之后,判决逻辑器774确定当前像素位置是否在LSC区760内。如果当前像素位置在LSC区760外,那么处理782进入步骤775,不对当前像素应用任何增益(例如,该像素无变化地通过)。如果当前像素位置在LSC区760内,那么处理782可以同时进入步骤783和判决逻辑器776。首先参见步骤783,取回识别图像的中心的数据。如上所述,确定图像的中心可以包括分析在均匀照明条件下的各个像素的光强度幅度。这可在,例如,校准期间进行。从而,应明白步骤783不一定必须包含反复计算图像的中心,以便处理每个像素,而是可涉及取回预先确定的图像中心的数据(例如,坐标)。一旦识别了图像的中心,处理782就可以进入步骤784,在步骤784,确定图像中心和当前像素位置之间的距离(R)。如上所述,可以计算(公式15)或估计(公式16)R的值。随后,在步骤785,利用距离R和与当前像素的颜色分量对应的全局增益参数,计算径向增益分量Gr(公式14)。径向增益分量Gr可用于确定总增益,如在下面的步骤787中所述。
返回参见判决逻辑器776,确定当前像素位置是否对应于增益网格761内的网格点。如果当前像素位置对应于网格点,那么确定在该网格点的增益值,如在步骤786所示。如果当前像素位置不对应于网格点,那么处理782进入步骤778,根据边界网格点(例如,图74的G0、G1、G2和G 3)计算内插增益。例如,可按照上面说明的公式13a和13b,计算内插增益。随后,在步骤787,根据在步骤785确定的径向增益以及网格增益(步骤786)或内插增益(步骤778)之一,确定总增益。可以理解,这取决于在处理782中,判决逻辑器776进行哪个分枝。随后把总增益应用于当前像素,如步骤788所示。同样地,应注意类似于处理772,也可对图像数据的每个像素重复处理782。
结合网格增益使用径向增益可带来各种好处。例如,使用径向增益允许对所有颜色分量使用单个公共增益网格。这可大大减小保存每个颜色分量的单独增益网格所需的总存储空间。例如,在Bayer图像传感器中,对R、B、Gr和Gb分量分别使用单各增益网格可使增益网格数据减少约75%。可以理解,网格增益数据的这种减少可降低实现成本,因为网格增益数据表可以占图像处理硬件中的相当大部分的存储器或芯片面积。此外,取决于硬件实现,单组增益网格值的使用可带来另外的优点,比如减小总芯片面积(例如,当增益网格值被保存在片上存储器中时)和降低存储器带宽要求(比如,当增益网格值被保存在片外外部存储器中时)。
在详尽地说明了图68中所示的透镜阴影校正逻辑器740的功能后,LSC逻辑器740的输出随后被转发给反转黑电平补偿(IBLC)逻辑器741。IBLC逻辑器741独立地为每个颜色分量(例如,R、B、Gr和Gb)提供增益、偏移量和限幅,并且通常进行与BLC逻辑器739相反的功能。例如,如下面的运算所示,首先使输入像素的值乘以增益,随后使之偏移带符号的值。
Y=(X×G[c])+O[c], (18)
其中,X代表给定颜色分量c(例如,R、B、Gr或Gb)的输入像素值,O[c]代表当前颜色分量c的带符号16比特偏移量,G[c]代表颜色分量c的增益值。在一个实施例中,增益G[c]的范围可以约为0~4X(4倍输入像素值X)。应注意,这些变量可以是上面在公式11中讨论的相同变量。通过利用例如公式12,计算的值Y可被限制到最小和最大范围。在一个实施例中,IBLC逻辑器741可被配置成保持按颜色分量,分别高于最大值和低于最小值而被限幅的像素的数目的计数。
之后,统计信息收集块742接收IBLC逻辑器741的输出,统计信息收集块742可提供关于图像传感器90的各个统计数据点的收集,所述统计数据点比如是涉及自动曝光(AE)、自动白平衡(AWB)、自动聚焦(AF)、闪烁检测等的统计数据点。考虑到上述内容,下面参考图80-97说明统计信息收集块742的一些实施例和与之相关的各个方面。
可以理解,AWB、AE和AF统计信息可用在数字静态照相机以及摄像机中的图像获取中。为了简单起见,这里可把AWB、AE和AF统计信息共同称为“3A统计信息”。在图68中图解说明的ISP前端逻辑器的实施例中,可以用硬件、软件或它们的组合实现统计信息收集块742(“3A统计逻辑器”)的架构。此外,控制软件或固件可被用于分析用3A统计逻辑器742收集的统计数据,并控制透镜的各种参数(例如,焦距),传感器的各种参数(例如,模拟增益、积分时间),和IPS管线82的各种参数(例如,数字增益、颜色校正矩阵系数)。在一些实施例中,图像处理电路32可被配置成提供统计信息收集方面的灵活性,以使控制软件或固件能够实现各种AWB、AE和AF算法。
就白平衡(AWB)来说,在每个像素的图像传感器响应可取决于照明源,因为光源从图像场景中的物体被反射。从而,记录在图像场景中的每个像素值与光源的色温相关。例如,图80表示曲线图789,曲线图789图解说明YCbCr颜色空间的在低色温和高色温下的白色区域的颜色范围。如图所示,曲线图789的x轴和y轴分别代表YCbCr颜色空间的蓝色差色度(Cb)和红色差色度(Cr)。曲线图789还表示低色温轴790和高色温轴791。轴790和791所位于的区792代表YCbCr颜色空间中在低色温和高色温下的白色区域的颜色范围。不过应明白,YCbCr颜色空间仅仅是可以结合本实施例中的自动白平衡处理使用的颜色空间的一个例子。其它实施例可以利用任何适当的颜色空间。例如,在一些实施例中,其它适当的颜色空间可包括Lab(CIELab)颜色空间(例如,基于CIE 1976)、红/蓝归一化颜色空间(例如,R/(R+2G+B和B/(R+2G+B)颜色空间;R/G和B/G颜色空间;及Cb/Y和Cr/Y颜色空间等等)。因而,对本公开来说,3A统计逻辑器742使用的颜色空间的轴可被称为C1和C2(如图80中的情况)。
当在低色温下照明白色物体时,在拍摄的图像中,所述白色物体可显得略带红色。相反,在高色温下照明的白色物体在拍摄图像中可显得略带蓝色。于是,白平衡的目的是调整RGB值,以致在人眼看来,图像好像是在标准光(canonical light)下拍摄的。从而,在涉及白平衡的成像统计信息方面,收集与白色物体相关的颜色信息,以确定光源的色温。通常,白平衡算法可以包括两个主要步骤。首先,估计光源的色温。其次,使用估计的色温调整颜色增益值和/或确定/调整颜色校正矩阵的系数。这样的增益可以是模拟和数字图像传感器增益的组合,以及ISP数字增益。
例如,在一些实施例中,可以利用多个不同的参考照明体校准成像设备30。因而,通过选择与最接近地匹配当前场景的照明体的参考照明体对应的颜色校正系数,可确定当前场景的白点。例如,一个实施例可利用5个参考照明体(一个低色温照明体、一个中低色温照明体、一个中色温照明体、一个中高色温照明体和一个高色温照明体),校准成像设备30。如图81中所示,一个实施例可以利用下述颜色校正简档来定义白平衡增益:Horizon(H)(模拟约2300度的色温)、Incandescent(A或IncA)(模拟约2856度的色温)、D50(模拟约5000度的色温)、D65(模拟约6500度的色温)和D75(模拟约7500度的色温)。
取决于当前场景的照明体,可利用与最接近地匹配当前照明体的参考照明体对应的增益,确定白平衡增益。例如,如果统计逻辑器742(下面在图82中更详细说明)确定当前照明体近似匹配参考中色温照明体D50,那么对红色通道和蓝色通道可分别应用约1.37和1.23的白平衡增益,而对绿色通道(Bayer数据的G0和G1)近似不应用增益(1.0)。在一些实施例中,如果当前照明体色温在两个参考照明体之间,那么可通过在两个参考照明体之间内插白平衡增益来确定白平衡增益。此外,虽然本例表示利用H、A、D50、D65和D75照明体校准成像设备,不过应明白任何适当种类的照明体,比如TL84或CWF(荧光参考照明体)等等,可用于照相机校准。
如下进一步所述,对于AWB可以提供若干统计信息,包括二维(2D)颜色直方图、和RGB或YCC总和,以提供多个可编程颜色范围。例如,在一个实施例中,统计逻辑器742可提供多个像素滤波器的组,可为AWB处理选择其中的多个像素滤波器的一个子组。在一个实施例中,可以提供8个滤波器组,每个滤波器组具有不同的可配置参数,可从用于收集分块统计信息以及用于收集每个浮动窗的统计信息的组中选择3组颜色范围滤波器。例如,第一个选择的滤波器可被配置成覆盖当前色温,以获得准确的颜色估计,第二个选择的滤波器可被配置成覆盖低色温区,第三个选择的滤波器可被配置成覆盖高色温区。这种特殊结构可使AWB算法可以在光源变化的时候,调整当前色温区。此外,2D颜色直方图可被用于确定全局和局部照明体,并确定用于累积RGB值的各种像素滤波器阈值。同样,应明白3个像素滤波器的选择只为了仅仅举例说明一个实施例。在其它实施例中,可以为AWB统计信息选择更少或更多的像素滤波器。
此外,除了选择3个像素滤波器之外,额外的一个像素滤波器也可用于自动曝光(AE),自动曝光通常指的是调整像素积分时间和增益,以控制捕获的图像的亮度的处理。例如,通过设定积分时间,自动曝光可控制用图像传感器捕捉的来自场景的光的量。在一些实施例中,亮度统计信息的分块和浮动窗可利用3A统计逻辑器742收集,并被处理,以确定积分和增益控制参数。
此外,自动聚焦可以指确定透镜的最佳焦距,以大大优化图像的聚焦。在一些实施例中,可以收集高频统计信息的浮动窗,并且可以调整透镜的焦距以使图像对焦。如下进一步所述,在一个实施例中,自动聚焦调整可以利用基于一种或多种度量(称为自动聚焦评分(AF评分))的粗调和微调,以使图像对焦。此外,在一些实施例中,可对不同的颜色确定AF统计信息/评分,每种颜色通道的AF统计信息/评分之间的相对性可被用于确定聚焦的方向。
从而,可利用统计信息收集块742确定和收集这些各种类型的统计信息等等。如图所示,Sensor0统计信息处理单元142的统计信息收集块742的输出STATS0可被发送给存储器108,并路由给控制逻辑器84,或者另一方面,可被直接发送给控制逻辑器84。此外,应明白,Sensor1统计信息处理单元144也可以包括提供统计信息STATS1的类似结构的3A统计信息收集块,如图10中所示。
如上所述,控制逻辑器84(可以是设备10的ISP子系统32中的专用处理器)可处理收集的统计数据,以确定用于控制成像设备30和/或图像处理电路32的一个或多个控制参数。例如,这样的控制参数可包括用于操作成像传感器90的透镜的参数(例如,焦距调整参数)、图像传感器参数(例如,模拟和/或数字增益、积分时间)、以及ISP管道处理参数(例如,数字增益值、颜色校正矩阵(CCM)系数)。另外,如上所述,在一些实施例中,可按8比特精度进行统计处理,从而,具有更高位深度的原始像素数据可被下采样成8比特格式,以便进行统计。如上所述,下采样到8比特(或者任何其它低比特分辨率)可以减小硬件大小(例如,面积),还降低处理复杂性,以及使统计数据对噪声更鲁棒(例如,通过利用图像数据的空间平均)。
考虑到上述内容,图82是描述实现3A统计逻辑器742的一个实施例的逻辑器的方框图。如图所示,3A统计逻辑器742可接收代表Bayer RGB数据的信号793,如图68中所示,所述信号793可对应于反转BLC逻辑器741的输出。3A统计逻辑器742可处理Bayer RGB数据793,从而获得各种统计信息794,所述各种统计信息794可以代表3A统计逻辑器742的输出STATS0,如图68中所示;或者可替换地,代表与Sensor1统计信息处理单元144相关的统计逻辑器的输出STATS1。
在图解说明的实施例中,为了使统计信息对噪声更鲁棒,逻辑器795首先平均进入的Bayer RGB像素793。例如,可按由4个2×2Bayer四元组(例如,代表Bayer模式的2×2像素块)组成的4×4传感器像素的窗口大小进行平均,并且可以计算4×4窗口中的平均后的红色(R)、绿色(G)和蓝色(B)值,并将其转换成8比特,如上所述。参考图83更详细地说明该处理,图83表示形成为4个2×2Bayer四元组797的像素的4×4窗口796。利用这种安排,每个颜色通道包括窗口796内的对应像素的2×2块,相同颜色的像素可被求和及平均,从而产生窗口796内的每个颜色通道的平均颜色值。例如,红色像素799可被求平均值,从而获得平均红色值(RAV)803;蓝色像素800可被求平均值,从而获得样本796内的平均蓝色值(BAV)804。就绿色像素的求平均值来说,可以利用若干技术,因为Bayer模式具有两倍于红色或蓝色样本的绿色样本。在一个实施例中,可通过仅仅求Gr像素798的平均值,仅仅求Gb像素801的平均值,或者一起求所有Gr和Gb像素798和801的平均值,来获得平均绿色值(GAV)802。在另一个实施例中,可以求每个Bayer四元组797中的Gr和Gb像素798和801的平均值,并且可进一步一起求各个Bayer四元组797的绿色值的平均值,以获得GAV802。可以理解,跨多个像素块对像素值的求平均值可降低噪声。此外,应明白,使用4×4块作为窗口样本仅仅意图提供一个例子。事实上,在其它实施例中,可以利用任何适当的块大小(例如,8×8、16×16、32×32等等)。
之后,下采样的Bayer RGB值806被输入颜色空间变换逻辑器单元807和808。由于一些3A统计数据可能依赖于应用颜色空间变换之后的像素,因此颜色空间变换(CSC)逻辑器807和CSC逻辑器808可被配置成把下采样的Bayer RGB值806变换到一个或多个其它颜色空间中。在一个实施例中,CSC逻辑器807可提供非线性空间变换,CSC逻辑器808可提供线性空间变换。从而,CSC逻辑器单元807和808可把来自传感器Bayer RGB的原始图像数据变换到对于进行用于白平衡的白点估计更理想或更适当的另一个颜色空间(例如,sRGBlinear,sRGB,YCbCr等等)。
在本实施例中,非线性CSC逻辑器807可被配置成进行3×3矩阵乘法,之后是实现成查寻表的非线性映射,再之后是另一个3×3矩阵乘法和附加偏移量。这允许3A统计信息颜色空间变换对给定色温复制在ISP管线82中的RGB处理的颜色处理(例如,应用白平衡增益、应用颜色校正矩阵、应用RGB伽玛调整、和进行颜色空间变换)。它还可以提供BayerRGB值到颜色更一致的颜色空间,比如CIELab,或者上面讨论的任意其它颜色空间(例如,YCbCr、红/蓝归一化颜色空间等)的变换。在一些条件下,Lab颜色空间可更适合于白平衡运算,因为色度相对于亮度更加线性。
如图82中所示,Bayer RGB比例缩小信号806的输出像素由第一个3×3颜色校正矩阵(3A_CCM)808处理。在本实施例中,3A_CCM 809可被配置成从照相机RGB颜色空间(camRGB)变换到线性sRGB校准空间(sRGBlinear)。下面用公式19-21提供可在一个实施例中使用的可编程颜色空间变换:
sRlinear=max(0,min(255,(3A_CCM_00*R+3A_CCM_01*G+3A_CCM_02*B)));(19)
sGlinear=max(0,min(255,(3A_CCM_10*R+3A_CCM_11*G+3A_CCM_12*B)));(20)
sBlinear=max(0,min(255,(3A_CCM_20*R+3A_CCM_21*G+3A_CCM_22*B)));(21)
其中,3A_CCM_00~3A_CCM_22代表矩阵808的带符号的系数。从而,可如下确定sRGBlinear颜色空间的各个sRlinear,sGlinear和sBlinear分量:首先确定在应用对应的3A_CCM系数的情况下,红色、蓝色和绿色下采样BayerRGB值的总和,随后如果该值超过255或者小于0,那么把该值限幅为0或255(8比特像素数据的最小和最大像素值)。作为结果的sRGBlinear值在图82中用附图标记810表示成3A_CCM 809的输出。另外,3A统计逻辑器742可保持各个sRlinear、sGlinear和sBlinear分量的限幅像素的数目的计数,如下所示:
3A_CCM_R_clipcount_low:限幅的小于0的sRlinear像素的数目
3A_CCM_R_clipcount_high:限幅的大于255的sRlinear像素的数目
3A_CCM_G_clipcount_low:限幅的小于0的sGlinear像素的数目
3A_CCM_G_clipcount_high:限幅的大于255的sGlinear像素的数目
3A_CCM_B_clipcount_low:限幅的小于0的sBlinear像素的数目
3A_CCM_B_clipcount_high:限幅的大于255的sBlinear像素的数目
之后,可利用非线性查寻表811处理sRGBlinear像素810,从而产生sRGB像素812。查寻表811可包含8比特值的条目,每个表条目值代表输出电平。在一个实施例中,查寻表811可包含65个均匀分布的输入条目,其中,表索引代表步长为4的输入值。当输入值落入间隔之间时,输出值被线性内插。
可以理解,sRGB颜色空间可代表对于给定白点,由成像设备30(图7)产生的最终图像的颜色空间,因为白平衡统计信息收集是在成像设备产生的最终图像的颜色空间中进行的。在一个实施例中,通过根据,例如,红-绿和/或蓝-绿比,匹配图像场景的特性和一个或多个参考照明体,可确定白点。例如,一个参考照明体可以是D65,模拟日光条件的CIE标准照明体。除了D65之外,也可对于其它不同的参考照明体进行成像设备30的校准,并且白平衡确定处理可包括确定当前照明体,以致可根据对应的校准点,对当前照明体调整处理(例如,色平衡)。例如,在一个实施例中,除了D65之外,还可利用冷白色荧光(CWF)参考照明体、TL84参考照明体(另一种荧光源)和模拟白炽灯照明的IncA(或者A)参考照明体,校准成像设备30和3A统计逻辑器742。另外,如上所述,在用于白平衡处理的照相机校准中,还可使用对应于不同色温的各种其它照明体(例如,H、IncA、D50、D65和D75等)。从而,通过分析图像场景并确定哪个参考照明体最接近地匹配当前照明光源,可确定白点。
仍然参见非线性CSC逻辑器807,可用第二个3×3颜色校正矩阵813(这里称为3A_CSC)进一步处理查寻表811的sRGB像素输出812。在描述的实施例中,3A_CSC矩阵813被表示成配置成从sRGB颜色空间变换到YCbCr颜色空间,尽管其也可被配置成把sRGB值变换到其它颜色空间。例如,可以使用下述可编程颜色空间变换(公式22~27):
Y=3A_CSC_00*sR+3A_CSC_01*sG+3A_CSC_02*sB+3A_OffsetY; (22)
Y=max(3A_CSC_MIN_Y,min(3A_CSC_MAX_Y,Y)); (23)
C1=3A_CSC_10*sR+3A_CSC_11*sG+3A_CSC_12*sB+3A_OffsetC1;(24)
C1=max(3A_CSC_MIN_C1,min(3A_CSC_MAX_C1,C1)); (25)
C2=3A_CSC_20*sR+3A_CSC_21*sG+3A_CSC_22*sB+3A_OffsetC2;(26)
C2=max(3A_CSC_MIN_C2,min(3A_CSC_MAX_C2,C2)); (27)
其中,3A_CSC_00~3A_CSC_22代表矩阵813的带符号系数,3A_OffsetY、3A_OffsetC1和3A_OffsetC2代表带符号偏移量,C1和C2分别代表不同的颜色(这里,蓝色差色度(Cb)和红色差色度(Cr))。不过应明白,C1和C2可以代表任何适当的不同色度的颜色,不一定是Cb和Cr颜色。
如公式22~27中所示,在确定YCbCr的每个分量时,对sRGB值812应用矩阵813的适当系数,并且把结果与对应的偏移量相加(例如,公式22、24和26)。本质上,该步骤是3×1矩阵乘法步骤。随后,把矩阵乘法的结果限幅在最大值和最小值之间(例如,公式23、25和27)。相关的最小和最大限幅值是可以是可编程的,并且可以取决于,例如,使用的特定成像或视频标准(例如,BT.601或BT.709)。
3A统计逻辑器742还保持Y、C1和C2分量的各自的限幅像素的数目的计数,如下所示:
3A_CSC_Y_clipcount_low:限幅的小于3A_CSC_MIN_Y的Y像素的数目
3A_CSC_Y_clipcount_high:限幅的大于3A_CSC_MAX_Y的Y像素的数目
3A_CSC_C1_clipcount_low:限幅的小于3A_CSC_MIN_C1的C1像素的数目
3A_CSC_C1_clipcount_high:限幅的大于3A_CSC_MAX_C1的C1像素的数目
3A_CSC_C2_clipcount_low:限幅的小于3A_CSC_MIN_C2的C2像素的数目
3A_CSC_C2_clipcount_high:限幅的大于3A_CSC_MAX_C2的C2像素的数目
Bayer RGB下采样信号806的输出像素也可被提供给线性颜色空间变换逻辑器808,线性颜色空间变换逻辑器808可被配置成实现相机颜色空间变换。例如,Bayer RGB下采样逻辑器795的输出像素806可用CSC逻辑器808的另一个3×3颜色变换矩阵(3A_CSC2)815处理,以从传感器RGB(camRGB)变换成线性白平衡颜色空间(camYC1C2),其中,C1和C2可以分别对应于Cb和Cr。在一个实施例中,可按亮度比例缩放色度像素,在实现具有改进的颜色一致性,并且对归因于亮度变化的颜色移位更鲁棒的滤色镜方面,这是有益的。下面在公式28~31中提供如何利用3×3矩阵815,进行相机颜色空间变换的例子:
camY=3A_CSC2_00*R+3A_CSC2_01*G+3A_CSC2_02*B+3A_Offset2Y;(28)
camY=max(3A_CSC2_MIN_Y,min(3A_CSC2_MAX_Y,camY)); (29)
camC1=(3A_CSC2_10*R+3A_CSC2_11*G+3A_CSC2_12*B); (30)
camC2=(3A_CSC2_20*R+3A_CSC2_21*G+3A_CSC2_22*B); (31)
其中,3A_CSC2_00~3A_CSC2_22代表矩阵815的带符号系数,3A_Offset2Y代表camY的带符号的偏移量,camC1和camC2分别代表不同的颜色(这里,蓝色差色度(Cb)和红色差色度(Cr))。如公式28中所示,为了确定camY,把矩阵815的对应系数应用于bayer RGB值806,并且把结果与3A_Offset2Y相加。随后把结果限幅在最大值和最小值之前,如公式29中所示。如上所述,限幅界限可以是可编程的。
此时,输出816的camC1和camC2像素是带符号的。如上所述,在一些实施例中,色度像素可被比例缩放。例如,下面表示了实现色度比例缩放的一种技术:
camC1=camC1*ChromaScale*255/(camY?camY:1);(32)
camC2=camC2*ChromaScale*255/(camY?camY:1);(33)
其中,ChromaScale代表在0~8之间的浮点比例系数。在公式32和33中,表达式(camY?camY:1)意图避免被零除的情形。即,如果camY等于0,那么camY的值被设定为1。此外,在一个实施例中,ChromaScale可以被设定成两个可能值之一,取决于camC1的符号。例如,如下面在公式34中所示,如果camC1为负,那么ChomaScale可以被设定成第一个值(ChromaScale0),否则可以被设定为第二个值(ChromaScale1):
ChromaScale=ChromaScale0 if(camC1<0) (34)
ChromaScale1 otherwise
之后,加入色度偏移量,camC1和camC2色度像素被限幅,如下面在公式35和36中所示,以产生对应的无符号像素值:
camC1=max(3A_CSC2_MIN_C1,min(3A_CSC2_MAX_C1,(camC1+3A_Offset2C1))) (35)
camC2=max(3A_CSC2_MIN_C2,min(3A_CSC2_MAX_C2,(camC2+3A_Offset2C2))) (36)
其中,3A_CSC2_00~3A_CSC2_22是矩阵815的带符号系数,3A_Offset2C1和3A_Offset2C2是带符号偏移量。此外,为对于camY、camC1和camC2被限幅的像素的数目计数,如下所示:
3A_CSC2_Y_clipcount_low:小于限幅的3A_CSC2_MIN_Y的camY像素的数目
3A_CSC2_Y_clipcount_high:大于限幅的3A_CSC2_MAX_Y的camY像素的数目
3A_CSC2_C1_clipcount_low:小于限幅的3A_CSC2_MIN_C1的camC1像素的数目
3A_CSC2_C1_clipcount_high:大于限幅的3A_CSC2_MAX_C1的camC1像素的数目
3A_CSC2_C2_clipcount_low:小于限幅的3A_CSC2_MIN_C2的camC2像素的数目
3A_CSC2_C2_clipcount_high:大于限幅的3A_CSC2_MAX_C2的camC2像素的数目
从而,在本实施例中,非线性和线性颜色空间变换逻辑器807和808可提供各种颜色空间中的像素数据:sRGBlinear(信号810)、sRGB(信号812)、YCbYr(信号814)和camYCbCr(信号816)。应明白,每个变换矩阵809(3A_CCM)、813(3A_CSC)和815(3A_CSC2)的系数,以及查寻表811中的值是可以独立设定和编程的。
仍然参见图82,来自非线性颜色空间变换(YCbCr 814)或相机颜色空间变换(camYCbCr 816)的色度输出像素可用于产生二维(2D)颜色直方图817。如图所示,可被实现成多路复用器,或者用任何其它适当逻辑器实现的选择逻辑器818和819可被配置成在来自非线性颜色空间变换或相机颜色空间变换的亮度和色度像素之间进行选择。选择逻辑器818和819可响应相应的控制信号工作,在一个实施例中,所述控制信号可由图像处理电路32(图7)的主控制逻辑器84提供,并可借助软件设定。
对本例来说,可以假定选择逻辑器818和819选择YC1C2颜色空间变换(814),其中,第一分量是亮度,C1,C2是第一和第二颜色(例如,Cb,Cr)。对一个窗口生成C1-C2颜色空间中的2D直方图817。例如,可利用列起点和宽度,以及行起点和高度,规定所述窗口。在一个实施例中,窗口位置和大小可被设定成4像素的倍数,并且32×32分箱(bin)可用于总共1024个分箱。分箱边界可以处于固定间隔,为了在颜色空间中的特定区域中允许直方图收集的变焦和摇摄,可以定义像素缩放比例和偏移量。
偏移和比例缩放之后的C1和C2的高位5比特(代表总共32个值)可用于确定分箱。C1和C2的分箱索引(这里用C1_index和C2_index表示)可如下确定:
C1_index=((C1-C1_offset)>>(3-C1_scale) (37)
C2_index=((C2-C2_offset)>>(3-C2_scale) (38)
一旦确定了索引,如果分箱索引在范围[0,31]中,那么就使颜色直方图分箱递增Count值(在一个实施例中,它可以具有在0和3之间的值),如下面在公式39中所示。实际上,这允许根据亮度值,对颜色计数加权(例如,越亮的像素加权越大,而不是平等地加权所有像素(例如,×1))。
if(C1_index>=0&&C1_index<=31&&C2_index>=0&&C2_index<=31)
(39)
StatsCbCrHist[C2_index&31][C1_index&31]+=Count;
其中,Count是根据选择的亮度值(本例中的Y)确定的。可以理解,用公式37、38和39表示的步骤可用分箱更新逻辑器块821实现。此外,在一个实施例中,可以设定多个亮度阈值以定义亮度区间。例如,4个亮度阈值(Ythd0~Ythd3)可定义5个亮度区间,并且对于每个区间定义Count值Count0~4。可以根据如下所示的亮度阈值,选择Count0~Count4(例如,用像素条件逻辑器820):
if (Y<=Ythd0) (40)
Count=Count0
else if(Y<=Ythd1)
Count=Count1
else if(Y<=Ythd2)
Count=Count2
else if(Y<=Ythd3)
Count=Count3
else
Count=Count4
考虑到上述内容,图84图解说明对于C1和C2,缩放比例和偏移量被设定为0的颜色直方图。CbCr空间内的分割代表每个32×32分箱(总共1024个分箱)。图85提供用于附加的精度的2D颜色直方图内的变焦和摇摄的例子,其中,小矩形区域822指定32×32分箱的位置。
在图像数据的一帧的开始,分箱值被初始化为0。对于进入2D颜色直方图817的每个像素,使对应于匹配C1C2值的分箱递增确定的Count值(Count0~Count4),如上所述,所述Count值可以亮度值为基础。对于在2D直方图817内的每个分箱,报告总的像素计数,作为收集的统计数据(例如STATS0)的一部分。在一个实施例中,每个分箱的总像素计数可以具有22比特的分辨率,从而提供等于1024×22比特的内部存储器的分配。
返回参见图82,Bayer RGB像素(信号806)、sRGBlinear像素(信号810)、sRGB像素(信号812)和YC1C2(例如,YCbCr)像素(信号814)被提供给一组像素滤波器824a-c,从而基于每个像素滤波器824定义的camYC1C2或YC1C2像素条件,有条件地累加RGB、sRGBlinear、sRGB、YC1C2或camYC1C2的和。即,来自非线性颜色空间变换(YC1C2)的输出或者相机颜色空间变换(camYC1C2)的输出的Y、C1和C2值被用于有条件地选择RGB、sRGBlinear、sRGB或YC1C2,以便累加。虽然本实施例把3A统计逻辑器742描述成具有设置的8个像素滤波器(PF0~PF7),不过应明白可以设置任意数目的像素滤波器。
图86表示描述像素滤波器,具体地说,图82的PF0(824a)和PF1(824b)的实施例的功能逻辑器图。如图所示,每个像素滤波器824包括接收Bayer RGB像素、sRGBlinear像素、sRGB像素,和由另一个选择逻辑器826选择的YC1C2或camYC1C2像素的选择逻辑器。例如,选择逻辑器825和826可以利用多路复用器或者任何其它适当的逻辑器实现。选择逻辑器826可选择YC1C2或camYC1C2。可以响应由图像处理电路32(图7)的主控制逻辑器84提供的和/或用软件设定的控制信号,做出所述选择。之后,像素滤波器824可以利用逻辑器827,针对照像素条件评估选择逻辑器826选择的YC1C2像素(例如非线性或照相机)。每个像素滤波器824可使用选择电路825选择Bayer RGB像素、sRGBlinear像素、sRGB像素,和取决于选择电路826的输出的YC1C2或camYC1C2中的一个。
利用评估结果,可以累加选择逻辑器825选择的像素(828)。在一个实施例中,可利用如图80的曲线图79中所示的阈值C1_min、C1_max、C2_min、C2_max定义像素条件。如果像素满足下述条件,那么该像素被包含在统计信息中:
1.C1_min<=C1<=C1_max
2.C2_min<=C2<=C2_max
3.abs((C2_delta*C1)-(C1_delta*C2)+Offset)<distance_max
4.Ymin<=Y<=Ymax
参见图87的曲线图829,在一个实施例中,点830代表与逻辑器826选择的当前YC1C2像素数据对应的值(C2,C1)。C1_delta可被确定成C1_1和C1_0之间的差值,C2_delta可被确定成C2_1和C2_0之间的差值。如图87中所示,点(C1_0,C2_0)和(C1_1,C2_1)可以定义C1和C2的最小边界和最大边界。通过把C1_delta乘以直线831与轴C2的交点的值832(C2_intercept),可以确定Offset。从而,假定Y、C1和C2满足最小和最大边界条件,那么如果其到直线831的距离833小于distance_max834,则选择的像素(Bayer RGB、sRGBlinear、sRGB和YC1C2/camYC1C2)被包括在累加和中,distance_max 834可以是像素到所述直线的距离833与归一化因数的乘积。
distance_max=distance*sqrt(C1_delta^2+C2_delta^2)
在本实施例中,距离C1_delta和C2_delta的范围可以为-255~255。从而,distance_max 834可用17比特表示。可以提供点(C1_0,C2_0)和(C1_1,C2_1),以及用于确定distance_max的参数(例如,归一化因数),作为每个像素滤波器824中的像素条件逻辑器827的一部分。可以理解,像素条件827可以是可配置/可编程的。
虽然图87中所示的例子描述基于两组点(C1_0,C2_0)和(C1_1,C2_1)的像素条件,不过在其它实施例中,某些像素滤波器可以定义依据其确定像素条件的更复杂的形状和区域。例如,图88表示其中像素滤波器824可利用点(C1_0,C2_0)、(C1_1,C2_1)、(C1_2,C2_2)和(C1_3,C2_3)和(C1_4,C2_4),定义五边形835的实施例。每条边836a~836e可以定义线条件。不过,不同于图87中所示的情况(例如,像素可以在直线831的任意一侧,只要distance_max被满足),该条件可以是像素(C1,C2)必须位于线条836a~836e的使得像素(C1,C2)被多边形835包围的一侧。从而,当多个线条件的交集被满足时,对像素(C1,C2)计数。例如,在图88中,对像素837a来说,发生这样的交集。不过,像素837b未能满足直线836d的线条件,于是,当用按照这种方式构成的像素滤波器处理时,像素837b不会被计入统计信息中。
在图89中表示的另一个实施例中,可根据重叠形状确定像素条件。例如,图89表示像素滤波器824如何具有利用两个重叠形状定义的像素条件,这里,所述两个重叠形状是分别用点(C1_0,C2_0)、(C1_1,C2_1)、(C1_2,C2_2)和(C1_3,C2_3),以及点(C1_4,C2_4)、(C1_5,C2_5)、(C1_6,C2_6)和(C1_7,C2_7)定义的矩形838a和838b。在本例中,通过被封闭在由形状838a和838b共同限制的区域内(例如,通过满足定义两个形状的每条线的线条件),像素(C1,C2)可以满足由这样的像素滤波器定义的线条件。例如,在图89中,对像素839a来说,这些条件被满足。不过,像素839b未能满足这些条件(尤其是对于矩形838a的线840a和矩形88b的线840b),于是,当被按照这种方式构成的像素滤波器处理时,不会被计入统计信息中。
对于每个像素滤波器824来说,根据用逻辑器827定义的像素条件,识别合格的像素,对于合格的像素值,3A统计信息引擎742可收集下述统计信息:32比特和:(Rsum、Gsum、Bsum)或(sRlinear_sum、sGlinear_sum、sBlinear_sum),或者(sRsum,sGsum,sBsum)或(Ysum,C1sum,C2sum),和24比特像素计数Count,像素计数Count可代表包括在统计信息中的像素的数目的总和。在一个实施例中,软件可以使用所述总和产生分块或窗口内的平均值。
当像素滤波器824的逻辑器825选择camYC1C2像素时,可以对比例缩放的色度值进行颜色阈值。例如,由于在白点的色度强度随着亮度值增大,因此,在一些情况下,像素滤波器824中随着亮度值比例缩放的色度的使用可提供一致性改善的结果。例如,最小和最大亮度条件可允许滤波器忽略阴暗和/或明亮的区域。如果像素满足YC1C2像素条件,那么累加RGB、sRGBlinear、sRGB或YC1C2值。选择逻辑器825对像素值的选择可取决于所需信息的种类。例如,对白平衡来说,一般选择RGB或sRGBlinear像素。YCC或sRGB像素集更适合于检测特定的条件,比如天空、草地、肤色等。
在本实施例中,可以定义分别与每个像素滤波器PF0~PF7824关联的8组像素条件。可以定义一些像素条件,以切割C1-C2颜色空间(图80)中白点很可能位于的区域。这可根据当前照明体确定或估计。随后,可以使用累加的RGB和,根据白平衡调整的R/G和/或B/G比,确定当前白点。此外,可以定义或修改一些像素条件,以进行场景分析和分类。例如,可以使用一些像素滤波器824和窗口/分块来检测条件,比如图像帧的顶部中的蓝色天空、或者图像帧的底部中的绿色草地。该信息也可用于调整白平衡。另外,可以定义或修改一些像素条件以检测肤色。对于这样的滤波器,可以使用分块来检测图像帧的具有肤色的区域。通过识别这些区域,可以通过减少肤色区域中的噪声滤波器的量和/或减小这些区域中的视频压缩的量化来改善肤色的质量,从而提高质量。
3A统计逻辑器742还可提供亮度数据的收集。例如,源于相机颜色空间变换camYC1C2)的亮度值camY可用于累积亮度总和统计信息。在一个实施例中,3A统计逻辑器742可收集下述亮度信息:
Ysum :camY的总和
cond(Ysum):满足条件Ymin<=camY<Ymax的camY的总和
Ycount1:camY<Ymin情况下的像素的计数
Ycount2:camY>=Ymax情况下的像素的计数
这里,Ycount1可以代表曝光不足的像素的数目,Ycount2代表曝光过度的像素的数目。这可用于确定图像是否曝光过度或曝光不足。例如,如果像素不饱和,那么camY的总和(Ysum)可指示场景中的平均亮度,这可用于实现目标AE曝光。例如,在一个实施例中,通过把Ysum除以像素的数目,可以确定平均亮度。此外,通过了解分块统计和窗口位置的亮度/AE统计信息,可以进行AE测定。例如,取决于图像场景,可取的是与在图像边缘的AE统计信息相比,对在中心窗口的AE统计信息赋予更大的权重,比如就肖像来说可以这样。
在目前图解说明的实施例中,3A统计信息收集逻辑器可被配置成收集分块和窗口中的统计信息。在图解说明的结构中,可为分块统计信息863定义一个窗口。可用列起点和宽度,和行起点和高度定义所述窗口。在一个实施例中,窗口位置和大小可被选为4个像素的倍数,在所述窗口内,按任意大小的分块收集统计信息。例如,可以这样选择窗口中的所有分块,以致它们具有相同的大小。可对于水平方向和垂直方向,独立地设定分块大小,在一个实施例中,可以设定水平分块的数目的最大极限(例如,128个水平分块的极限)。此外,在一个实施例中,最小分块大小可被设置成,例如,8像素宽×4像素高。下面是为了获得16×16分块的窗口,基于不同的视频/成像模式和标准的分块配置的一些例子:
VGA 640x480:分块间隔40x30pixels
HD 1280x720:分块间隔80x45pixels
HD 1920x1080:分块间隔120x68pixels
5MP 2592x1944:分块间隔162x122pixels
8MP 3280x2464:分块间隔205x154pixels
就本实施例来说,从8个可用的像素滤波器824(PF0~PF7)中,可为分块统计信息863选择4个像素滤波器。对于每个分块,可以收集下述统计信息:
(Rsum0,Gsum0,Bsum0)或(sRlinear_sum0,sGlinear_sum0,sBlinear_sum0),或者
(sRsum0,sGsum0,sBsum0)或(Ysum0,C1sum0,C2sum0),Count0
(Rsum1,Gsum1,Bsum1)或(sRlinear_sum1,sGlinear_sum1,sBlinear_sum1),或者
(sRsum1,sGsum1,sBsum1)或(Ysum1,C1sum1,C2sum1),Count1
(Rsum2,Gsum2,Bsum2)或(sRlinear_sum2,sGlinear_sum2,sBlinear_sum2),或者
(sRsum2,sGsum2,sBsum2)或(Ysum2,C1sum2,C2sum2),Count2
(Rsum3,Gsum3,Bsum3)或(sRlinear_sum3,sGlinear_sum3,sBlinear_sum3),或者
(sRsum3,sGsum3,sBsum3)或(Ysum3,C1sum3,C2sum3),Count 3,或者
Ysum,cond(Ysum),Ycount1,Ycount2(来自camY)
在上面列举的统计信息中,Count0~3代表满足与选择的4个像素滤波器对应的像素条件的像素的计数。例如,如果像素滤波器PF0,PF1,PF5和PF6被选为特定分块或窗口的4个像素滤波器,那么上面提及的表达式可以对应于与(例如,由选择逻辑器825)为这些滤波器选择的像素数据(例如,Bayer RGB,sRGBlinear,sRGB,YC1Y2,camYC1C2)对应的计数值及总和。另外,Count值可用于使统计信息归一化(例如,通过把颜色总和除以对应的Count值)。如上所示,至少部分取决于所需的统计信息的种类,选择的像素滤波器824可被配置成选择Bayer RGB,sRGBlinear,或sRGB像素数据,或者YC1C2(取决于逻辑器826的选择的非线性或相机颜色空间变换)像素数据之一,并确定所选像素数据的颜色总和统计信息。另外,如上所述,还为用于自动曝光(AE)统计信息的亮度总和信息,收集源于相机颜色空间变换(camYC1C2)的亮度值camY。
另外,3A统计逻辑器还可被配置成为多个窗口收集统计信息861。例如,在一个实施例中,可以使用多达8个浮动窗口,所述窗口可以是在各维(例如,高度×宽度)具有4像素的整数倍,一直到与图像帧的大小对应的最大大小的任意矩形区域。不过,窗口的位置不一定必须局限于4像素的倍数。例如,窗口可以相互重叠。
在本实施例中,可以为每个窗口,从可用的8个像素滤波器(PF0~PF7)中选择4个像素滤波器824。可按照和如上所述的、用于分块的相同方式收集每个窗口的统计信息。从而,对于每个窗口,可以收集下述统计信息861:
(Rsum0,Gsum0,Bsum0)或sRlinear_sum0,sGlinear_sum0,sBlinear_sum0),或者
(sRsum0,sGsum0,sBsum0)或(Ysum0,C1sum0,C2sum0),Count 0
(Rsum1,Gsum1,Bsum1)或(sRlinear_sum1,sGlinear_sum1,sBlinear_sum1),或者
(sRsum1,sGsum1,sBsum1)或(Ysum1,C1sum1,C2sum1),Count1
(Rsum2,Gsum2,Bsum2)或(sRlinear_sum2,sGlinear_sum2,sBlinear_sum2),或者
(sRsum2,sGsum2,sBsum2)或(Ysum2,C1sum2,C2sum2),Count2
(Rsum3,Gsum3,Bsum3或(sRlinear_sum3,sGlinear_sum3,sBlinear_sum3),或者
(sRsum3,sGsum3,sBsum3)或(Ysum3,C1sum3,C2sum3),Count 3,或者
Ysum,cond(Ysum),Ycount1,Ycount2(from camY)
在上面列举的统计信息中,Count0~3代表满足与用于特定窗口的所选4个像素滤波器对应的像素条件的像素的计数。从8个可用的像素滤波器PF0~PF7中,可为每个窗口独立地选择4个激活像素滤波器。另外,可利用像素滤波器或camY亮度统计信息收集各组统计信息中的一组。在一个实施例中,关于AWB和AE收集的窗口统计信息可被映射到一个或多个寄存器。
仍然参见图82,3A统计逻辑器742还可被配置成通过把亮度值camY用于相机颜色空间变换,获得一个窗口的亮度行总和统计信息859。该信息可被用于检测和补偿闪烁。闪烁由一般由AC电力信号引起的某些荧光和白炽光源的周期性变化产生。例如,参见图90,图中表示了图解说明光源的变化如何引起闪烁的曲线图。闪烁检测从而可用于检测用于光源的AC电力的频率(例如,50Hz或60Hz)。一旦已知所述频率,那么通过把图像传感器的积分时间设定成闪烁周期的整数倍,可避免闪烁。
为了检测闪烁,在每一行内累加相机亮度camY。由于进入Bayer数据的下采样,每个camY值可对应于4行初始的原始图像数据。控制逻辑器和/或固件随后可以进行行平均值的频率分析,或者更可靠地,进行连续多帧的行平均差的频率分析,以确定与特定光源相关的AC电力的频率。例如,就图90来说,图像传感器的积分时间可以基于时间t1,t2,t3和t4(例如,从而在与表现出变化的光源通常在相同明度级时相对应的时间发生积分)。
在一个实施例中,可以指定亮度行总和窗口,并且对于窗口内的像素报告统计信息859。例如,对于1080p HD视频捕捉来说,假定窗口1024像素高,产生256个亮度行的总和(例如,由于逻辑器795进行的下采样的缘故,每4行一个总和),并且每个累加值可用18比特表示(例如,每行最多1024个采样的8比特camY值)。
图82的3A统计信息收集逻辑器742还可利用自动聚焦统计逻辑器841,收集自动聚焦(AF)统计信息842。图91是更详细地表示AF统计逻辑器841的一个实施例的功能方框图。如图所示,AF统计逻辑器841可包括水平滤波器843和应用于初始Bayer RGB(未被下采样)的边缘检测器844,应用于Bayer模式的Y分量的两个3×3滤波器846,和用于camY的两个3×3滤波器847。通常,水平滤波器843提供每个颜色分量的高分辨率统计信息,3×3滤波器846可以提供关于BayerY(施加了3×1变换(逻辑器845)的Bayer RGB)的高分辨率统计信息,3×3滤波器847可以提供关于camY的较粗的二维统计信息(因为camY是利用下采样的Bayer RGB数据,即逻辑器815获得的)。此外,逻辑器841可包括抽选Bayer RGB数据(例如,2×2平均,4×4平均等)的逻辑器852,抽选的Bayer RGB数据853可利用3×3滤波器854滤波,以产生抽选的Bayer RGB数据的滤波输出855。本实施例提供16个窗口的统计信息。在原始帧边界,为AF统计逻辑器841的滤波器复制边缘像素。AF统计逻辑器841的各个组件在下面更详细地说明。
首先,水平边缘检测处理包括对每个颜色分量(R,Gr,Gb,B)应用水平滤波器843,之后对每个颜色分量应用可选的边缘检测器844。从而,取决于成像条件,这种结构允许将AF统计逻辑器841设置成无边缘检测(例如,边缘检测器被禁用)的高通滤波器,或者可替换地,设置成跟随有边缘检测器(例如,边缘检测器被启用)的低通滤波器。例如,在低照明条件下,水平滤波器843对噪声更敏感,于是,逻辑器841可以将水平滤波器配置成跟随有启用的边缘检测器844的低通滤波器。如图所示,控制信号848可以启用或禁用边缘检测器844。来自不同颜色通道的统计信息被用于确定聚焦的方向,以改善锐化,因为不同的颜色可聚焦在不同的深度。特别地,AF统计逻辑器841可提供利用(例如,对透镜的焦距的)粗调和微调的组合,实现自动聚焦控制的技术。这种技术的实施例在下面更详细地说明。
在一个实施例中,水平滤波器可以是7抽头滤波器,并且可用公式41和42如下定义:
out(i)=(af_horzfilt_coeff[0]*(in(i-3)+in(i+3))+af_horzfilt_coeff[1]*(in(i-2)+in(i+2))+af_horzfilt_coeff[2]*(in(i-1)+in(i+1))+af_horzfilt_coeff[3]*in(i))
(41)
out(i)=max(-255,min(255,out(i))) (42)
这里,每个系数af_horzfilt_coeff[0:3]在范围[-2,2]中,i代表R,Gr,Gb or B的输入像素索引。可在分别为-255和255的最小值和最大值之间,对滤波输出out(i)限幅(公式42)。可以每个颜色分量独立地定义滤波系数。
可选边缘检测器844可跟随水平滤波器843的输出。在一个实施例中,边缘检测器844可被定义成:
edge(i)=abs(-2*out(i-1)+2*out(i+1))+abs(-out(i-2)+out(i+2))
(43)
edge(i)=max(0,min(255,edge(i))) (44)
从而,当被启用时,边缘检测器844可输出以在当前输入像素i每一侧的两个像素为基础的值,如公式43所示。结果可被限幅成介于0和255之间的8比特值,如公式44中所示。
取决于是否检测到边缘,像素滤波器(例如,滤波器843和检测器844)的最终输出可被选为水平滤波器843的输出,或者边缘检测器844的输出。例如,如公式45所示,如果检测到边缘,那么边缘检测器844的输出849可以是edge(i);或者如果未检测到边缘,可以是水平滤波器输出out(i)的绝对值。
edge(i)=(af_horzfilt_edge_detected)?edge(i):abs(out(i))
(45)
对于每个窗口,累加值,edge_sum[R,Gr,Gb,B]可被选择为(1)窗口内的每个像素的边缘(j,i)的总和,或者(2)在窗口中的各条线内求和的、跨越窗口中的某条线的edge(i)的最大值max(edge)。假定原始帧大小为4096×4096像素,保存edge_sum[R,Gr,Gb,B]的最大值所需的比特数为30比特(例如,8比特每像素,加上用于覆盖整个原始图像帧的窗口的22比特)。
如上所述,用于camY亮度的3×3滤波器847包括应用于camY的两个可编程3×3滤波器F0和F1。滤波器847的结果变成平方函数或者绝对值函数。在用于两个3×3滤波器F0和F1的给定AF窗口内累加结果,从而产生亮度边缘值。在一个实施例中,如下定义在每个camY像素的亮度边缘值:
edgecamY_FX(j,i)=FX*camY (46)
=FX(0,0)*camY(j-1,i-1)+FX(0,1)*camY(j-1,i)+FX(0,2)*camY(j-1,i+1)+
FX(1,0)*camY(j,i-1)+FX(1,1)*camY(j,i)+FX(1,2)*camY(j,i+1)+
FX(2,0)*camY(j+1,i-1)+FX(2,1)*camY(j+1,i)+FX(2,2)*camY(j+1,i+1)
edgecamY_FX(j,i)=f(max(-255,min(255,edgecamY_FX(j,i)))) (47)
f(a)=a^2or abs(a)
其中,FX代表具有在范围[-4,4]中的带符号系数的3×3可编程滤波器F0和F1。索引j和i代表camY图像中的像素位置。如上所述,关于camY的滤波器可提供粗分辨率统计信息,因为camY是利用下采样(例如,4×4到1)的Bayer RGB数据得到的。例如,在一个实施例中,可利用Scharr算子设定滤波器F0和F1,与Sobel算子相比,Scharr算子提供改进的旋转对称,下面表示其一个例子:
对于每个窗口,用滤波器847确定的累加值850,edgecamY_FX_sum(其中,FX=F0和F1)可被选择为(1)对于窗口内的每个像素的edgecamY_FX(j,i)的总和,或者(2)在窗口中的各条线内求和的、跨越窗口中的某条线的edgecamY_FX(j)的最大值。在一个实施例中,当f(a)被设定成a^2,以提供更精细分辨率的“更尖峰的(peakier)”统计信息时,相对于32比特值,edgecamY_FX_sum可能饱和。为了避免饱和,原始帧像素中的最大窗口大小X*Y可被设定成使得它不会超过总共1024×1024像素(例如,即,X*Y<=1048576像素)。如上所述,f(a)还可被设定成绝对值,以提供更线性的统计信息。
关于Bayer Y的AF 3×3滤波器846可按照和camY中的3×3滤波器类似的方式定义,不过它们被应用于从Bayer四元组(2×2像素)产生的亮度值Y。首先,8比特Bayer RGB值被转换成具有范围[0,4]中的可编程系数的Y,以产生白平衡Y值,如下面的公式48中所示:
bayerY=max(0,min(255,bayerY_Coeff[0]*R+bayerY_Coeff[1]*(Gr+Gb)/2+bayerY_Coeff[2]*B)) (48)
类似于用于camY的滤波器847,用于bayerY亮度的3×3滤波器846可包括应用于bayerY的两个可编程3×3滤波器F0和F1。滤波器846的结果变成平方函数或者绝对值函数。在用于两个3×3滤波器F0和F1的给定AF窗口内累加结果,从而产生亮度边缘值。在一个实施例中,如下定义在每个bayerY像素处的亮度边缘值:
edgebayerY_FX(j,i)=FX*bayerY (49)
=FX(0,0)*bayerY(j-1,i-1)+FX(0,1)*bayerY(j-1,i)+FX(0,2)*bayerY(j-1,i)+
FX(1,0)*bayerY(j,i-1)+FX(1,1)*bayerY(j,i)+FX(1,2)*bayerY(j-1,i)+
FX(2,0)*bayerY(j+1,i-1)+FX(2,1)*bayerY(j+1,i)+FX(2,2)*bayerY(j+1,i)
edgebayerY_FX(j,i)=f(max(-255,min(255,edgebayerY_FX(j,i))))(50)
f(a)=a^2or abs(a)
其中,FX代表具有在范围[-4,4]中的带符号系数的3×3可编程滤波器F0和F1。索引j和i代表bayerY图像中的像素位置。如上所述,关于BaerY的滤波器可提供精细分辨率统计信息,因为AF逻辑器841接收的Bayer RGB信号未被抽选。例如,可利用下述滤波器结构之一,设定滤波器逻辑器846的滤波器F0和F1:
对于每个窗口,用滤波器846确定的累加值851,edgebayerY_FX_sum(其中FX=F0和F1)可被选择为(1)对于窗口内的每个像素的edgebayerY_FX(j,i)的总和,或者(2)在窗口中的各条线内求和的、跨越窗口中的某条线的edgebayerY_FX(j)的最大值。这里,当f(a)被设定成a^2时,相对于32比特,edgebayerY_FX_sum可能饱和。从而,为了避免饱和,原始帧像素中的最大窗口大小X*Y应被设定成以致它不会超过总的512×512像素(例如,X*Y<=262144)。如上所述,把f(a)设定成a^2可提供更尖峰的统计信息,同时把f(a)设定成abs(a)可提供更线性的统计信息。
如上所述,对于16个窗口收集AF的统计信息842。窗口可以是各维度为4像素的倍数的任意矩形区域。由于每个滤波逻辑器846和847包括两个滤波器,因此在一些情况下,一个滤波器可用于4像素内的归一化,并且可被配置成沿垂直方向和水平方向滤波。此外,在一些实施例中,AF逻辑器841可用明度使AF统计信息归一化。这可通过把逻辑器块846和847中的一个或多个滤波器设置成旁路滤波器来实现。在一些实施例中,窗口的位置可被局限为4像素的倍数,并且允许窗口重叠。例如,一个窗口可用于获得归一化值,而另一个窗口可用于另外的统计信息,比如方差,如下所述。在一个实施例中,AF滤波器(例如,843,846,847)可以不在图像帧的边缘实现像素复制,于是,为了使AF滤波器利用所有有效像素,AF窗口可被设定成以致它们分别距离帧的上边缘至少4个像素,距离帧的下边缘至少8个像素,距离帧的左/右边缘至少12个像素。在图解说明的实施例中,对于每个窗口,可以收集和报告下述统计信息:
Gr的32比特edgeGr_sum
R的32比特edgeR_sum
B的32比特edgeB_sum
Gb的32比特edgeGb_sum
filter0(F0)的关于Bayer的Y的32比特edgebayerY_F0_sum
filter1(F1)的关于Bayer的Y的32比特edgebayerY_F1_sum
filter0(F0)的关于camY的32比特edgecamY_F0_sum
filter1(F1)的关于camY的32比特edgecamY_F1_sum
在这样的实施例中,保存AF统计信息842所需的存储器可以是16(窗口)×8(Gr,R,B,Gb,bayerY_F0,bayerY_F1,camY_F0,camY_F1)×32比特。
从而,在一个实施例中,可以在:滤波器的输出(可被配置成默认设置),输入像素,或者输入像素平方之间选择每个窗口的累加值。可对16个AF窗口中的每一个进行所述选择,并且所述选择可应用于给定窗口中的所有8个AF统计信息(上面列出)。这可用于在两个重叠的窗口之间使AF评分归一化,所述两个重叠窗口之一被配置成收集滤波器的输出,另一个被配置成收集输入像素总和。另外,为了计算就两个重叠窗口来说的像素方差,一个窗口可被配置成收集输入像素总和,另一个收集输入像素平方和,从而提供可如下计算的方差:
Variance=(avg_pixel2)-(avg_pixel)^2
利用AF统计信息,ISP控制逻辑器84(图7)可被配置成使用基于粗调和微调自动聚焦“评分”的一系列焦距调整,调整成像设备(例如,30)的透镜的焦距,以使图像对焦。如上所述,用于camY的3×3滤波器847可提供粗略的统计信息,而水平滤波器843和边缘检测器844可提供每个颜色分量的比较精细的统计信息,而关于BayerY的3×3滤波器846可提供关于BayerY的精细统计信息。此外,关于抽选的Bayer RGB信号853的3×3滤波器854可提供每个颜色通道的粗略的统计信息。如下进一步所述,可以根据特定输入信号的滤波器输出值(例如,关于camY,BayerY,抽选的Bayer RGB的滤波器输出F0和F1的总和,或者根据水平/边缘检测器输出,等等)计算AF评分。
图92是描述分别代表粗调AF评分和微调AF评分的曲线858和860的曲线图856。如图所示,基于粗略统计信息的粗调AF评分在透镜的焦距内具有更线性的响应。从而,在任意焦点位置,透镜移动可产生自动聚焦评分的变化,这可用于检测图像是正在变得对焦还是失焦(out offocus)。例如,透镜调整之后的粗调AF评分的增大可指示正在沿着正确的方向(例如,朝着光学焦点位置)调整焦距。
不过,当逼近光学焦点位置时,对于较小的透镜调整步长的粗调AF评分的变化可降低,使得难以辨别聚焦调整的正确方向。例如,如曲线图856所示,粗调位置(CP)CP1和CP2之间的粗调AF评分的变化用ΔC12表示,在从CP1到CP2的粗调中,ΔC12表现出增大。不过,如图所示,从CP3到CP4,粗调AF评分的变化ΔC34(它经过最佳焦点位置(OFP))尽管仍在增大,不过相对较小。应明白沿着焦距L的位置CP1~CP6并不意味必须对应于自动聚焦逻辑器沿着焦距采用的步长。即,可能存在在每个粗调位置之间采用的未被示出的其它步长。图解说明的位置CP1~CP6仅仅意图表示随着焦点位置逼近OFP,粗调AF评分的变化是如何逐渐减小的。
一旦确定了OFP的近似位置(例如,根据图92中所示的粗调AF评分,OFP的近似位置在CP3和CP5之间),就可评估用曲线860表示的微调AF评分值,以修正焦点位置。例如,当图像失焦时,微调AF评分更平坦,以致较大的透镜位置变化也不会导致微调AF评分的较大变化。不过,当焦点位置逼近光学焦点位置(OFP)时,微调AF评分会随着较小的位置调整而急剧变化。从而,通过定位微调AF评分曲线860上的峰值或顶点862,可为当前图像场景确定OFP。从而,总而言之,粗调AF评分可用于确定光学焦点位置的大概附近范围,而微调AF评分可用于在所述附近范围内查明更精确的位置。
在一个实施例中,通过沿从位置0开始并结束于位置L(示于曲线图856上)的整个可用焦距获得粗调AF评分,可开始自动聚焦处理,并确定在各个步进位置(例如,CP1~CP6)的粗调AF评分。在一个实施例中,一旦透镜的焦点位置已到达位置L,在评估在各个焦点位置的AF评分之前,位置可被重置为0。例如,这可归因于控制焦点位置的机构元件的线圈稳定时间。在这个实施例中,在重置为位置0之后,可朝着位置L把焦点位置调整到首次指示粗调AF评分的负面变化的位置,这里,是相对于位置CP4表现出负变化ΔC45的位置CP5。从位置CP5开始,可反向沿着朝着位置0的方向,用相对于粗调AF评分调整中使用的增量更小的增量调整焦点位置(例如,位置FP1,FP2,FP3等),同时搜索微调AF评分曲线860中的峰值862。如上所述,对应于微调AF评分曲线860中的峰值862的焦点位置OFP可以是当前图像场景的最佳焦点位置。
可以理解,在分析AF评分曲线858和860的变化以定位OFP的意义上,上面说明的定位焦点的最佳区域和最佳位置的技术可被称为“爬山法”。此外,虽然粗调AF评分(曲线858)和微调AF评分(曲线860)的分析被表示成对粗调评分分析使用大小相同的步长(例如,CP1和CP2之间的距离),和对微调评分分析使用相同大小的步长(例如,FP1和FP2之间的距离),不过在一些实施例中,可根据从一个位置到下一个位置评分的变化,改变步长大小。例如,在一个实施例中,相对于CP1和CP2之间的步长大小,可以减小CP3和CP4之间的步长大小,因为粗调AF评分的总增量(ΔC34)小于从CP1到CP2的增量(ΔC12)。
图93中图解说明了描述该处理的方法864。从方框865开始,沿着焦距从位置0到位置L(图92),以不同的步长对于图像数据确定粗调AF评分。之后,在方框866,分析粗调AF评分,并识别首次表现出粗调AF评分的负变化的粗调位置,作为微调AF评分分析的起点。例如,随后在方框867,以更小的步长使焦点位置朝着初始位置0逐步退回,同时分析每一步的微调AF评分,直到找出AF评分曲线(例如,图92的曲线860)的峰值为止。在方框868,对应于所述峰值的焦点位置被设定为当前图像场景的最佳焦点位置。
如上所述,归因于机械线圈稳定时间,图93中所示技术的实施例可以适合于最初沿整个焦距获得粗调AF评分,而不是逐一分析每个粗调位置和搜索最佳聚焦区域。不过,其中线圈稳定时间不太紧要的其它实施例可在每一步逐一分析粗调AF评分,而不是搜索整个焦距。
在一些实施例中,可利用从Bayer RGB数据得到的白平衡亮度值,确定AF评分。例如,通过如图94中所示,用为2的因数抽选2×2Bayer四元组,或者如图95中所示,用为4的因数抽选由4个2×2Bayer四元组组成的4×4像素块,可得到亮度值Y。在一个实施例中,可利用梯度确定AF评分。在另一个实施例中,通过利用Scharr算子应用3×3变换,可确定AF评分,所述Scharr算子提供旋转对称性,同时使Fourier域中的加权均方角度误差降至最小。例如,下面表示了利用普通的Scharr算子,关于camY的粗调AF评分的计算:
其中,in代表抽选的亮度Y值。在其它实施例中,可利用其它3×3变换,计算关于粗略和精细统计信息的AF评分。
也可取决于颜色分量不同地进行自动聚焦调整,因为透镜可不同地影响不同波长的光,这是独立对每个颜色分量应用水平滤波器843的一个原因。从而,即使在透镜中存在色像差,仍可进行自动聚焦。例如,由于当存在色像差时,相对于绿色来说,红色和蓝色一般集中在不同的位置或距离,因此可以使用每种颜色的相对AF评分来确定聚焦的方向。图96中更好地对此进行了图解说明,图96表示透镜870的关于蓝色、红色和绿色通道的最佳焦点位置。如图所示,红色、绿色和蓝色的最佳焦点位置分别用附图标记R、G和B表示,在当前焦点位置872的情况下,分别对应于一个AF评分。通常,在这种结构中,理想的是把最佳焦点位置选为与绿色分量的最佳焦点位置对应的位置,这里是位置G(例如,因为Bayer RGB的绿色分量两倍于红色或蓝色分量)。从而,可预期,对最佳焦点位置来说,绿色通道应表现出最高的自动聚焦评分。从而,根据每种颜色的最佳焦点位置的多个位置(更接近透镜的那些位置具有更高的AF评分),AF逻辑器841和相关联的控制逻辑器84可根据蓝色、绿色和红色的相对AF评分,确定聚焦方向。例如,如果相对于绿色通道,蓝色通道具有更高的AF评分(如图96中所示),那么沿着负方向(朝着图像传感器)调整焦点位置,而不必首先从当前位置872沿着正方向进行分析。在一些实施例中,可以进行使用颜色相关温度(CCT)的照明体检测或分析。
此外,如上所述,也可以使用方差评分。例如,可对于块大小(例如,8×8~32×32像素)累加像素总和及像素平方和的值,并将其用于得出方差评分(例如,avg_pixel2)~(avg_pixel)^2)。方差可被求和,从而获得每个窗口的总方差评分。可以使用较小的块大小来获得精细的方差评分,并且可以使用较大的块大小来获得更粗的方差评分。
参见图82的3A统计逻辑器742,逻辑器742也可被配置成收集分量直方图874和876。可以理解,直方图可用于分析图像中的像素级分布。这可用于实现某些功能,比如直方图均衡化,其中,直方图数据被用于确定直方图规格(直方图匹配)。例如,亮度直方图可用于AE(例如,用于调整/设定传感器积分时间),颜色直方图可用于AWB。在本实施例中,如用分箱大小(BinSize)所示,对于每个颜色分量,直方图可以是256,128,64或32个分箱(其中,像素的高位8、7、6和5比特分别用于确定分箱)。例如,当像素数据为14比特时,可以规定0~6的附加比例因子和偏移量,以确定对统计来说,收集什么范围的像素数据(例如,哪8个比特)。可如下获得分箱数:
idx=((pixel-hist_offset)>>(6-hist_scale)
在一个实施例中,只有当分箱索引在范围[0,2^(8-BinSize)]中时,颜色直方图分箱才被递增:
if (idx>=0&&idx<2^(8-BinSize))
StatsHist[i dx]+=Count;
在本实施例中,统计信息处理单元142可包括两个直方图单元。第一个直方图874(Hist0)可被配置成收集像素数据,作为4×4抽选之后的统计信息收集的一部分。对Hist0来说,可利用电路880,把分量选择为RGB,sRGBlinear,sRGB或YC1C2。第二个直方图876(Hist1)可被配置成在统计管线之前(在缺陷像素校正逻辑器738之前),收集像素数据,如图96中更详细所示。例如,如下进一步所述,可以通过跳过多个像素,利用逻辑器882抽选(从146输出的)原始Bayer RGB数据(以产生信号878)。对于绿色通道,可在Gr,Gb,或者Gr和Gb之间选择颜色(Gr和Gb计数都累积在绿色分箱中)。
为了在两个直方图之间使直方图分箱宽度保持相同,Hist1可被配置成每隔3个像素(每隔一个Bayer四元组)收集像素数据。直方图窗口的起点确定直方图开始累积的第一个Bayer四元组位置。从该位置开始,对于Hist1,在水平方向和垂直方向每隔一个Bayer四元组地跳跃。对Hist1来说,窗口起始位置可以是任意像素位置,于是可通过改变起始窗口位置,选择直方图计算跳过的像素。Hist1可用于收集接近于黑电平的数据(由图97中的884表示),以帮助在块739的动态黑电平补偿。从而,尽管出于图解说明的目的,直方图876在图97中被表示成与3A统计逻辑器742分离,不过应明白,直方图876实际上可以是写入存储器中的统计信息的一部分,并且实际上可物理地位于统计信息处理单元142内。
在本实施例中,红色(R)和蓝色(B)分箱可以是20比特,绿色(G)分箱为21比特(Green较大,以适应Hist1中的Gr和Gb累积)。这允许最大4160×3120像素(12MP)的图片尺寸。所需的内部存储器大小为3×256×20(1)比特(3个颜色分量,256个分箱)。
就存储格式而论,AWB/AE窗口、AF窗口、2D颜色直方图和分量直方图的统计信息可被映射到寄存器,以允许固件提早访问。在一个实施例中,可以使用两个存储器指针把统计信息写入存储器中,一个指针用于分块统计信息863,一个用于色度行总和859,继之以所有其它收集的统计信息。所有统计信息被写入外部存储器中,所述外部存储器可以是DMA存储器。存储器地址寄存器可被双缓冲,以致可以每帧地指定存储器中的新位置。
在继续详细讨论在ISP前端逻辑器80下游的ISP管道逻辑器82之前,应明白统计信息处理单元142和144中的各个功能逻辑器块(例如,逻辑器块738,739,740,741和742)和ISP前端像素处理单元150中的各个功能逻辑器块(例如,逻辑器决650和652)的排列只是意图举例说明本技术的一个实施例。事实上,在其它实施例中,这里举例说明的逻辑器块可按照不同的顺序排列,或者可包括实现这里未明确说明的其它图像处理功能的其它逻辑器块。此外,应明白在统计信息处理单元(例如,142和144)中进行的图像处理操作,比如透镜阴影校正,缺陷像素检测/校正和黑电平补偿是在统计信息处理单元内进行的,以便收集统计数据。从而,在输出自ISP前端像素处理逻辑器150并被转发给ISP管道处理逻辑器82的图像信号109(FEProcOut)中,实际上未反映对统计信息处理单元接收的图像数据进行的处理操作。
在继续说明之前,还应指出,给定足够的处理时间,并且给定这里描述的各种操作的许多处理要求相似,那么可以重新配置这里所示的功能块,从而顺序地而不是流水线地进行图像处理。可以理解,这可进一步降低总的硬件实现成本,不过也会增大到外部存储器的带宽(例如,高速缓存/保存中间结果/数据)。
IPS管线(“管道”)处理逻辑器
上面详细说明了ISP前端逻辑器80,现在,讨论将把焦点转移到ISP管道处理逻辑器82。通常,ISP管道逻辑器82的功能是接收从ISP前端逻辑器80提供的,或者从存储器108取回的原始图像数据,并进行另外的图像处理操作,即,在把图像数据输出给显示设备28之前。
图98是表示ISP管道逻辑器82的一个实施例的方框图。如图所示,ISP管道逻辑器82可包括原始处理逻辑器900、RGB处理逻辑器902和YCbCr处理逻辑器904。原始处理逻辑器900不但可执行各种图像处理操作,比如缺陷像素检测和校正、透镜阴影校正、去马赛克,还可以应用关于自动白平衡的增益和/或设定黑电平,如下进一步所述。如本实施例中所示,原始处理逻辑器900的输入信号908可以是来自ISP前端逻辑器80的原始像素输出109(信号FEProcOut),或者是来自存储器108的原始像素数据112,这取决于选择逻辑器906的当前结构。
作为在原始处理逻辑器900内进行的去马赛克操作的结果,图像信号输出910可在RGB域中,并且可被顺序转发给RGB处理逻辑器902。例如,如图98中所示,RGB处理逻辑器902接收信号916,取决于选择逻辑器914的当前结构,信号916可以是输出信号910或者是来自存储器108的RGB图像信号912。RGB处理逻辑器902可提供各种RGB颜色调整操作,包括颜色校正(例如,利用颜色校正矩阵),关于自动白平衡的颜色增益的应用,以及全局色调映射,如下进一步所述。RGB处理逻辑器904还可提供RGB图像数据到YCbCr(亮度/色度)颜色空间的颜色空间变换。从而,图像信号输出918可以在YCbCr域中,并且随后可被转发给YCbCr处理逻辑器904。
例如,如图98中所示,YCbCr处理逻辑器104接收信号924,信号924可以是来自RGB处理逻辑器902的输出信号918,或者来自存储器108的YCbCr信号920,这取决于选择逻辑器922的当前结构。如下进一步详细所述,YCbCr处理逻辑器904可提供YCbCr颜色空间中的图像处理操作,包括比例缩放,色度抑制,亮度锐化,明度、对比度和颜色(BCC)调整,YCbCr伽马映射,色度抽选等等。YCbCr处理逻辑器904的图像信号输出926可被发送给存储器108,或者可作为图像信号114从ISP管道处理逻辑器82输出(图7)。随后,按照在图7中描述的图像处理电路32的实施例,图像信号114可被发给显示设备28(直接地或者经存储器108),以供用户查看,或者可利用压缩引擎(例如,编码器118)、CPU/GPU、图形引擎等被进一步处理。另外,在其中在图像处理电路32中包括ISP后端单元120的实施例中(例如,图8),图像信号114可被发给ISP后端处理逻辑器120,以便进行另外的下游后处理。
按照本发明技术的实施例,ISP管道逻辑器82可支持8比特、10比特、12比特或14比特格式的原始像素数据的处理。例如,在一个实施例中,8比特、10比特或12比特输入数据可在原始处理逻辑器900的输入端被转换成14比特,并且可用14比特精度进行原始处理和RGB处理操作。在后一实施例中,在RGB数据到YCbCr颜色空间的变换之前,14比特图像数据可被下采样成10比特,从而可按10比特精度进行YCbCr处理(逻辑器904)。
为了全面说明ISP管道处理逻辑器82提供的各种功能,下面从原始处理逻辑器900开始,顺序分别说明原始处理逻辑器900,RGB处理逻辑器902和YCbCr处理逻辑器904,以及执行可在逻辑器900,902和904的各个相应单元中实现的各种图像处理操作的内部逻辑器。例如,现在参见图99,按照本技术的一个实施例,图解说明表示原始处理逻辑器900的一个实施例的更详细示图的方框图。如图所示,原始处理逻辑器900包括增益、偏移和箝位(GOC)逻辑器930,缺陷像素检测/校正(DPDC)逻辑器932,降噪逻辑器934,透镜阴影校正逻辑器936,GOC逻辑器938和去马赛克逻辑器940。此外,虽然下面讨论的例子假定使用带有图像传感器90的Bayer色彩滤镜阵列,不过应明白,本技术的其它实施例也可利用不同类型的色彩滤镜。
输入信号908(它可以是原始图像信号)首先被增益、偏移和箝位(GOC)逻辑器930接收。GOC逻辑器930可提供和上面在图68中说明的ISP前端逻辑器80的统计信息处理单元142的BLC逻辑器739类似的功能,并可按照相似的方式实现。例如,GOC逻辑器930可为Bayer图像传感器的每个颜色分量R,B,Gr和Gb独立提供数字增益、偏移和箝位(限幅)。特别地,GOC逻辑器930可进行自动白平衡,或者设定原始图像数据的黑电平。此外,在一些实施例中,GOC逻辑器930还可用于校正或补偿Gr和Gb颜色分量之间的偏移量。
操作中,当前像素的输入值首先被偏移带符号的值并被乘以增益。该运算可以利用在上面的公式11中所示的公式进行,其中,X代表给定颜色分量R,B,Gr或Gb的输入像素值,O[c]代表当前颜色分量c的带符号的16比特偏移量,G[c]代表颜色分量c的增益值。G[c]的值可预先在统计信息处理期间(例如,在ISP前端块80)中确定。在一个实施例中,增益G[c]可以是具有2个整数比特和14个小数比特的16比特无符号数(例如,2.14浮点表示法),增益G[c]可被应用以舍入。例如,增益G[c]可以具有0~4X的范围。
随后按照公式12,把公式11的计算的像素值Y(它包括增益G[c]和偏移量O[c])限幅到最小和最大范围。如上所述,变量min[c]和max[c]可分别代表最小和最大输出值的带符号16比特“限幅值”。在一个实施例中,GOC逻辑器930还可被配置成为每个颜色分量,保持分别被限幅为高于和低于最大和最小范围的像素的数目的计数。
随后,GOC逻辑器930的输出被转发给缺陷像素检测和校正逻辑器932。如上面参考图68(DPDC逻辑器738)所述,缺陷像素可归因于许多因素,并且可包括“噪点”(或者漏像素),“亮点”和“坏点”,其中,相对于非缺陷像素,噪点会表现出高于正常的电荷漏泄,从而可以显得比非缺陷像素亮,并且亮点表现为始终接通(例如,完全充电),从而显得较亮,而坏点表现为始终关闭。因而,理想的是具有足够鲁棒以识别和解决不同类型的故障情况的像素检测方案。特别地,当与只提供动态缺陷检测/校正的前端DPDC逻辑器738相比时,管道DPDC逻辑器932可提供固定或者静态缺陷检测/校正、动态缺陷检测/校正以及斑点(speckle)消除。
按照目前公开的本发明技术的实施例,可对每个颜色分量(例如,R,B,Gr和Gb)独立地进行DPDC逻辑器932执行的缺陷像素校正/检测,并且缺陷像素校正/检测可包括用于检测缺陷像素,以及校正检测到的缺陷像素的各种操作。例如,在一个实施例中,缺陷像素检测操作可检测静态缺陷、动态缺陷以及检测斑点(它可以指可存在于成像传感器中的电干扰或噪声(例如,光子噪声))。照此类推,以类似于静电噪声出现在显示器,(比如电视显示器)上的方式,斑点可作为看上去随机的噪声伪像出现在图像上。此外,如上所述,在给定时间认为有缺陷的像素的表征可取决于相邻像素中的图像数据的意义上,动态缺陷校正被认为是动态的。例如,如果亮点的位置在当前图像的由明亮的白色主导的区域中,那么总是处于最大亮度的亮点可不被看作缺陷像素。相反,如果亮点在当前图像的由黑色或者较暗的颜色主导的区域中,那么在DPDC逻辑器932的处理期间,亮点可被识别为缺陷像素,从而被相应地校正。
就静态缺陷检测来说,比较每个像素的位置和静态缺陷表,静态缺陷表可以保存与已知有缺陷的像素的位置对应的数据。例如,在一个实施例中,DPDC逻辑器932可监视缺陷像素的检测(例如,利用计数器机构或寄存器),如果发现特定像素反复失效,那么把该像素的位置保存到静态缺陷表中。从而,在静态缺陷检测期间,如果确定当前像素的位置在静态缺陷表中,那么当前像素被识别为缺陷像素,确定并临时保存替换值。在一个实施例中,替换值可以是相同颜色分量的先前像素(基于扫描顺序)的值。替换值可用于在动态/斑点缺陷检测和校正期间校正静态缺陷,如下所述。另外,如果前一像素在原始帧310(图23)之外,那么不使用其值,可在动态缺陷校正处理期间校正静态缺陷。此外,由于存储器考虑因素,静态缺陷表可以保存有限数目的位置条目。例如,在一个实施例中,静态缺陷表可被实现成FIFO队列,FIFO队列被配置成保存用于每两行图像数据的总共16个位置。尽管如此,在静态缺陷表中的定义的位置将利用先前像素的替换值(而不是借助下面讨论的动态缺陷检测处理)校正。如上所述,本技术的实施例还可以支持随着时间间断地更新静态缺陷表。
实施例可提供在片上存储器或片外存储器中实现的静态缺陷表。可以理解,利用片上实现可增加在芯片总面积/尺寸,而利用片外实现可减小芯片面积/尺寸,但增大存储器带宽要求。从而,应明白,取决于具体的实现要求,即,将保存在静态缺陷表内的像素的总数,可以片上或者片外地实现静态缺陷表。
动态缺陷和斑点检测处理相对于上面讨论的静态缺陷检测处理可以是时移的。例如,在一个实施例中,可在静态缺陷检测处理已分析两个扫描线(例如,行)的像素之后,开始动态缺陷和斑点检测处理。可以理解,这允许在进行动态/斑点检测进行之前,识别静态缺陷及确定静态缺陷的相应替换值。例如,在动态/斑点检测处理期间,如果当前像素先前被标记为静态缺陷,那么仅利用先前评估的替换值校正该静态缺陷,而不是应用动态/斑点检测操作。
就动态缺陷和斑点检测来说,这些处理可以顺序或者并行进行。DPDC逻辑器932进行的动态缺陷和斑点检测和校正可以依赖于利用像素-像素方向梯度的自适应边缘检测。在一个实施例中,DPDC逻辑器932可选择使用在原始帧310(图23)内具有相同颜色分量的当前像素的8个紧邻像素。换句话说,当前像素及其8个紧邻像素P0,P1,P2,P 3,P4,P5,P6和P7可以构成3×3区域,如下面在图100中所示。
不过应注意,取决于当前像素P的位置,当计算像素-像素梯度时,不考虑在原始帧310之外的像素。例如,就图100中所示的“左上”情况942来说,当前像素P在原始帧310的左上角,从而,不考虑在原始帧310外的相邻像素P0,P1,P2,P3和P5,只剩下像素P4,P6和P7(N=3)。在“顶部”情况944中,当前像素P在原始帧310的最上边缘,从而不考虑在原始帧310外的相邻像素P0,P1和P2,只剩下像素P3,P4,P5,P6和P7(N=5)。接下来,在“右上”情况946中,当前像素P在原始帧310的右上角,从而,不考虑在原始帧310外的相邻像素P0,P1,P2,P4和P7,只剩下像素P3,P5和P6(N=3)。在“左侧”情况948中,当前像素P在原始帧310的最左边缘,从而不考虑在原始帧310外的相邻像素P0,P3和P5,只剩下像素P1,P2,P4,P6和P7(N=5)。
在“中心”情况950下,所有像素P0~P7都位于原始帧310内,从而用于确定像素-像素梯度(N=8)。在“右侧”情况952中,当前像素P在原始帧310的最右边缘,从而不考虑在原始帧310外的相邻像素P2,P4和P7,只剩下像素P0,P1,P3,P5和P6(N=5)。另外,在“左下”情况954中,当前像素P在原始帧310的左下角,从而,不考虑在原始帧310外的相邻像素P0,P3,P5,P6和P7,只剩下像素P1,P2和P4(N=3)。在“底部”情况956中,当前像素P在原始帧310的最下边缘,从而不考虑在原始帧310外的相邻像素P5,P6和P7,只剩下像素P0,P1,P2,P3和P4(N=5)。最后,在“右下”情况958中,当前像素P在原始帧310的右下角,从而,不考虑在原始帧310外的相邻像素P2,P4,P5,P6和P7,只剩下像素P0,P1和P 3(N=3)。
从而,取决于当前像素P的位置,用于确定像素-像素梯度的像素的数目可以是3、5或8。在图解说明的实施例中,对于在图片边界(例如,原始帧310)内的每个相邻像素(k=0~7),可如下计算像素-像素梯度:
Gk=abs(P-Pk),0≤k≤7(只用于在原始帧内的k) (51)
另外,平均梯度Gav可被计算成当前像素和其周围像素的平均值Pav之间的差值,如下面的公式所示:
Gav=abs(P-Pav) (52b)
像素-像素梯度值(公式51)可用于确定动态缺陷情况,相邻像素的平均值(公式52a和52b)可用于识别斑点情况,如下进一步所述。
在一个实施例中,DPDC逻辑器932可如下进行动态缺陷检测。首先,假定如果一定数目的梯度Gk等于或小于特定阈值(用变量dynTh(动态缺陷阈值)表示),那么像素有缺陷。从而,对于每个像素,累加在图片边界内的相邻像素的等于或小于阈值dynTh的梯度的数目的计数(C)。阈值dynTh可以是固定阈值分量和可取决于呈现周围像素的“活性”的动态阈值分量的组合。例如,在一个实施例中,通过根据对平均像素值Pav(公式52a)和每个相邻像素之间的绝对差求和,计算高频分量值Phf,可确定dynTh的动态阈值分量,如下所示:
在像素位于图像角落(N=3),或者位于图像边缘(N=5)的情况下,Phf可分别乘以8/3或8/5。可以理解,这确保根据8个相邻像素(N=8),使高频分量Phf归一化。
一旦确定了Phf,就可如下所示计算动态缺陷检测阈值dynTh:
dynTh=dynTh1+(dynTh2×Phf),(53)
其中,dynTh1代表固定阈值分量,dynTh2代表动态阈值分量并且在公式53中是Phf的乘数。对于每个颜色分量,可以提供不同的固定阈值分量dynTh1,不过对于相同颜色的每个像素,dynTh1相同。例如,dynTh1也可被设定成以致它至少高于图像中的噪声的方差。
动态阈值分量dynTh2可根据图像的一些特性来确定。例如,在一个实施例中,可利用保存的关于曝光和/或传感器积分时间的经验数据,确定dynTh2。所述经验数据可在图像传感器(例如,90)的校准期间确定,并且可以使可为dynTh2选择的动态阈值分量值和多个数据点中的每一个相关联。从而,根据在ISP前端逻辑器80中的统计信息处理期间确定的当前曝光和/或传感器积分时间值,通过从保存的与当前曝光和/或传感器积分时间值对应的经验数据中选择动态阈值分量值,可确定dynTh2。另外,如果当前曝光和/或传感器积分时间值不直接对应于经验数据点之一,那么通过内插与当前曝光和/或传感器积分时间值落入其间的数据点相关的动态阈值分量值,可确定dynTh2。此外,与固定阈值分量dynTh1相同,对于每个颜色分量,动态阈值分量dynTh2可具有不同的值。从而,对于每个颜色分量(例如,R,B,Gr,Gb),复合阈值dynTh可以不同。
如上所述,对于每个像素,确定图片边界内的相邻像素的等于或低于阈值dynTh的梯度的数目的计数C。例如,对于在原始帧310内的每个相邻像素,可如下计算等于或低于阈值dynTh的梯度Gk的累积计数C:
0≤k≤7(只用于在原始帧内的k)
随后,如果确定累积计数C小于或等于最大计数(用变量dynMaxC)表示,那么像素可被看作动态缺陷。在一个实施例中,可对于N=3(角落),N=5(边缘)和N=8的情况,提供不同的dynMaxC值。下面表示该逻辑器:
如果(C≤dynMaxC),那么当前像素P有缺陷(55)
如上所述,缺陷像素的位置可被保存到静态缺陷表中。在一些实施例中,在动态缺陷检测期间,关于当前像素计算的最小梯度值(min(Gk))可被保存,并用于对缺陷像素分类,使得较大的最小梯度值指示更“严重”的缺陷,并且应在像素校正期间,在校正不太严重的缺陷之前被校正。在一个实施例中,在被保存在静态缺陷表中之前,一个像素可能需要在多个成像帧内被处理,比如通过随着时间过滤缺陷像素的位置。在所述后一实施例中,只有当缺陷在相同位置出现在特定数目的连续图像中时,缺陷像素的位置才被保存到静态缺陷表中。此外,在一些实施例中,静态缺陷表可被配置成根据最小梯度值,对保存的缺陷像素位置分类。例如,最高的最小梯度值可以指示更“严重”的缺陷。通过按照这种方式对各个位置排序,可以设定静态缺陷校正的优先顺序,比如首先校正最严重或者重要的缺陷。另外,可随着时间更新静态缺陷表,以包括新检测的静态缺陷,并相应地根据它们各自的最小梯度值对它们排序。
通过确定值Gav(公式52b)是否高于斑点检测阈值spkTh,可以进行与上面说明的动态缺陷检测处理并行的斑点检测。类似于动态缺陷阈值dynTh,斑点阈值spkTh也可以包括分别称为spkTh1和spkTh2的固定分量和动态分量。通常,与dynTh1和dynTh2值相比,可以更“进取地”设定固定分量spkTh1和动态分量spkTh2,以便避免在图像的可能纹理化更严重的区域和其它区域(比如文本、叶子(foliage)、某些织物图案等)中错误地检测斑点。因此,在一个实施例中,对于图像的高度纹理化的区域,可以增大动态斑点阈值分量spkTh2,而对于“更平坦”或者更一致的区域,可以降低动态斑点阈值分量spkTh2。可如下所示计算斑点阈值spkTh:
spkTh=spkTh1+(spkTh2×Phf), (56)
其中,s pkTh1代表固定阈值分量,spkTh2代表动态阈值分量。可按照下述表达式确定斑点的检测:
如果(Gav>spkTh),那么当前像素P有斑点。(57)
一旦识别出缺陷像素,DPDC逻辑器932就可根据检测的缺陷的类型,应用像素校正操作。例如,如果缺陷像素被识别为静态缺陷,那么用保存的替换值替换该像素,如上所述(例如,相同颜色分量的前一像素的值)。如果像素被识别为动态缺陷或斑点,那么可如下进行像素校正。首先,以中心像素和4个方向(水平(h)方向、垂直(v)方向、对角正方向(dp)和对角负方向(dn))上的第一及第二相邻像素之间的绝对差值(例如,公式51的Gk的计算)之和的形式,计算梯度,如下所示:
Gh=G3+G4 (58)
Gv=G1+G6 (59)
Gdp=G2+G5 (60)
Gdn=G0+G7 (61)
随后,借助与具有最小值的方向梯度Gh,Gv,Gdp和Gdn相关的两个相邻像素的线性内插,可确定校正像素值PC。例如,在一个实施例中,下面的逻辑器语句可表示PC的计算:
if(min==Gh) (62)
else if(min==Gv)
else if(min==Gdp)
else if(min==Gdn)
DPDC逻辑器932实现的像素校正技术还提供在边界条件下的例外。例如,如果与所选内插方向相关的两个相邻像素之一在原始帧外部,那么改为替换在原始帧内的相邻像素的值。从而,利用这种技术,校正像素值等于在原始帧内的相邻像素的值。
应注意,与在ISP前端逻辑器80中的DPDC逻辑器738相比,在ISP管道处理期间,DPDC逻辑器932应用的缺陷像素检测/校正技术更鲁棒。如在上面的实施例中所述,DPDC逻辑器738只利用水平方向的相邻像素,仅进行动态缺陷检测和校正,而DPDC逻辑器932利用水平和垂直两个方向上的相邻像素,提供静态缺陷、动态缺陷以及斑点的检测和校正。
可以理解,利用静态缺陷表保存缺陷像素的位置可以较低的存储器要求提供缺陷缺陷的时域滤波。例如,与保存整个图像并应用时域滤波以随时间识别静态缺陷的许多常规技术相比,本技术的实施例只保存缺陷像素的位置,一般这可只利用保存整个图像帧所需的存储器的一小部分来实现。此外,如上所述,最小梯度值(min(Gk))的保存允许通过区分校正缺陷像素的位置的顺序的优先次序,有效地使用静态缺陷表(例如,从最明显的那些缺陷像素的位置开始)。
另外,包括动态分量(例如dynTh2和spkTh2)的阈值的使用可帮助减少错误的缺陷检测,这是当处理图像的高度纹理区域(例如,文本,叶子,某些织物图案等)时,在常规图像处理系统中常常遇到的问题。此外,把方向梯度(例如,h,v,dp,dn)用于像素校正可减少当发生错误缺陷检测时可视伪像的出现。例如,即使在错误检测的情况下,沿着最小梯度方向的滤波可以导致在多数情况下仍然获得可接受结果的校正。另外,在梯度计算中包含当前像素P可提高梯度检测的准确性,尤其是在噪点的情况下。
DPDC逻辑器932实现的上述缺陷像素检测和校正技术可用在图101~103中提供的一系列流程图中得到总结。例如,首先参见图101,图中图解说明了检测静态缺陷的处理960。首先从步骤962开始,在第一时间T0接收输入像素P。随后,在步骤964,比较像素P的位置和保存在静态缺陷表中的值。判决逻辑器966确定在静态缺陷表中是否找到像素P的位置。如果像素P的位置在静态缺陷表中,那么处理960进入步骤968,在步骤968,像素P被标记为静态缺陷,并且确定替换值。如上所述,可根据相同颜色分量的前一像素(按照扫描顺序)的值,确定替换值。处理960随后进入步骤970,在步骤970,处理960进入图102中图解说明的动态缺陷和斑点检测处理980。另外,如果在判决逻辑器966,确定像素P的位置不在静态缺陷表中,那么处理960进入步骤970,而不执行步骤968。
继续参见图102,如步骤982所示,在时间T1接收输入像素P,以供处理,从而确定是否存在动态缺陷或斑点。时间T可以代表相对于图101的静态缺陷检测处理960的时移。如上所述,在静态缺陷检测处理已分析了两条扫描线(例如,两行)像素之后,可以开始动态缺陷和斑点检测处理,从而允许在发生动态/斑点检测之前,有时间识别静态缺陷并确定静态缺陷的相应替换值。
判决逻辑器984确定输入像素P之前是否被标记为静态缺陷(例如,用处理960的步骤968)。如果像素P被标记为静态缺陷,那么处理980可进入图103中所示的像素校正处理,并绕过图102中所示的剩余步骤。如果判决逻辑器984确定输入像素P不是静态缺陷,那么处理进入步骤986,识别可在动态缺陷和斑点处理中使用的相邻像素。例如,按照上面讨论并在图100中图解说明的实施例,相邻像素可包括像素P的8个紧邻像素(例如,P0~P7),从而形成3×3像素区。随后,在步骤988,如在上面的公式51中所述,关于原始帧310内的每个相邻像素,计算像素-像素梯度。另外,如在公式52a和52b中所示,可以当前像素和其相邻像素的平均值之间的差值的形式,计算平均梯度(Gav)。
处理980随后分枝到动态缺陷检测步骤990,和用于斑点检测的判决逻辑器998。如上所述,在一些实施例中,可以并行进行动态缺陷检测和斑点检测。在步骤990,确定小于或等于阈值dynTh的梯度的数目的计数C。如上所述,阈值dynTh可包括固定分量和动态分量,并且在一个实施例中,这可按照上面的公式53确定。如果C小于或等于最大计数dynMaxC,那么处理980进入步骤996,当前像素被标记为动态缺陷。之后,处理980可进入下面讨论的图103所示的像素校正处理。
返回在步骤988之后的关于斑点检测的分枝,判决逻辑器998确定平均梯度Gav是否大于斑点检测阈值spkTh,斑点检测阈值spkTh也可包括固定分量和动态分量。如果Gav大于阈值spkTh,那么在步骤1000,像素P被标记为包含斑点,之后,处理980进入图103,以便校正有斑点的像素。此外,如果判决逻辑器框992和998的输出都为“否”,那么这指示像素P不包含动态缺陷、斑点、或者甚至静态缺陷(判决逻辑器984)。从而,当判决逻辑器992和998的输出都为“否”时,可在步骤994结束处理980,从而使像素P无变化地通过,因为未检测到任何缺陷(例如,静态缺陷、动态缺陷或斑点)。
继续参见图103,图中提供按照上述技术的像素校正处理1010。在步骤1012,从图102的处理980接收输入像素P。应注意,处理1010可从步骤984(静态缺陷),或者从步骤996(动态缺陷)和1000(斑点)接收像素P。判决逻辑器1014随后确定像素P是否被标记为静态缺陷。如果像素P是静态缺陷,那么处理1010继续,并在步骤1016结束,从而利用在步骤968(图101)确定的替换值校正静态缺陷。
如果像素P未被识别成静态缺陷,那么处理1010从判决逻辑器1014进入步骤1018,并计算方向梯度。例如,如上参考公式58~61所述,以中心像素和4个方向(h,v,dp和dn)上的第一及第二相邻像素之间的绝对差值之和的形式,计算梯度。随后,在步骤1020,识别值最小的方向梯度,之后,判决逻辑器1022评估与最小梯度相关的两个相邻像素之一是否位于图像帧(例如原始帧310)之外。如果两个相邻像素都在图像帧内,那么处理1010进入步骤1024,如公式62所示,通过对这两个相邻像素的值应用线性内插,确定像素校正值(PC)。之后,利用内插的像素校正值PC校正输入像素P,如步骤1030所示。
返回判决逻辑器1022,如果确定两个相邻像素之一在图像帧(例如,原始帧165)之外,那么代替使用在外像素(Pout)的值,DPDC逻辑器932可用在图像帧内的另一个相邻像素(Pin)的值代替Pout的值,如步骤1026所示。之后,在步骤1028,通过对Pin的值和Pout的替换值进行插值,确定像素校正值PC。换句话说,这种情况下,PC可以等于Pin的值。最后在步骤1030,利用值PC校正像素P。在继续说明之前,应明白这里关于DPDC逻辑器932说明的特定缺陷像素检测和校正处理仅仅意图反映本技术的一个可能的实施例。事实上,取决于设计和/或成本制约,多种变化都是可能的,可以增加或除去一些特征,使得缺陷检测/校正逻辑器的总体复杂性和鲁棒性介于在ISP前端块80中实现的较简单的检测/校正逻辑器738,和这里关于DPDC逻辑器932说明的缺陷检测/校正逻辑器之间。
返回参见图99,校正后的像素数据从DPDC逻辑器932输出,随后被降噪逻辑器934接收,以便进一步处理。在一个实施例中,降噪逻辑器934可被配置成实现二维边缘自适应低通滤波,以降低图像数据中的噪声,同时保持细节和纹理。可根据目前的光级,设定边缘自适应阈值(例如,由控制逻辑器84设定),使得在低照明条件下,滤波能够被增强。此外,如上关于dynTh和spkTh值的确定简要所述,对于给定传感器来说,可以提早确定噪声方差,使得降噪阈值可被设定成刚好大于噪声方差,从而在降噪处理期间,在不显著影响场景的纹理和细节(例如,避免/减少错误检测)的情况下,降低噪声。假定Bayer色彩滤镜实现,降噪逻辑器934可利用可分离的7抽头水平滤波器和5抽头垂直滤波器,独立地处理每个颜色分量Gr,R,B和Gb。在一个实施例中,可如下进行降噪处理:校正绿色分量(Gb和Gr)的不一致,并随后进行水平滤波和垂直滤波。
绿色不一致(GNU)通常用在给定均匀照明的平面条件下,Gb和Gr像素之间的微小明度差异表征。如果不校正或补偿这种不一致,那么在去马赛克之后的全色图像中可能出现某些伪像,比如“迷宫(maze)”伪像。绿色不一致处理可包括:对于原始Bayer图像数据中的每个绿色像素,确定当前绿色像素(G1)和在当前像素的右下侧的绿色像素(G2)之间的绝对差值是否小于GNU校正阈值(gnuTh)。图104图解说明Bayer模式的2×2区域中的G1和G2像素的位置。如图所示,与G1邻接的像素的颜色可以取决于当前绿色像素是Gb像素还是Gr像素。例如,如果G1是Gr,那么G2是Gb,G1右侧的像素是R(红色),G1下面的像素是B(蓝色)。可替换地,如果G1是Gb,那么G2是Gr,G1右侧的像素是B,而G1下面的像素是R。如果G1和G2之间的绝对差值小于GNU校正阈值,那么当前绿色像素G由G1和G2的平均值替换,如下面的逻辑器所示:
if(abs(G1-G2)≤gnuTh);
可以理解,按照这种方式应用绿色不一致校正可有助于避免跨边缘平均G1和G2像素,从而改善和/或保持锐度。
在绿色不一致校正之后应用水平滤波,在一个实施例中,水平滤波可提供7抽头水平滤波器。计算跨越每个滤波器抽头的边缘的梯度,并且如果它高于水平边缘阈值(horzTh),那么滤波器抽头被折叠到中心像素,如下所述。在一些实施例中,噪声滤波可以是边缘自适应的。例如,水平滤波器可以是有限脉冲响应(FIR)滤波器,其中,只有当中心像素和在抽头的像素之间的差值小于取决于噪声方差的阈值时,才使用滤波器抽头。水平滤波器可对于每个颜色分量(R,B,Gr,Gb)独立处理图像数据,并且可以使用未滤波的值作为输入值。
例如,图105表示一组水平像素P0~P6的图形描述,中心抽头被置于P3。根据图105中所示的像素,可如下计算每个滤波器抽头的边缘梯度:
Eh0=abs(P0-P1) (64)
Eh1=abs(P1-P2) (65)
Eh2=abs(P2-P3) (66)
Eh3=abs(P3-P4) (67)
Eh4=abs(P4-P5) (68)
Eh5=abs(P5-P6) (69)
随后,利用在下面的公式70中表示的公式,水平滤波器组件可以使用边缘梯度Eh0~Eh5确定水平滤波输出Phorz:
Phorz=C0×[(Eh2>horzTh[c])?P3:(Eh1>horzTh[c])?P2:(Eh0>horzTh[c])?P1:P0]+
C1×[(Eh2>horzTh[c])?P3:(Eh1>horzTh[c])?P2:P1]+
C2×[(Eh2>horzTh[c])?P3:P2]+
C3×P3+ (70)
C4×[(Eh3>horzTh[c])?P3:P4]+
C5×[(Eh3>horzTh[c])?P3:(Eh4>horzTh[c])?P4:P5]+
C6×[(Eh3>hor zTh[c])?P3:(Eh4>horzTh[c])?P4:(Eh5>horzTh[c])?P5:P6],
其中horzTh[c]是每个颜色分量c(例如R,B,Gr和Gb)的水平边缘阈值,其中,C0~C6分别是对应于像素P0~P6的滤波器抽头系数。水平滤波器输出Phorz可应用在中心像素P3位置。在一个实施例中,滤波器抽头系数C0~C6可以是具有3个整数比特和13个小数比特的16比特的2的补码值(浮点表示法的3.13)。此外,应注意,滤波器抽头系数C0~C6不必关于中心像素P3对称。
在绿色不一致校正和水平滤波处理之后,降噪逻辑器934还应用垂直滤波。在一个实施例中,垂直滤波操作可提供5抽头滤波器,如图106中所示,垂直滤波器的中心抽头位于P2。可按照和上面说明的水平滤波处理相似的方式进行垂直滤波处理。例如,计算跨越每个滤波器抽头的边缘的梯度,如果所述梯度高于垂直边缘阈值(vertTh),那么使滤波器抽头折叠到中心像素P2。垂直滤波器可对于每个颜色分量(R,B,Gr,Gb)独立地处理图像数据,并且可以使用未滤波的值作为输入值。
根据图106中所示的像素,可如下计算每个滤波器抽头的垂直边缘梯度:
Ev0=abs(P0-P1) (71)
Ev1=abs(P1-P2) (72)
Ev2=abs(P2-P3) (73)
Ev3=abs(P3-P4) (74)
利用在下面的公式75中所示的公式,垂直滤波器随后可以使用边缘梯度Ev0~Ev5确定垂直滤波输出Pvert:
Pvert=C0×[(Ev1>ver tTh[c])?P2:(Ev 0>ver tTh[c])?P1:P0]+C1×[(Ev1>vertTh[c])?P2:P1]+
C2×P2+(75)
C3×[(Ev2>vertTh[c])?P2:P3]+
C4×[(Ev2>vertTh[c])?P2:(Eh3>vertTh[c])?P3:P4],
其中,vertTh[c]是每个颜色分量c(例如R,B,Gr和Gb)的垂直边缘阈值,并且C0~C4分别是对应于图106的像素P0~P4的滤波器抽头系数。垂直滤波器输出Pvert可应用在中心像素P2位置。在一个实施例中,滤波器抽头系数C0~C4可以是具有3个整数比特和13个小数比特的16比特的2的补码值(浮点表示法的3.13)。此外,应注意,滤波器抽头系数C0~C4不一定必须关于中心像素P2对称。
另外,就边界条件来说,当相邻像素在原始帧310(图23)之外时,用在原始帧的边缘的相同颜色像素的值来复制在边界外的值。可对水平滤波操作和垂直滤波操作都实现这种规定。例如,重新参见图105,在水平滤波的情况下,如果像素P2是在原始帧的最左侧边缘的边缘像素,从而像素P0和P1在原始帧之外,那么对于水平滤波来说,用像素P2的值替换像素P0和P1的值。
重新参见图99中所示的原始处理逻辑器900的方框图,降噪逻辑器934的输出随后被发给透镜阴影校正(LSC)逻辑器936以供处理。如上所述,透镜阴影校正技术可包括逐个像素地应用适当的增益,以补偿光强度的降低,所述光强度的降低可能是透镜的几何光学、制造过程中的缺陷、微透镜阵列和色彩滤镜阵列的未对准等等的结果。此外,一些透镜中的红外(IR)滤光片会导致所述强度降低取决于照明体,从而,可根据检测到的光源修改透镜阴影增益。
在所述实施例中,可按照和上面参考图71~79说明的ISP前端块80的LSC逻辑器740类似的方式实现ISP管道82的LSC逻辑器936,从而大致提供相同的功能。因此,为了避免冗余,应明白目前举例说明的实施例的LSC逻辑器936被配置成大体按照和LSC逻辑器740相同的方式工作,从而,这里不再重复上面提供的透镜阴影校正技术的说明。不过简言之,应明白LSC逻辑器936可独立地处理原始像素数据流的每个颜色分量,以确定应用于当前像素的增益。按照上面讨论的实施例,可根据分布在成像帧内的一组定义的增益网格点,确定透镜阴影校正增益,其中各个网格点之间的间隔由多个像素(例如,8个像素、16个像素等)限定。如果当前像素的位置对应于网格点,那么对当前像素应用与该网格点相关的增益值。不过,如果当前像素的位置在网格点(例如,图74的G0,G1,G2和G 3)之间,那么可利用当前像素位于其间的网格点的内插(公式13a和13b),计算LSC增益值。图75的处理772说明了该处理。此外,如上参考图73所述,在一些实施例中,网格点可能不均匀地分布(例如,对数分布),以致在LSC区760的中央,网格点不太集中,而是朝着LSC区760的通常透镜阴影失真更显著的角落变得更集中。
另外,如上参考图78和79所述,LSC逻辑器936也可利用网格增益值,应用径向增益分量。径向增益分量可根据中心像素离图像中心的距离来确定(公式14-16)。如上所述,利用径向增益允许对所有颜色分量使用单个公共增益网格,这可大大减小保存每个颜色分量的独立增益网格所需的总存储空间。网格增益数据的减少可降低实现成本,因为网格增益数据表可占图像处理硬件中的相当大部分的存储器或芯片面积。
随后,重新参见图99的原始处理逻辑器方框图900,LSC逻辑器936的输出随后被传给第二个增益、偏移量和箝位(GOC)块938。可在去马赛克(由逻辑器块940执行)之前应用GOC逻辑器938,并可将其用于对LSC逻辑器936的输出进行自动白平衡。在所述实施例中,可按照和GOC逻辑器930(和BLC逻辑器739)类似的方式实现GOC逻辑器938。从而,按照上面的公式11,首先使GOC逻辑器938接收的输入偏移带符号的值,并随后将其乘以增益。随后按照公式12,把得到的值限幅到最小和最大范围。
之后,GOC逻辑器938的输出被转发给去马赛克逻辑器940处理,以根据原始Bayer输入数据产生全色(RGB)图像。可以理解,在每个像素被滤波,从而只获得单个颜色分量的意义上,利用色彩滤镜阵列(比如Bayer滤镜)的图像传感器的原始输出是“不完整的”。从而,对于单个像素收集的数据单独不足以确定颜色。因而,可以使用去马赛克技术,通过内插每个像素的缺失颜色数据,根据原始Bayer数据产生全色图像。
现在参见图107,图107图解说明提供如何对原始Bayer图像模式1034应用去马赛克,以产生全色RGB的概述的图形处理流程692。如图所示,原始Bayer图像1034的4×4部分1036可包括每个颜色分量的独立通道,包括绿色通道1038、红色通道1040和蓝色通道1042。由于Bayer传感器中的每个成像像素只获得一种颜色的数据,因此每个颜色通道1038、1040和1042的颜色数据可以是不完整的,如符号“?”所示。通过应用去马赛克技术1044,可内插每个通道的缺失颜色样本。例如,如附图标记1046所示,内插数据G′可用于填充绿色通道上的缺失样本。类似地,内插数据R′可(结合内插数据G′1046)用于填充红色通道1048上的缺失样本,内插数据B′可(结合内插数据G′1046)用于填充蓝色通道1050上的缺失样本。从而,作为去马赛克处理的结果,每个颜色通道(R、G和B)将具有一组完整的颜色数据,所述颜色数据随后可用于重构全色RGB图像1052。
下面按照一个实施例,说明可由去马赛克逻辑器940实现的去马赛克技术。在绿色通道上,通过对已知的绿色样本使用低通方向滤波器,对相邻的颜色通道(例如,红色和蓝色)使用高通(或梯度)滤波器,可内插缺失颜色样本。对于红色和蓝色通道,可按照相似的方式,不过通过对已知的红色或蓝色值使用低通滤波,对协同定位(colocated)的内插绿色值应用高通滤波,来内插缺失的颜色样本。此外,在一个实施例中,对绿色通道的去马赛克可以根据初始的Bayer颜色数据,利用5×5像素块边缘自适应滤波器。如下进一步所述,边缘自适应滤波器的使用可提供基于水平和垂直滤波值的梯度的连续加权,这减少了常规去马赛克技术中常见的某些伪像,比如混叠、“棋盘格”伪像或“彩虹”伪像的出现。
在对绿色通道的去马赛克期间,使用Bayer图像模式的绿色像素(Gr和Gb像素)的初始值。不过,为了获得绿色通道的一组完整数据,可在Bayer图像模式的红色和蓝色像素内插绿色像素值。按照本技术,首先根据上述5×5像素块,在红色和蓝色像素计算分别称为Eh和Ev的水平和垂直能量分量。Eh和Ev的值可用于获得水平和垂直滤波步骤的边缘加权的滤波值,如下进一步所述。
例如,图108图解说明5×5像素块中,居中位于位置(j,i)的红色像素的Eh和Ev值的计算,其中,j对应于行,i对应于列。如图所示,Eh的计算考虑5×5像素块的中间三行(j-1,j,j+1),Ev的计算考虑5×5像素块的中间三列(i-1,i,i+1)。为了计算Eh,使乘以对应系数(例如,对于列i-2和i+2为-1;对于列i为2)的红色列(i-2,i,i+2)中的各个像素之和的绝对值,与乘以对应系数(例如,对于列i-1为1;对于列i+1为-1)的蓝色列(i-1,i+1)中的各个像素之和相加。为了计算Ev,使乘以对应系数(例如,对于行j-2和j+2为-1;对于行j为2)的红色行(j-2,j,j+2)中的各个像素之和的绝对值与乘以对应系数(例如,对于行j-1为1;对于行j+1为-1)的蓝色行(j-1,j+1)中的各个像素之和相加。下面的公式76和77举例说明了这些计算:
Eh=abs[2((P(j-1,i)+P(j,i)+P(j+1,i))- (76)
(P(j-1,i-2)+P(j,i-2)+P(j+1,i-2))-
(P(j-1,i+2)+P(j,i+2)+P(j+1,i+2)]+
abs[(P(j-1,i-1)+P(j,i-1)+P(j+1,i-1))-
(P(j-1,i+1)+P(j,i+1)+P(j+1,i+1)]
Ev=abs[2(P(j,i-1)+P(j,i)+P(j,i+1))- (77)
(P(j-2,i-1)+P(j-2,i)+P(j-2,i+1))-
(P(j+2,i-1)+P(j+2,i)+P(j+2,i+1]+
abs[(P(j-1,i-1)+P(j-1,i)+P(j-1,i+1))-
(P(j+1,i-1)+P(j+1,i)+P(j+1,i+1)]
从而,总能量和可表示成Eh+Ev。此外,虽然图108中所示的例子图解说明关于在(j,i)的红色中心像素的Eh和Ev的计算,不过应明白,对于蓝色中心像素,可类似地地确定Eh和Ev值。
之后,可对Bayer模式应用水平和垂直滤波,以获得垂直和水平滤波值Gh和Gv,它们可以分别代表水平和垂直方向的内插绿色值。通过除了使用相邻颜色(R或B)的方向梯度获得在缺失绿色样本的位置的高频信号之外,对已知的相邻绿色样本应用低通滤波,可确定滤波值Gh和Gv。例如,参见图109,现在图解说明确定Gh的水平内插的例子。
如图109中所示,在确定Gh时,可以考虑Bayer图像的红色行1060的5个水平像素(R0,G1,R2,G3和R4),其中,假定R2是在(j,i)的中心像素。与这5个像素中的每一个相关的滤波系数用附图标记1062表示。因而,可如下确定对于中心像素R2的绿色值(称为G2′)的内插:
随后可利用各种数学运算产生在下述公式79和80中所示的G2′的表达式:
从而,参见图109和上面的公式78~80,可如下导出关于在(j,i)的绿色值的水平内插的通式:
按照和Gh类似的方式,可确定垂直滤波分量Gv。例如,参见图110,在确定Gv时,可以考虑Bayer图像的红色列1064的5个垂直像素(R0,G1,R2,G3和R4),其中,假定R2是在(j,i)的中心像素。通过沿着垂直方向对已知绿色样本应用低通滤波,对红色通道应用高通滤波,对于Gv,可导出下述表达式:
尽管这里讨论的例子表示了在红色像素上的绿色值的插值,不过应明白,在关于蓝色像素的绿色值的水平和垂直内插中,也可以使用在公式81和82中陈述的表达式。
通过用上面讨论的能量分量(Eh和Ev)加权水平和垂直滤波输出(Gh和Gv),可以确定中心像素(j,i)的最终内插绿色值G′,从而产生下述公式:
如上所述,能量分量Eh和Ev可提供水平和垂直滤波输出Gh和Gv的边缘自适应加权,这有助于减少重构的RGB图像中的图像伪像,比如彩虹伪像,混叠伪像或棋盘格伪像。另外,通过把Eh和Ev分别设定为1,以致Gh和Gv都均等地加权,去马赛克逻辑器940可提供绕过边缘自适应加权特征的选择。
在一个实施例中,在上面的公式51中所示的水平和垂直加权系数可被量化,以把加权系数的精度降低到一组“粗略”值。例如,在一个实施例中,加权系数可被量化成8个可能的权重比:1/8,2/8,3/8,4/8,5/8,6/8,7/8和8/8。其它实施例可以把加权系数量化成16个值(例如,1/16~16/16),32个值(1/32~32/32)等等。可以理解,当与利用全精度值(例如,32位浮点值)相比时,加权系数的量化可降低确定加权系数,并把加权系数应用于水平和垂直滤波器输出时的实现复杂性。
在其它实施例中,除了确定和使用水平和垂直能量分量对水平(Gh)和垂直(Gv)滤波值应用加权系数之外,目前公开的技术还可沿着对角正向和对角负向确定和利用能量分量。例如,在这样的实施例中,也可沿着对角正向和对角负向应用滤波。滤波输出的加权可包括选择两个最高的能量分量,利用选择的能量分量对它们各自的滤波器输出加权。例如,假定两个最高的能量分量对应于垂直方向和对角正向,那么垂直和对角正向能量分量被用于加权垂直和对象正向滤波器输出,以确定内插的绿色值(例如,在Bayer模式中的红色或蓝色像素位置)。
随后,可通过在Bayer图像模式的绿色像素处内插红色和蓝色值,在Bayer图像模式的蓝色像素处内插红色值,并且在Bayer图像模式的红色像素处内插蓝色值,可以进行红色和蓝色通道的去马赛克。按照目前讨论的技术,可利用基于已知相邻红色和蓝色像素的低通滤波和基于协同定位的绿色像素值的高通滤波,内插缺失的红色和蓝色像素值,取决于当前像素的位置,它可以是初始值或内插值(来自上面讨论的绿色通道去马赛克处理)。从而,对于这样的实施例,应明白,可以首先进行缺失的绿色值的内插,使得当内插缺失的红色和蓝色样本时,存在可用的一组完整绿色值(初始值和内插值)。
参考图111,说明红色和蓝色像素值的内插,图111图解说明可对其应用红色和蓝色去马赛克的Bayer图像模式的各种3×3块,以及在对绿色通道去马赛克期间可能已获得的内插绿色值(用G′表示)。首先参见块1070,可如下确定Gr像素(G11)的内插红色值R′11:
其中,G′10和G′12代表用附图标记1078表示的内插绿色值。类似地,可如下确定Gr像素(G11)的内插蓝色值B′11:
其中,G′01和G′21代表内插绿色值(1078)。
随后,参见像素块1072,其中,中心像素是Gb像素(G11),可如在下面的公式86和87中所示,确定内插红色值R′11和蓝色值B′11:
此外,参见像素块1074,可如下确定在蓝色像素B11上的红色值的插值:
其中,G′00,G′02,G′11,G′20和G′22代表如附图标记1080表示的内插绿色值。最后,可如下计算如用像素块1076表示的在红色像素上的蓝色值的插值:
虽然上面讨论的实施例依赖于色差(例如梯度)来确定红色和蓝色内插值,不过,另一个实施例可利用颜色比提供内插的红色值和蓝色值。例如,内插的绿色值(块1078和1080)可用于获得在Bayer图像模式的红色和蓝色像素位置的颜色比,并且可以使用颜色比的线性内插来确定缺失的颜色样本的内插颜色比。可以是内插值或初始值的绿色值可被乘以内插颜色比,从而获得最终的内插颜色值。例如,可按照下面的公式,进行利用颜色比的红色和蓝色像素值的内插,其中,公式90和91表示关于Gr像素的红色和蓝色值的内插,公式92和93表示关于Gb像素的红色和蓝色值的内插,公式94表示在蓝色像素上的红色值的内插,公式95表示在红色像素上的蓝色值的内插:
(当G11是Gr像素时内插的R′11)
(当G11是Gr像素时内插的B′11)
(当G11是Gb像素时内插的R′11)
(当G11是Gb像素时内插的B′11)
(在蓝色像素B11内插的R′11)
(在红色像素R11内插的B′11)
一旦对于Bayer图像模式的每个图像像素内插了缺失的颜色样本,就可组合各个红色、蓝色和绿色通道(例如,图107的1046,1048和1050)的颜色值的完整样本,从而产生全色RGB图像。例如,参见图98和99,原始像素处理逻辑器900的输出910可以是8、10、12或14比特格式的RGB图像信号。
现在参见图112~115,图112~115是图解说明按照公开的实施例对原始Bayer图像模式去马赛克的处理的各个流程图。具体地说,图112的处理1082描述对于给定输入像素P,哪些颜色分量将被内插的确定。根据处理1082的确定结果,(例如,去马赛克逻辑器940)可以执行内插绿色值的处理1100(图113),内插红色值的处理1112(图114),或者内插蓝色值的处理1124(图115)中的一个或多个。
从图112开始,当收到输入像素P时,处理1082开始于步骤1084。判决逻辑器1086确定输入像素的颜色。例如,这可取决于像素在Bayer图像模式内的位置。因而,如果P被识别成是绿色像素(例如,Gr或Gb),那么处理1082进入步骤1088,从而获得P的内插红色和蓝色值。例如,这可包括分别进入图114和115的处理1112和1124。如果P被识别成是红色像素,那么处理1082进入步骤1090,从而获得P的内插绿色和蓝色值。这可包括分别进一步执行图113和115的处理1100和1124。另外,如果P被识别成是蓝色像素,那么处理1082进入步骤1092,从而获得P的内插绿色和红色值。这可包括分别进一步执行图113和114的处理1100和1112。下面进一步说明各个处理1100,1112和1124。
图113中图解说明确定输入像素P的内插绿色值的处理1100,处理1100包括步骤1102~1110。在步骤1102,接收输入像素P(例如,从处理1082)。随后,在步骤1104,识别构成5×5像素块的一组相邻像素,P是5×5块的中心。之后,在步骤1106,分析该像素块,以确定水平和垂直能量分量。例如,可分别按照计算Eh和Ev的公式76和77,确定水平和垂直能量分量。如上所述,能量分量Eh和Ev可用作加权系数,以提供边缘自适应滤波,从而减少最终图像中某些去马赛克伪像的出现。在步骤1108,沿着水平和垂直方向应用低通滤波和高通滤波,以确定水平和垂直滤波输出。例如,可按照公式81和82计算水平和垂直滤波输出Gh和Gv。之后,处理1082进入步骤1110,在步骤1110,根据用能量分量Eh和Ev加权的Gh和Gv的值,内插内插绿色值G′,如公式83中所示。
随后参考图114的处理1112,红色值的内插开始于步骤1114,在步骤1114,接收输入像素P(例如,从处理1082)。在步骤1116,识别构成3×3像素块的一组相邻像素,其中,P是3×3块的中心。之后,在步骤1118,对3×3块内的相邻红色像素应用低通滤波,对协同定位的绿色相邻值应用高通滤波(步骤1120),所述绿色相邻值可以是Bayer图像传感器捕捉的初始绿色值,或者是内插值(例如,用图113的处理1100确定的内插值)。根据低通滤波输出和高通滤波输出,可确定P的内插红色值R′,如步骤1122所示。取决于P的颜色,可按照公式84、86和88之一,确定R′。
就蓝色值的内插来说,可以应用图115的处理。步骤1126和1128通常与处理1112(图114)的步骤1114和1116相同。在步骤1130,对3×3像素块内的相邻蓝色像素应用低通滤波,在步骤1132,对协同定位的绿色相邻值应用高通滤波,所述绿色相邻值可以是Bayer图像传感器捕捉的初始绿色值,或者是内插值(例如,用图113的处理1100确定的内插值)。可根据低通滤波输出和高通滤波输出,确定P的内插蓝色值B′,如步骤1134所示。取决于P的颜色,可按照公式85、87和89之一,确定B′。此外,如上所述,可利用色差(公式84~89)或者颜色比(公式90~95)确定红色值和蓝色值的内插。同样,应明白可以首先进行缺失的绿色值的内插,以致当内插缺失的红色和蓝色样本时,存在可用的一组完整绿色值(原始值和内插值)。例如,可在分别执行图114和115的处理1112和1124之前,应用图113的处理1100以内插所有缺失的绿色样本。
参见图116-119,提供由ISP管道82中的原始像素处理逻辑器900处理的图像的彩图的例子。图116描述可用成像设备30的图像传感器90捕捉的初始图像场景1140。图117表示代表用图像传感器90捕捉的原始图像数据的原始Bayer图像1142。如上所述,常规的去马赛克技术可能不提供以图像数据中的边缘(例如,两种或更多种颜色的区域之间的边界)的检测为基础的自适应滤波,这可能不可取地在最终重构的全色RGB图像中产生伪像。例如,图118表示利用常规的去马赛克技术重构的RGB图像1144,并且可以包括诸如在边缘1148的“棋盘格”伪像1146之类的伪像。不过,比较图像1144和图119的RGB图像1150,RGB图像1150是利用上述去马赛克技术重构的图像的例子,可看出存在于图118中的棋盘格伪像1146并不存在,或者至少在边缘1148显著减小了棋盘格伪像的出现。从而,图116-119中所示的图像意图举例说明与常规方法相比,这里公开的去马赛克技术具有的至少一个优点。
按照这里公开的图像处理技术的某些方面,可利用一组线缓冲器来实现ISP子系统32中的各个处理逻辑器块,所述一组线缓冲器可被配置成使图像数据通过各个处理逻辑器块,如上所示。例如,在一个实施例中,上面在图99中讨论的原始像素处理逻辑器900可利用如图120~123中布置的线缓冲器的结构来实现。特别地,图120描述可用于实现原始像素处理逻辑器900的整个线缓冲器布置,而图121描述如在图120的有界区域1162内所示的线缓冲器的第一子集的放大视图,图122描述可以为降噪逻辑器934的一部分的垂直滤波器的放大视图,图123描述如在图120的有界区域1164内所示的线缓冲器的第二子集的放大视图。
如图120中所示,原始像素处理逻辑器900可以包括编号0~9并被分别标注成附图标记1160a~1160j的一组10个线缓冲器,以及一行逻辑器1160k,所述一行逻辑器1160k包括到原始处理逻辑器900的图像数据输入908(可来自图像传感器或者来自存储器)。从而,图120中所示的逻辑器可包括11行,其中的10行包括线缓冲器(1160a~1160j)。如下所述,原始像素处理逻辑器900的逻辑器单元,包括增益、偏移、箝位逻辑器块930和938(在图120中分别称为GOC1和GOC2),缺陷像素检测和校正(DPC)逻辑器932,降噪逻辑器934(图120中被表示成包括绿色不一致(GNU)校正逻辑器934a、7抽头水平滤波器934b和5抽头垂直滤波器934c),透镜阴影校正(LSC)逻辑器936和去马赛克(DEM)逻辑器940,可共享地利用线缓冲器。例如,在图120中所示的实施例中,用线缓冲器6~9(1160g~1160j)表示的线缓冲器的下部子集可在DPC逻辑器932和降噪逻辑器934的各个部分(包括GNU逻辑器934a、水平滤波器934b和垂直滤波器934c的一部分)之间被共享。用线缓冲器0~5(1160a~1160f)表示的线缓冲器的上部子集可在一部分垂直滤波逻辑器934c,透镜阴影校正逻辑器936,增益、偏移和箝位逻辑器938和去马赛克逻辑器940之间被共享。
为了概述图像数据穿过线缓冲器的移动,表示ISP前端处理逻辑器80的输出的原始图像数据908首先被GOC1逻辑器930接收和处理,在GOC1逻辑器930中,应用适当的增益、偏移和箝位参数。GOC1逻辑器930的输出随后被提供给DPC逻辑器932。如图所示,在线缓冲器6~9内可发生缺陷像素检测和校正处理。DPC逻辑器932的第一输出被提供给出现在线缓冲器9(1160j)上的(降噪逻辑器934的)绿色不一致校正逻辑器934a。从而,在本实施例中,在DPC逻辑器932和GNU校正逻辑器934a之间共用线缓冲器9(1160j)。
随后,线缓冲器9(1160j)的输出(在图121中称为W8)被提供给线缓冲器8(1160i)的输入端。如图所示,线缓冲器8在提供另外的缺陷像素检测和校正处理的DPC逻辑器932和降噪块934的水平滤波逻辑器(934b)之间被共用。如本实施例中所示,水平滤波器逻辑器934b可以是用图121中的滤波器抽头1165a~1165g表示的7抽头滤波器,并且可以被配置成有限脉冲响应(FIR)滤波器。如上所述,在一些实施例中,噪声滤波可以是边缘自适应的。例如,水平滤波器可以是FIR滤波器,不过只有当中心像素和位于抽头的像素之间的差小于至少部分取决于噪声方差的阈值时,滤波器抽头才被使用。
水平滤波逻辑器934b的输出1163(图121)可被提供给垂直滤波逻辑器934c(在图122中更详细地图解说明)和线缓冲器7(1160h)的输入端。在图解说明的实施例中,线缓冲器7被配置成在把其输入W7作为输入W6提供给线缓冲器6(1160g)之前,提供延迟(w)。如图121中所示,线缓冲器6在DPC逻辑器932和降噪垂直滤波器934c之间被共享。
之后,同时参见图120,122和123,线缓冲器的上部子集,即,线缓冲器0~5(1160a~1160f)在降噪垂直滤波器934c(示于图122中)、透镜阴影校正逻辑器936、GOC2逻辑器938和去马赛克逻辑器940之间被共用。例如,提供延迟(w)的线缓冲器5(1160f)的输出被提供给线缓冲器4(1160e)。在线缓冲器4中进行垂直滤波,线缓冲器4中的垂直滤波器934c部分的输出W3被提供给线缓冲器3(1160d),以及向下游提供给线缓冲器4共用的透镜阴影校正逻辑器936、GOC2逻辑器938和去马赛克逻辑器940的各个部分。在本实施例中,垂直滤波逻辑器934c可包括5个抽头1166a~1166e(图122),不过可被配置成按照部分递归(无限脉冲响应(IIR))模式和非递归(FIR)模式工作。例如,当利用所有5个抽头,以致抽头1166c是中心抽头时,垂直滤波逻辑器934c按照部分IIR递归模式工作。本实施例也可选择利用5个抽头中的3个,即,抽头1166c~1166e(抽头1166d是中心抽头),以按照非递归(FIR)模式操作垂直滤波逻辑器934c。在一个实施例中,可利用与降噪逻辑器934相关的配置寄存器,指定垂直滤波模式。
随后,线缓冲器3在把W2输出给线缓冲器2(1160c),以及向下游输出给线缓冲器3共用的透镜阴影校正逻辑器936、GOC2逻辑器938和去马赛克逻辑器940的各个部分之前,接收W3输入信号并提供延迟(w)。如图所示,线缓冲器2也在垂直滤波器934c、透镜阴影校正逻辑器936、GOC2逻辑器938和去马赛克逻辑器940之间被共用,并把输出W1提供给线缓冲器1(1160b)。类似地,线缓冲器1也在垂直滤波器934c、透镜阴影校正逻辑器936、GOC2逻辑器938和去马赛克逻辑器940之间被共用,并把输出W1提供给线缓冲器0(1160a)。去马赛克逻辑器940的输出910可向下游提供给RGB处理逻辑器902,以便进行另外的处理,如下进一步所述。
应明白,图解说明的实施例描述按照使不同处理单元可以同时利用共用线缓冲器的共用方式布置线缓冲器可显著减少实现原始处理逻辑器900所需的线缓冲器的数目。可以理解,这可减小实现图像处理电路32所需的硬件实体面积,从而降低总的设计和制造成本。例如,与不共用线缓冲器的常规实施例相比,在一些实施例中,目前图解说明的在不同处理组件之间共用线缓冲器的技术可以使所需的线缓冲器的数目减少40~50%以上。此外,虽然目前图解说明的图120中所示的原始像素处理逻辑器900的实施例利用10个线缓冲器,不过应理解,在其它实施例中可以利用更少或更多的线缓冲器。即,图120中所示的实施例仅仅意图图解说明在多个处理单元间共用线缓冲器的原理,并且不应被理解成把本技术局限于原始像素处理逻辑器900。事实上,可在ISP子系统32的任意逻辑器块中实现图120中所示的公开内容的各个方面。
图124是表示按照图120~123中所示的线缓冲器结构处理原始像素数据的方法1167的流程图。从步骤1168开始,原始像素处理逻辑器900的线缓冲器可接收原始像素数据(例如,来自ISP前端80、存储器108、或两者)。在步骤1169,对原始像素数据应用第一组增益、偏移和箝位(GOC1)参数。随后,在步骤1170,利用线缓冲器的第一子集(例如,图120中的线缓冲器6~9),进行缺陷像素检测和校正。之后,在步骤1171,利用线缓冲器的第一子集的至少一个线缓冲器(例如,线缓冲器9),应用绿色不一致(GNU)校正。之后,如在步骤1172所示,同样利用第一子集的至少一个线缓冲器,应用用于降噪的水平滤波。在图120中所示的实施例中,用于进行GNU校正和水平滤波的第一子集的线缓冲器可以不同。
方法1167随后进入步骤1173,在步骤1173,利用第一子集的至少一个线缓冲器以及原始像素处理逻辑器900的线缓冲器的第二子集的至少一部分(例如,线缓冲器0~5),应用用于降噪的垂直滤波。例如,如上所述,取决于垂直滤波模式(例如,递归或非递归),可以使用线缓冲器的第二子集的一部分或者全部。此外,在一个实施例中,第二子集可以包括未包括在步骤1170的线缓冲器的第一子集中的剩余线缓冲器。在步骤1174,使用线缓冲器的第二子集对原始像素数据应用透镜阴影校正。随后,在步骤1175,使用线缓冲器的第二子集应用第二组增益、偏移和箝位(GOC2)参数,之后,线缓冲器的第二子集还被用于对原始图像数据去马赛克,如在步骤1176所示。随后在步骤1177,去马赛克的RGB颜色数据被发送给下游,以便由RGB处理逻辑器902进行另外的处理,如下更详细所述。
返回参见图98,在详尽说明了可输出RGB图像信号910的原始像素处理逻辑器900的操作之后,现在说明将专注于RGB处理逻辑器902进行的RGB图像信号910的处理。如图所示,RGB图像信号910可被发给选择逻辑器914和/或存储器108。RGB处理逻辑器902可接收输入信号916,取决于选择逻辑器914的结构,输入信号916可以是来自信号910或者来自存储器108的RGB图像数据,如信号912所示。RGB图像数据916可由RGB处理逻辑器902处理,以进行颜色调整操作,包括颜色校正(例如,利用颜色校正矩阵)、用于自动白平衡的颜色增益的应用、以及全局色调映射等等。
图125是RGB处理逻辑器902的一个实施例的更详细示图。如图所示,RGB处理逻辑器902包括增益、偏移和箝位(GOC)逻辑器1178,RGB伽玛调整逻辑器和颜色空间变换逻辑器1182。输入信号916首先被增益、偏移和箝位(GOC)逻辑器1178接收。在图解说明的实施例中,在颜色校正逻辑器1179处理R、G或B颜色通道中的一个或多个之前,GOC逻辑器1178可应用增益,以对R、G或B颜色通道中的一个或多个执行自动白平衡。
除了处理RGB域的颜色分量,而不是Bayer图像数据的R、B、Gr和Gb分量之外,GOC逻辑器1178类似于原始像素处理逻辑器900的GOC逻辑器930。操作中,首先使当前像素的输入值偏移带符号的值O[c],随后将其乘以增益G[c],如上面的公式11中所示,其中,c代表R、G和B。如上所述,增益G[c]可以是具有2个整数比特和14个小数比特(例如,浮点表示法中的2.14)的16比特无符号数,增益G[c]的值可在统计信息处理期间(例如,在ISP前端块80中)预先确定。随后按照公式12,把计算的像素值Y(根据公式11)限幅到最小和最大范围。如上所述,变量min[c]和max[c]可分别代表最小和最大输出值的带符号的16比特“限幅值”。在一个实施例中,GOC逻辑器1178还可被配置成为每个颜色分量R、G和B保持分别高于最大值和低于最小值而被限幅的像素的数目的计数。
GOC逻辑器1178的输出随后被转发给颜色校正逻辑器1179。按照目前公开的技术,颜色校正逻辑器1179可被配置成利用颜色校正矩阵(CCM)对RGB图像数据应用颜色校正。在一个实施例中,CCM可以是3×3RGB变换矩阵,不过在其它实施例中,也可以利用其它维数的矩阵(例如,4×3等)。因而,可如下表示对具有R、G和B分量的输入像素进行颜色校正的处理:
其中,R、G和B代表输入像素的当前红色、绿色和蓝色值,CCM00~CCM22代表颜色校正矩阵的系数,R′、G′和B′代表输入像素的校正后的红色、绿色和蓝色值。因而,可按照下面的公式97~99计算正确的颜色值:
R′=(CCM00×R)+(CCM01×G)+(CCM02×B) (97)
G′=(CCM10×R)+(CCM11×G)+(CCM12×B) (98)
B′=(CCM20×R)+(CCM21×G)+(CCM22×B) (99)
如上所述,CCM的系数(CCM00~CCM22)可在ISP前端块80中的统计信息处理期间确定。在一个实施例中,可以选择给定颜色通道的系数,使得这些系数(例如,用于红色校正的CCM00、CCM01和CCM02)的和等于1,这有助于保持明度和和颜色平衡。此外,系数通常被选择成使得对被校正的颜色应用正增益。例如,就红色校正来说,系数CCM00可大于1,而系数CCM01和CCM02中的一个或两个可小于1。按照这种方式设定系数可增强最终的校正后R′值中的红色(R)分量,同时减少一些蓝色(B)和绿色(G)分量。可以理解,这可解决在初始Bayer图像的采集期间发生的颜色重叠的问题,因为特定的着色像素的一部分经滤波的光可能“流(bleed)”到不同颜色的相邻像素中。在一个实施例中,CCM的系数可被设置成具有4个整数比特和12个小数比特的16比特的2的补码值(用浮点表示法表示成4.12)。另外,如果计算的校正颜色值超过最大值或者低于最小值,那么颜色校正逻辑器1179可提供限幅。
RGB颜色校正逻辑器1179的输出随后被传给另一个GOC逻辑器块1180。可按照和GOC逻辑器1178相同的方式实现GOC逻辑器块1180,从而,这里不再重复所提供的增益、偏移和箝位功能的详细说明。在一个实施例中,在颜色校正之后应用GOC逻辑器1180可根据校正的颜色值,提供图像数据的自动白平衡,还可调整红-绿比和蓝-绿比的传感器变化。
之后,GOC逻辑器1180的输出被发给RGB伽玛调整逻辑器1181进行进一步处理。例如,RGB伽玛调整逻辑器1181可提供伽玛校正、色调映射、直方图匹配等等。按照公开的实施例,伽玛调整逻辑器1181可提供输入RGB值到对应的输出RGB值的映射。例如,伽玛调整逻辑器可提供分别用于R、G和B分量的三个查寻表的组。例如,每个查寻表可被配置成保存256个条目的10比特值,每个值代表一个输出级。表条目可均匀分布在输入像素值的范围中,以致当输入值落在两个条目之间时,可以线性内插输出值。在一个实施例中,用于R、G和B分量的三个查寻表都可被复制,以致在存储器中“双缓冲”查寻表,从而允许在处理期间使用一个表,同时更新其副本。根据上面讨论的10比特输出值,应注意,作为本实施例中的伽玛校正处理的结果,14比特RGB图像信号实际上被下采样成10比特。
伽玛调整逻辑器1181的输出可被发送给存储器108和/或颜色空间变换逻辑器1182。颜色空间变换(CSC)逻辑器1182可被配置成把来自伽玛调整逻辑器1181的RGB输出转换成YCbCr格式,其中,Y代表亮度分量,Cb代表蓝色差色度分量,Cr代表红色差色度分量,作为伽玛调整操作期间,从14比特到10比特的RGB数据的位深度变换的结果,Y、Cb和Cr可分别采用10比特格式。如上所述,在一个实施例中,伽玛调整逻辑器1181的RGB输出可被下采样成10比特,随后由CSC逻辑器1182将其转换成10比特YCbCr值,所述10比特YCbCr值随后可被转发给下面进一步说明的YCbCr处理逻辑器904。
可利用颜色空间变换矩阵(CSCM)进行从RGB域到YCbCr颜色空间的变换。例如,在一个实施例中,CSCM可以是3×3变换矩阵。CSCM的系数可按照已知变换公式,比如BT.601和BT.709标准来设定。另外,根据期望的输入和输出范围,CSCM系数可以是灵活的。从而,在一些实施例中,可根据在ISP前端块80中的统计信息处理期间收集的数据,确定和编程CSCM系数。
可如下表示对RGB输入像素进行YCbCr颜色空间变换的处理:
其中,R、G和B代表10比特形式的输入像素的当前红色、绿色和蓝色值(例如,由伽玛调整逻辑器1181处理),CSCM00~CSCM22代表颜色空间变换矩阵的系数,Y、Cb和Cr代表输入像素的得到的亮度和色度分量。因而,可按照下面的公式101~103计算Y、Cb和Cr的值:
Y=(CSCM00×R)+(CSCM01×G)+(CSCM02×B) (101)
Cb=(CSCM10×R)+(CSCM11×G)+(CSCM12×B) (102)
Cr=(CSCM20×R)+(CSCM21×G)+(CSCM22×B) (103)
在颜色空间变换运算之后,可以按信号918的形式,从CSC逻辑器1182输出结果YCbCr值,信号918可由YCbCr处理逻辑器904处理,如下所述。
在一个实施例中,CSCM的系数可以是具有4个整数比特和12个小数比特的16比特的2的补码数(4.12)。在另一个实施例中,CSC逻辑器1182还可被配置成对Y、Cb和Cr值分别应用偏移量,并且把结果值限制到最小值和最大值。例如,假定YCbCr值为10比特格式,偏移量可以在-512~512范围中,最小值和最大值可分别为0和1023。
再参见图98中的ISP管道逻辑器82的方框图,YCbCr信号918可被发给选择逻辑器922和/或存储器108。YCbCr处理逻辑器904可接收输入信号924,取决于选择逻辑器922的结构,输入信号924可以是来自信号918或者来自存储器108(如信号920所示)的YCbCr图像数据。YCbCr图像数据924随后可由YCbCr处理逻辑器904处理,以便进行亮度锐化,色度抑制,色度降噪,以及明度、对比度和颜色调整等等。此外,YCbCr处理逻辑器904可提供沿着水平方向和垂直方向的已处理图像数据的伽玛映射和比例缩放。
图126是更详细地描述YCbCr处理逻辑器904的实施例的方框图。如图所示,YCbCr处理逻辑器904包括图像锐化逻辑器1183,调整明度、对比度和/或颜色的逻辑器1184,YCbCr伽玛调整逻辑器1185,色度抽选逻辑器1186和比例缩放逻辑器1187。YCbCr处理逻辑器904可被配置成利用1平面、2平面或3平面存储器结构,处理4:4:4、4:2:2或4:2:0格式的像素数据。此外,在一个实施例中,YCbCr输入信号924可以10比特值的形式提供亮度和色度信息。
可以理解,对1平面、2平面或3平面的引用指的是图片存储器中利用的成像平面的数目。例如,在3平面格式中,Y、Cb和Cr分量可以利用各自分离的存储器平面。在2平面格式中,第一平面可用于亮度分量(Y),交错Cb和Cr样本的第二平面可以用于色度分量(Cb和Cr)。在1平面格式中,存储器中的单个平面与亮度和色度样本交错。此外,就4:4:4、4:2:2和4:2:0格式来说,可以理解,4:4:4格式指的是以相同速率采样3个YCbCr分量中的每个分量的采样格式。在4:2:2格式中,以亮度分量Y的采样速率的一半的速率对色度分量Cb和Cr进行子采样,从而沿着水平方向使色度分量Cb和Cr的分辨率减半。类似地,4:2:0格式沿着垂直方向和水平方向对色度分量Cb和Cr进行子采样。
YCbCr信息的处理可在源缓冲器内定义的激活源区内进行,其中,所述激活源区域包含“有效的”像素数据。例如,参见图127,图中图解说明了其中定义有激活源区1189的源缓冲器1188。在图解说明的例子中,源缓冲器可代表提供10比特值的源像素的4:4:41平面格式。对于亮度(Y)样本和色度样本(Cb和Cr),可以单独规定激活源区1189。从而,应明白,激活源区1189实际上可包括亮度和色度样本的多个激活源区。亮度和色度的激活源区1189的起点可根据离源缓冲器的基地址(0,0)1190的偏移量来确定。例如,亮度激活源区的起始位置(Lm_X,Lm_Y)1191可用相对于基地址1190的x偏移量1193和y偏移量1196定义。类似地,色度激活源区域的起始位置(Ch_X,Ch_Y)1192可用相对于基地址1190的x偏移量1194和y偏移量1198定义。应注意,在本例中,分别用于亮度和色度的y偏移量1196和1198可以相等。根据起始位置1191,可用宽度1195和高度1200定义亮度激活源区域,宽度1195和高度1200可以分别代表x方向和y方向的亮度样本的数目。另外,根据起始位置1192,色度激活源区域可用宽度1202和高度1204定义,宽度1202和高度1204分别代表x方向和y方向的色度样本的数目。
图128还提供表示如何按2平面格式确定亮度样本和色度样本的激活源区域的例子。例如,如图所示,可按用相对于起始位置1191的宽度1195和高度1200规定的区域,在第一源缓冲器1188(具有基地址1190)中定义亮度激活源区域1189。可以用相对于起始位置1192的宽度1202和高度1204规定的区域的形式,在第二源缓冲器1206(具有基地址1190)中定义色度激活源区域1208。
考虑到上述内容,并且返回参见图126,YCbCr信号924首先被图像锐化逻辑器1183接收。图像锐化逻辑器1183可被配置成进行图片锐化和边缘增强处理,以增强图像中的纹理和边缘细节。可以理解,图像锐化可提高感知的图像分辨率。不过,通常可取的是图像中的现有噪声不被检测为纹理和/或边缘,从而在锐化处理中不被放大。
按照本技术,图像锐化逻辑器1183可利用多尺度非锐化掩模滤波器,对YCbCr信号的亮度(Y)分量进行图像锐化。在一个实施例中,可以设置不同尺度(scale)大小的两个或多于两个的低通高斯滤波器。例如,在设置两个高斯滤波器的实施例中,从具有第二半径(y)的第二高斯滤波器的输出中减去具有第一半径(x)的第一高斯滤波器的输出(例如,高斯模糊),其中,x大于y,以产生非锐化掩模。通过从Y输出中减去多个高斯滤波器的输出,还可获得另外的非锐化掩模。在一些实施例中,所述技术还可提供可利用非锐化掩模进行的自适应核(coring)阈值比较操作,以致根据比较的结果,可在作为初始Y输入图像或者高斯滤波器之一的输出而选择的基本图像中加入增益量,从而产生最终输出。
参见图129,图129是说明按照目前公开的技术的实施例,进行图像锐化的例证逻辑器1210的方框图。逻辑器1210代表可应用于输入的亮度图像Yin的多尺度非锐化滤波掩模。例如,如图所示,Yin被两个低通高斯滤波器1212(G1)和1214(G2)接收和处理。在本例中,滤波器1212可以是3×3滤波器,滤波器1214可以是5×5滤波器。不过,应理解,在另外的实施例中,也可以使用不止两个高斯滤波器,包括不同尺度的滤波器(例如,7×7,9×9等)。可以理解,由于低通滤波处理的缘故,可从G1和G2的输出中除去通常对应于噪声的高频分量,从而产生“非锐化”图像(G1out和G2out)。如下所述,利用非锐化输入图像作为基本图像允许作为锐化滤波器的一部分的降噪。
可如下所示定义3×3高斯滤波器1212和5×5高斯滤波器1214:
例如,在一个实施例中,可如下选择高斯滤波器G1和G2的值:
根据Yin、G1out和G2out,可以生成3个非锐化掩模Sharp1、Sharp2和Sharp3。Sharp1可被确定为从高斯滤波器1212的非锐化图像G1out减去高斯滤波器1214的非锐化图像G2out。由于Sharp1实际上是两个低通滤波器之间的差值,因此它可被称为“中频带”掩模,因为在G1out和G2out非锐化图像中,较高频率的噪声分量已被滤除。另外,通过从输入亮度图像Yin中减去G2out,可计算Sharp2,并且通过从输入亮度图像Yin中减去G1out,可计算Sharp3。如下所述,通过利用非锐化掩模Sharp1、Sharp2和Sharp3,可以应用自适应阈值核化方案。
参见选择逻辑器1216,根据控制信号UnsharpSel可选择基本图像。在图解说明的实施例中,基本图像或者是输入图像Yin,或者是经滤波的输出G1out或G2out。可以理解,当初始图像具有较高的噪声方差(例如,几乎和信号方差一样高)时,利用初始图像Yin作为锐化中的基本图像可能不足以在锐化期间减少噪声分量。因而,当在输入图像中检测到噪声成分(noise content)的特定阈值时,选择逻辑器1216可适合于选择从中已减少可能包含噪声的高频内容的低通滤波输出G1out或G2out中的一个。在一个实施例中,通过分析在ISP前端块80中的统计信息处理期间获得的统计数据来确定图像的噪声成分,可确定控制信号UnsharpSel的值。例如,如果输入图像Yin具有低噪声成分,以致表观噪声不可能由于锐化处理而增大,那么输入图像Yin可被选为基本图像(例如,UnsharpSel=0)。如果确定输入图像Yin包含显著水平的噪声,以致锐化处理会放大噪声,那么可以选择经滤波的输出G1out或G2out(例如,分别为UnsharpSe1=1或2)。从而,通过应用自适应技术来选择基本图像,逻辑器1210实质上提供降噪功能。
随后,按照自适应核化阈值方案,可对Sharp1、Sharp2和Sharp3掩模中的一个或多个应用增益,如下所述。随后,可利用比较器块1218、1220和1222,比较非锐化值Sharp1、Sharp2和Sharp3和各个阈值SharpThd1、SharpThd2和SharpThd3(不一定分别地)。例如,Sharp1值总是在比较器块1218与SharpThd1比较。就比较器块1220来说,可以对照Sharp1或Sharp2比较阈值SharpThd2,取决于选择逻辑器1226。例如,选择逻辑器1226可根据控制信号SharpCmp2的状态,选择Sharp1或Sharp2(例如,SharpCmp2=1选择Sharp1;SharpCmp2=0选择Sharp2)。例如,在一个实施例中,可根据输入图像(Yin)的噪声方差/内容,确定SharpCmp2的状态。
在图解说明的实施例中,通常最好设定SharpCmp2和SharpCmp3的值,以选择Sharp1,除非检测到图像数据具有相对低的量的噪声。这是因为作为高斯低通滤波器G1和G2的输出之间的差值的Sharp1通常对噪声不太敏感,从而有助于降低由于“有噪声的”图像数据中的噪声水平波动而引起的SharpAmt1、SharpAmt2和SharpAmt3值的变化量。例如,如果初始图像具有高噪声方差,那么当利用固定阈值时,一些高频分量可能没被捕捉,从而可以在锐化处理期间被放大。因而,如果输入图像的噪声成分较高,那么一些噪声成分可存在于Sharp2中。在这种情况下,SharpCmp2可被设定为1,以选择中频带掩模Sharp1,如上所述,中频带掩模Sharp1具有减少的高频内容(因为是两个低通滤波器输出的差值),从而对噪声不太敏感。
可以理解,可在SharpCmp3的控制下,对选择逻辑器1224进行的对Sharp1或Sharp3的选择应用类似的处理。在一个实施例中,SharpCmp2和SharpCmp3可被默认设定为1(例如,使用Sharp1),并且只对识别为通常具有低噪声方差的那些输入图像才被设定为0。这实质上提供自适应核化阈值方案,其中,根据输入图像的噪声方差,比较值(Sharp1、Sharp2或Sharp3)的选择是自适应的。
根据比较器块1218、1220和1222的输出,通过对基本图像(例如,经逻辑器1216选择的基本图像)应用增益的非锐化掩模,可确定锐化的输出图像Ysharp。例如,首先参见比较器块1222,比较SharpThd3和选择逻辑器1224提供的B输入(这里称为“SharpAbs”,并且取决于SharpCmp3的状态,可以等于Sharp1或Sharp3)。如果SharpAbs大于阈值SharpThd3,那么对Sharp3应用增益SharpAmt3,并且作为结果的值被加入基本图像中。如果SharpAbs小于阈值SharpThd3,那么可应用衰减的增益Att3。在一个实施例中,可如下确定衰减增益Att3:
其中,SharpAbs是由选择逻辑器1224确定的Sharp1或Sharp3。与全增益(SharpAmt3)或者衰减增益(Att3)相加的基本图像的选择由选择逻辑器1228根据比较器块1222的输出进行。可以理解,衰减增益的使用可以解决其中SharpAbs不大于阈值(例如,SharpThd3),不过图像的噪声方差仍然接近给定阈值的情况。这可以有助于减小锐化像素和非锐化像素之间的明显过渡。例如,如果在这样的情况下,未应用衰减增益地使图像数据通过,那么所得到的像素可能表现为缺陷像素(例如,亮点)。
随后,对比较器块1220可应用类似的处理。例如,取决于SharpCmp2的状态,选择逻辑器1226可提供Sharp1或Sharp2,作为给比较器块1220的对照阈值SharpThd2比较的输入。取决于比较器块1220的输出,增益SharpAmt2或者基于SharpAmt2的经衰减的增益Att2被应用于Sharp2,并被加入到上面说明的选择逻辑器1228的输出中。可以理解,除了对于可被选为Sharp1或Sharp2的SharpAbs应用增益SharpAmt2和阈值SharpThd2之外,可按照和上面的公式104类似的方式计算经衰减的增益Att2。
之后,对Sharp1应用增益SharpAmt1或经衰减的增益Att1,并把得到的值和选择逻辑器1230的输出相加,从而产生锐化的像素输出Ysharp(来自选择逻辑器1232)。可根据比较Sharp1与阈值SharpThd1的比较器块1218的输出,确定应用增益SharpAmt1或者经衰减的增益Att1的选择。同样地,可按照和上面的公式104类似的方式确定经衰减的增益Att1,除了相对于Sharp1应用增益SharpAmt1和阈值SharpThd1之外。分别利用三个掩模被比例缩放的所得到的锐化像素值被添加到输入像素Yin中,从而产生锐化的输出Ysharp,在一个实施例中,锐化的输出Ysharp可被限幅成10比特(假定以10比特精度进行YCbCr处理)。
可以理解,当与常规的非锐化掩模技术比较时,本公开中陈述的图像锐化技术可改善纹理和边缘的增强,同时还减少输出图像中的噪声。特别地,本发明的技术特别适合于其中利用例如CMOS图像传感器捕捉的图像表现出较差的信噪比(比如利用集成到便携式设备(例如移动电话)中的低分辨率照相机,在低照明条件下获得的图像)的应用。例如,当噪声方差和信号方差相当时,难以使用固定阈值进行锐化,因为一些噪声分量会与纹理和边缘一起被锐化。因而,如上所述,这里提供的技术可通过利用多尺度高斯滤波器从非锐化图像(例如,G1out和G2out)中提取特征,来从输入图像中滤除噪声,以便提供噪声成分减少的锐化图像。
在继续说明之前,应明白,图解说明的逻辑器1210仅仅意图提供本技术的一个例证实施例。在其它实施例中,图像锐化逻辑器1183可以提供另外的或者更少的特征。例如,在一些实施例中,逻辑器1210可以仅仅传递基本值,而不是应用衰减增益。另外,一些实施例可以不包括选择逻辑器块1224、1226或1216。例如,比较器块1220和1222可以仅分别接收Sharp2和Sharp3的值,而不是分别接收来自选择逻辑器块1224和1226的选择输出。虽然这样的实施例不提供和图129中所示的实现一样鲁棒的锐化和/或降噪特征,不过应理解,这样的设计选择是成本和/或业务相关约束的结果。
在本实施例中,一旦获得锐化的图像输出YSharp,图像锐化逻辑器1183还可以提供边缘增强和色度抑制特征。下面分别讨论这些附加特征。首先参见图130,按照一个实施例,图解说明进行可在图129的锐化逻辑器1210的下游实现的边缘增强的例证逻辑器1234。如图所示,Sobel滤波器1236处理初始输入值Yin,以便进行边缘检测。Sobel滤波器1236可根据初始图像的3×3像素块(下面称为“A”),确定梯度值YEdge,Yin是3×3像素块的中心像素。在一个实施例中,Sobel滤波器1236可通过卷积初始图像数据来计算YEdge,以检测水平方向和垂直方向的变化。该处理示于下面的公式105~107中。
Gx=Sx×A, (105)
Gy=Sy×A, (106)
YEdge=Gx×Gy,(107)
其中,Sx和Sy分别代表用于水平方向和垂直方向的梯度边缘强度检测的矩阵算子,并且Gx和Gy分别代表包含水平和垂直变化导数的梯度图像。因而,输出YEdge被确定为Gx和Gy的乘积。
YEdge随后和上面在图129中讨论的中频带Sharp1掩模一起被选择逻辑器1240接收。根据控制信号EdgeCmp,在比较器块1238将Sharp1或YEdge与阈值EdgeThd进行比较。例如,根据图像的噪声成分,可确定EdgeCmp的状态,从而提供用于边缘检测和增强的自适应核化阈值方案。随后,比较器块1238的输出可以被提供给选择逻辑器1242,并且可应用全增益或经衰减的增益。例如,当选择的给比较器1238的B输入(Sharp1或YEdge)高于EdgeThd时,使YEdge乘以边缘增益EdgeAmt,从而确定要应用的边缘增强的量。如果在比较器块1238的B输入小于EdgeThd,那么可应用经衰减的边缘增益AttEdge,以避免边缘增强像素和初始像素之间的明显过渡。可以理解,可按照和上面的公式104中所示类似的方式计算AttEdge,不过其中,对“SharpAbs”(它可以是Sharp1或YEdge,取决于选择逻辑器1240的输出)应用EdgeAmt和EdgeThd。从而,利用增益(EdgeAmt)或者经衰减的增益(AttEdge)增强的边缘像素可添加到YSharp(图129的逻辑器1210的输出)中,以获得边缘增强输出像素Yout,在一个实施例中,边缘增强输出像素Yout可被限幅到10比特(假定以10比特精度进行YCbCr处理)。
就图像锐化逻辑器1183提供的色度抑制特征来说,这样的特征可衰减在亮度边缘的色度。通常,通过取决于从上面说明的亮度锐化和/或边缘增强步骤获得的值(YSharp,Yout),应用小于1的色度增益(衰减因子),可进行色度抑制。例如,图131表示包括代表可为对应的锐化亮度值(YSharp)选择的色度增益的曲线1252的曲线图1250。曲线图1250表示的数据可被实现为YSharp值和介于0和1之间的对应色度增益(衰减因子)的查寻表。查寻表用于近似曲线1252。对于协同定位在查寻表中的两个衰减因子之间的YSharp值来说,可对与高于和低于当前YSharp值的YSharp值对应的两个衰减因子应用线性内插。此外,在其它实施例中,输入亮度值也可被选为逻辑器1210确定的Sharp1、Sharp2或Sharp3值之一,如上在图129中所示,或者由逻辑器1234确定的YEdge值,如图130中所示。
之后,图像锐化逻辑器1183(图126)的输出由明度、对比度和颜色(BCC)调整逻辑器1184处理。图132是描述BCC调整逻辑器1183的实施例的功能方框图。如图所示,逻辑器1184包括明度和对比度处理块1262、全局色相控制块1264、和饱和度控制块1266。目前图解说明的实施例提供10比特精度的YCbCr数据的处理,不过其它实施例可以利用不同的位深度。下面讨论各个块1262、1264和1266的功能。
首先参见明度和对比度处理块1262,首先从亮度(Y)数据中减去偏移量YOffset,以把黑电平设定为0。这样做是为了确保对比度调整不会变更黑电平。随后,把亮度值乘以对比度增益值,以应用对比度控制。例如,对比度增益值可以是具有2个整数比特和10个小数比特的12比特无符号值,从而提供最高为像素值4倍的对比度增益范围。之后,通过增加或者从亮度数据中减去明度偏移量值,可实现明度调整。例如,本实施例中的明度偏移量可以是具有-512~+512范围的10比特的2的补码值。此外,应注意,在对比度调整之后进行明度调整,以避免当改变对比度时,使DC偏移量变化。之后,把初始YOffset加回到调整后的亮度数据中,从而复原黑电平。
块1264和1266提供基于Cb和Cr数据的色相特性的颜色调整。如图所示,首先从Cb和Cr数据中减去偏移量512(假定10比特处理),从而范围置于接近于0。随后按照下述公式调整色相:
Cbadj=Cb cos(θ)+Cr sin(θ),(108)
Cradj=Cr cos(θ)-Cb sin(θ),(109)
其中Cbadj和Cradj代表经调整的Cb和Cr值,其中,θ代表色相角,它可被如下计算:
上面的运算由全局色相控制块1264内的逻辑器描述,并可用下述矩阵运算表示:
其中,Ka=cos(θ),Kb=sin(θ),并且在上面的公式110中定义了θ。
之后,可对Cbadj和Cradj值应用饱和度控制,如饱和度控制块1266所示。在图解说明的实施例中,通过对每个Cb和Cr值应用全局饱和度乘数和基于色相的饱和度乘数,进行饱和度控制。基于色相的饱和度控制可改善颜色的再现。可在YCbCr颜色空间中表示颜色的色相,如图133中的色轮图1270所示。可以理解,通过使HSV颜色空间(色相、饱和度和强度)中的相同色轮移位约109°,可以得到YCbCr色相和饱和度色轮1270。如图所示,色轮图1270包括代表在0~1范围内的饱和度乘数(S),以及如上定义的在0°~360°范围内的θ的角度值的圆周值。每个θ可代表不同的颜色(例如,49°=洋红色,109°=红色,229°=绿色,等等)。通过选择适当的饱和度乘数S,可以调整在特定色相角θ的颜色的色相。
返回参见图132,(在全局色相控制块1264中计算的)色相角θ可被用作Cb饱和度查寻表1268和Cr饱和度查寻表1269的索引。在一个实施例中,饱和度查寻表1268和1269可包含均匀分布在0°~360°色相范围中的256个饱和度值(例如,第一个查寻表条目位于0°,最后一个条目位于360°),并且借助查寻表中刚好在当前色相角θ之下和之上的饱和度值的线性内插,可确定在给定像素的饱和度值S。通过把全局饱和度值(它可以是每个Cb和Cr的全局常数)乘以确定的基于色相的饱和度值,获得每个Cb和Cr分量的最终饱和度值。从而,如在基于色相的饱和度控制块1266中所示,通过把Cbadj和Cradj乘以它们各自的最终饱和度值,可确定最终的校正Cb′和Cr′值。
之后,BCC逻辑器1184的输出被传给YCbCr伽玛调整逻辑器1185,如图126中所示。在一个实施例中,伽玛调整逻辑器1185可为Y、Cb和Cr通道提供非线性映射功能。例如,输入的Y、Cb和Cr值被映射成对应的输出值。同样,假定以10比特处理YCbCr数据,那么可以利用内插的10比特256条目查寻表。可以一对一地为Y、Cb和Cr通道提供三个这样的查寻表。256个输入条目中的每个条目可以是均匀分布的,并且利用被映射到刚好在当前输入索引之上和之下的索引的输出值的线性内插,可确定输出。在一些实施例中,也可以使用具有1024个条目(对于10比特数据)的非内插查寻表,不过这样的查寻表可具有明显更高的存储器要求。可以理解,通过调整查寻表的输出值,YCbCr伽玛调整功能也可用于实现某些图像滤波器效果,比如黑白、褐色调、负像,负感等等。
随后,色度抽选逻辑器1186可对伽玛调整逻辑器1185的输出应用色度抽选。在一个实施例中,色度抽选逻辑器1186可被配置成进行水平抽选,以把YCbCr数据从4:4:4格式转换成4:2:2格式,在4:2:2格式中,以为亮度数据的一半的速率对色度(Cr和Cb)信息进行子采样。例如,通过对一组7个水平像素应用7抽头低通滤波器,比如半带lanczos滤波器,可实现抽选,如下所示:
其中,in(i)代表输入像素(Cb或Cr),C0~C6代表7抽头滤波器的滤波系数。每个输入像素具有独立的滤波系数(C0~C6),以允许用于色度滤波样本的灵活相移。
此外,在一些情况下,也可在无滤波的情况下进行色度抽选。当源图像最初是按4:2:2格式接收的,不过被上采样成4:4:4格式,以便进行YCbCr处理时,这是有益的。在这种情况下,作为结果的抽选4:2:2图像与初始图像相同。
随后,在从YCbCr处理块904输出之前,从色度抽选逻辑器1186输出的YCbCr数据可利用比例缩放逻辑器1187比例缩放。比例缩放逻辑器1187的功能可以与上面参考图59说明的前端像素处理单元150的合并补偿滤波器652中的比例缩放逻辑器709、710的功能类似。例如,比例缩放逻辑器1187可分两步进行水平和垂直比例缩放。在一个实施例中,5抽头多相滤波器可用于垂直比例缩放,9抽头多相滤波器可用于水平比例缩放。多抽头多相滤波器可把从源图像中选择的像素乘以加权系数(例如,滤波系数),随后计算输出的总和,从而形成目的地像素。可根据当前像素位置和滤波器抽头的数目,选择所选像素。例如,就垂直5抽头滤波器来说,可以选择在当前像素的每个垂直侧上的两个相邻像素,就水平9抽头滤波器来说,可以选择在当前像素的每个水平侧上的四个相邻像素。滤波系数可从查寻表提供,并且可由当前像素间小数位置确定。比例缩放逻辑器1187的输出926随后从YCbCr处理块904被输出。
返回图98,处理后的输出信号926可被发给存储器108,或者按照图7中所示的图像处理电路32的实施例,可作为图像信号114从ISP管道处理逻辑器82输出给显示硬件(例如,显示器28),以供用户查看,或者输出给压缩引擎(例如,编码器118)。在一些实施例中,在被解压缩和提供给显示器之前,图像信号114还可由图形处理单元和/或压缩引擎处理并保存。另外,还可设置一个或多个帧缓冲器,以控制输出给显示器的图像数据,尤其是视频图像数据的缓存。此外,在设置I SP后端处理逻辑器120的实施例(例如,图8)中,图像信号114可被发送给下游,以便进行另外的后处理步骤,如在下节中所述。
ISP后端处理逻辑器
上面详细说明了ISP前端逻辑器80和ISP管线82,现在说明将把注意力转移到上面在图8中描述的ISP后端处理逻辑器120。如上所述,ISP后端逻辑器120通常用于接收ISP管线82提供的,或者来自存储器108(信号124)的处理后的图像数据,和进行另外的图像后处理操作,即,在把图像数据输出给显示设备28之前。
图134是表示ISP后端逻辑器120的一个实施例的方框图。如图所示,ISP后端逻辑器120可包括特征检测逻辑器2200,局部色调映射逻辑器(LTM)2202,明度、对比度和颜色调整逻辑器2204,比例缩放逻辑器2206和后端统计单元2208。在一个实施例中,特征检测逻辑器2200可包括面部检测逻辑器,并且可被配置成识别图像帧中的面部/面部特征的位置(这里用附图标记2201表示)。在其它实施例中,特征检测逻辑器2200还可被配置成检测其它种类的特征的位置,比如图像帧的物体的角落的位置。例如,该数据可用于识别连续图像帧中的特征的位置,以便确定各帧之间的全局运动的估计,所述估计随后可用于进行某些图像处理操作,比如图像登记。在一个实施例中,角落特征等的识别特别有益于组合多个图像帧的算法,比如在某些高动态范围(HDR)成像算法中,以及某些全景拼接算法中。
为了简单起见,在下面的说明中,特征检测逻辑器2200将被称为面部检测逻辑器。不过应明白,逻辑器2200并不意图仅仅局限于面部检测逻辑器,并且可被配置成代替或者除了面部特征之外,检测其它类型的特征。例如,在一个实施例中,逻辑器2200可检测角落特征,如上所述,特征检测逻辑器2200的输出2201可包括角落特征。
面部检测逻辑器2200可被配置成接收由ISP管线82提供的YCC图像数据114,或者可以从比例缩放逻辑器2206接收分辨率降低的图像(用信号2207表示),和检测与所选图像数据对应的图像帧内的面部和/或面部特征的场所和位置。如图134中所示,给面部检测逻辑器2200的输入可包括从ISP管线82接收YCC图像数据114,和从比例缩放逻辑器2206接收分辨率降低的图像2207的选择电路2196。ISP控制逻辑器84(例如,执行固件的处理器)提供的控制信号可确定哪个输入被提供给面部检测逻辑器2200。
面部/面部特征的检测位置(信号2201)可作为反馈数据提供给一个或多个上游处理单元,以及一个或多个下游单元。例如,数据2201可代表面部或面部特征出现在当前图像帧内的位置。在一些实施例中,数据2201可包括分辨率降低的变换图像,它可提供用于面部检测的附加信息。此外,在一些实施例中,面部检测逻辑器2200可利用面部检测算法,比如Viola-Jones面部/物体检测算法,或者可利用任何其它适合于检测图像中的面部特征的算法、变换或模式检测/匹配技术。
在图解说明的实施例中,面部检测数据2201可被反馈给控制逻辑器84,控制逻辑器84可代表执行控制图像处理电路32的固件的处理器。在一个实施例中,控制逻辑器84可把数据2201提供给前端统计控制回路(例如,包括图10的ISP前端逻辑器80的前端统计信息处理单元(142和144)),从而,统计信息处理单元142或144可利用反馈数据2201放置适当的窗口,和/或为自动白平衡、自动曝光和自动聚焦处理选择特定的分块。可以理解,改善图像的包含面部特征的区域的颜色和/或色调准确性可产生美学上使观众更满意的图像。如下进一步所述,数据2201也可被提供给LTM逻辑器2202、后端统计单元2208,以及提供给编码器/解码器块118。
LTM逻辑器2202还从ISP管线82接收YCC图像数据114。如上所述,LTM逻辑器2202可被配置成对图像数据114应用色调映射。可以理解,色调映射技术在图像处理应用中,可用于把一组像素值映射到另一组像素值。在输入图像和输出图像具有相同比特精度的情况下,色调映射可以不是必要的,尽管一些实施例可以在不压缩的情况下应用色调映射,以便改善输出图像中的对比度特性(例如,使明亮的区域显得较暗,使阴暗的区域显得较亮)。不过,当输入图像和输出图像具有不同的比特精度时,可以应用色调映射,以把输入图像值映射到输入图像的输出范围的对应值。例如,场景可具有25,000∶1或更高的动态范围,而压缩标准可允许低得多的范围(例如256∶1),以便显示,有时甚至更低的范围(例如,100∶1),以便打印。
从而,例如,在比如当将以低精度格式(比如8比特JPEG图像)输出表示成10比特或更高精度的图像数据时的情况下,色调映射是有益的。另外,当应用于高动态范围(HDR)图像时,色调映射特别有益。在数字图像处理中,通过在不同的曝光水平上获得场景的多个图像,并组合或合成所述图像,从而产生动态范围比利用单次曝光所能获得的动态范围高的图像,可产生HDR图像。此外,在一些成像系统中,图像传感器(例如,传感器90a,90b)可被配置成获得HDR图像,而不需要组合多个图像,以产生合成的HDR图像。
图解说明的实施例的LTM逻辑器2202可利用局部色调映射算子(例如,空间变化的),所述局部色调映射算子可根据图像帧内的局部特征来确定。例如,局部色调映射算子可以是基于区域的,并且可以根据图像帧的特定区域内的内容局部变化。例如,局部色调映射算子可以基于梯度域HDR压缩、摄影色调再现或图像处理。
可以理解,当应用于图像时,局部色调映射技术通常可产生对比度特性改善的输出图像,并且相对于使用全局色调映射的图像,显得在美学上令观众更满意。图135和136图解说明与全局色调映射相关的一些缺陷。例如,参见图135,曲线图2400表示具有输入范围2401的输入图像到输出范围2403的色调映射。输入图像中的色调的范围用曲线2402表示,其中,值2404代表图像的明亮区域,值2406代表图像的阴暗区域。
例如,在一个实施例中,输入图像的范围2401可以具有12比特精度(0~4095),并且可被映射到具有8比特精度(0~255,例如JPEG图像)的输出范围2403。图135表示线性色调映射处理,其中,曲线2402被线性映射到曲线2410。如图所示,图135中所示的色调映射处理的结果产生范围2404,范围2404对应于被压缩到较小范围2412的输入图像的明亮区域,并且还产生范围2406,范围2406对应于被压缩到较小范围2414的输入图像的阴暗区域。阴暗区域(例如,阴影)和明亮区域的色调范围的减小可不利地影响对比度性质,并且可显得在美学上令观众不满意。
参见图136,一种解决与“明亮”范围2404(压缩到范围2412)和“阴暗”范围2406(压缩到范围2414)的压缩相关的问题的方法是使用非线性色调映射技术,如图136中所示。例如,在图136中,利用非线性的“S”形曲线(或者说S曲线)2422,映射代表输入图像的色调曲线2402。作为非线性映射的结果,输入范围2404的明亮部分被映射到输出范围2424的明亮部分,类似地,输入范围2406的阴暗部分被映射到输出范围2426的阴暗部分。如图所示,图136的输出图像的明亮范围2424和阴暗范围2426大于图135的输出图像的明亮范围2412和阴暗范围2414,从而保持更多的输入图像的明亮和阴暗内容。不过,由于图136的映射技术的非线性(例如,S曲线)方面,输出图像的中间范围值2428可显得更平坦,这在美学上也会令观众不满意。
因此,本公开的实施例可以实现局部色调映射技术,该技术利用局部色调映射算子处理当前图像帧的离散部分,当前图像帧可被分成以图像内的局部特征,比如明度特性为基础的多个区域。例如,如图137中所示,ISP后端逻辑器120接收的图像帧的一部分2430可包括明亮区域2432和阴暗区域2434。例如,明亮区域2432可代表图像的明亮区,比如天空或地平线,而阴暗区域可代表图像的相对较暗的区域,比如前景或风景。可分别对区域2432和2434应用局部色调映射,从而产生相对于上述全局色调映射技术,保持更多的输入图像的动态范围的输出图像,从而改善局部对比度,并提供美学上令观众更满意的输出图像。
图138和139中举例表示了在本实施例中如何实现局部色调映射的例子。具体地说,图138描述在一些情况下可导致有限的输出范围的常规局部色调映射技术,图139描述可由利用整个输出范围的LTM逻辑器2202实现的自适应局部色调映射处理,即使输入范围的一部分并未被图像帧使用。
首先参见图138,曲线2440代表对较高比特精度的输入图像应用局部色调映射,从而产生较低比特精度的输出图像的应用。例如,在图解说明的例子中,较高比特精度的输入图像数据可以是用范围2442表示的12比特图像数据(具有4096个输入值(例如值0~4095)),所述12比特图像数据被色调映射,从而产生用范围2444表示的8比特输出(具有256个输出值(例如,0~255))。应明白,所述位深度仅仅意图提供一些例子,而绝不应被理解成对本发明的限制。例如,在其它实施例中,输入图像可以是8比特、10比特、14比特或16比特等等,输出图像可以具有大于或小于8比特精度的位深度。
这里,假定图像的被应用局部色调映射的区域仅仅利用整个输入动态范围的一部分,比如用值0~1023表示的范围2448。例如,这些输入值可对应于图137中所示的阴暗区域2434的值。图138表示4096(12比特)输入值到256(8比特)输出值的线性映射。从而,虽然从0~4095的值被映射成输出动态范围2444的值0~255,整个输入范围2442的未被使用的部分2450(值1024~4095)被映射到输出范围2444的部分2454(值64~255),从而只剩下输出值0~63(输出范围2444的部分2452)可用于表示输入范围的使用部分2448(值0~1023)。换句话说,这种线性局部色调映射技术不考虑未使用的值或值的范围是否被映射。这导致输出值(例如2444)的一部分(例如,2454)被分配用于表示实际上并不存在于正对其应用当前局部色调映射操作(例如,曲线2440)的图像帧的区域(例如2434)中的输入值,从而减少可用于表示存在于正处理的当前区域中的输入值(例如,范围2448)的可用输出值(例如,2452)。
考虑到上述内容,图139图解说明按照本公开的实施例实现的局部色调映射技术。这里,在进行输入范围2442(例如,12比特)到输出范围2444(例如,8比特)的映射之前,LTM逻辑器2202可被配置成首先确定输入范围2442的利用范围。例如,假定区域是大体阴暗的区域,那么与该区域内的颜色对应的输入值可以只利用整个范围2442的子范围,比如2448(例如,值0~1023)。即,子范围2448代表存在于正被处理的图像帧的特定区域中的实际动态范围。从而,由于在该区域中未利用值1024~4095(未使用的子范围2450),因此可以首先映射和扩展利用的范围2448,以利用整个范围2442,如扩展处理2472所示。即,由于在正被处理的图像的当前区域内,值1024~4095未被利用,因此它们可被用于表示利用的部分(例如,0~1023)。结果,可以利用另外的值(这里约多3倍的额外输入值)表示输入范围的利用部分2448。
随后,如处理2474所示,扩展的利用输入范围(扩展到值0~4095)随后可被映射到输出值0~255(输出范围2444)。从而,如图139中所示,作为首先扩展输入值的利用范围2448,以利用整个输入范围(0~4095)的结果,可利用整个输出范围2444(值0~255),而不是如图138中所示仅仅利用一部分的输出范围来表示输入值的利用范围2448。
在继续说明之前,应注意,尽管被称为局部色调映射块,不过在一些情况下,LTM逻辑器2202也可被配置成实现全局色调映射。例如,在图像帧包括通常具有均匀特性的图像场景(例如,天空的场景)的情况下,对其应用色调映射的区域可包括整个帧。即,可对帧的所有像素应用相同的色调映射算子。返回图134,LTM逻辑器2202还可从面部检测逻辑器2200接收数据2201,并且在一些情况下,可利用该数据识别当前图像帧内对其应用色调映射的一个或多个区域。从而,应用一种或多种上述局部色调映射技术的最终结果可以是美学上更令观众满意的图像。
LTM逻辑器2202的输出可被提供给明度、对比度和颜色调整(BCC)逻辑器2204。在所述实施例中,可以与如图132中所示的ISP管线的YCbCr处理逻辑器904的BCC逻辑器1184大致同样地实现BCC逻辑器2204,并且BCC逻辑器2204可提供大致类似的功能,以提供明度、对比度、色相和/或饱和度控制。从而,为了避免冗余,这里没有重新描述本实施例的BCC逻辑器2204,不过应明白和前面说明的图132的BCC逻辑器1184相同。
随后,比例缩放逻辑器2206可以接收BCC逻辑器2204的输出,并被配置成比例缩放代表当前图像帧的图像数据。例如,当图像帧的实际大小或分辨率(例如,用像素表示)不同于预期或期望的输出大小时,比例缩放逻辑器2206可相应地比例缩放数字图像,以获得期望大小或分辨率的输出图像。如图所示,比例缩放逻辑器2206的输出126可被发给显示设备28,以供用户观看,或者被发给存储器108。另外,输出126也可被提供给压缩/解压缩引擎118,以便编码/解码图像数据。编码的图像数据可按压缩格式保存,随后在显示在显示器28上之前被解压缩。
此外,在一些实施例中,比例缩放逻辑器2206可利用多个分辨率比例缩放图像数据。例如,当期望的输出图像分辨率为720p(1280×720像素)时,比例缩放逻辑器可相应地比例缩放图像帧,以提供720p输出图像,还可提供可以用作预览图像或缩略图图像的较低分辨率图像。例如,在设备上运行的应用,比如在多种型号的上可得到的“Photos”应用,以及在某些型号的和计算机(都可从苹果公司获得)上可得到的和应用可允许用户查看保存在电子设备10上的视频或静止图像的预览版本的列表。当选择保存的图像或视频时,电子设备可以全分辨率显示和/或重放选择的图像或视频。
在图解说明的实施例中,比例缩放逻辑器2206还可向后端统计块2208提供信息2203,后端统计块2208可利用比例缩放逻辑器2206进行后端统计信息处理。例如,在一个实施例中,后端统计逻辑器2208可处理经比例缩放的图像信息2203,以确定用于调制与编码器118相关的量化参数(例如,每个宏块的量化参数)的一个或多个参数,在一个实施例中,编码器118可以是H.264/JPEG编码器/解码器。例如,在一个实施例中,后端统计逻辑器2208可按宏块分析图像,以确定每个宏块的频率内容参数或评分。例如,在一些实施例中,后端统计逻辑器2206可利用诸如小波压缩、快速傅里叶变换或离散余弦变换(DCT)之类的技术,确定每个宏块的频率评分。利用频率评分,编码器118能够调制量化参数,从而在构成图像帧的宏块内实现大体均匀的图像质量。例如,如果在特定宏块中存在频率内容的较大方差,那么可更积极地对该宏块应用压缩。如图134中所示,比例缩放逻辑器2206还可借助给选择电路2196的输入,把分辨率缩小的图像2207提供给面部检测逻辑器2200,所述选择电路2196可以是多路复用器或者某种其它适当类型的选择逻辑器。从而,选择电路2196的输出2198可以是来自ISP管线82的YCC输入114或者来自比例缩放逻辑器2206的下采样YCC图像2207。
在一些实施例中,后端统计数据和/或编码器118可被配置成预测和检测场景变化。例如,后端统计逻辑器2208可被配置成获得运动统计信息。编码器118可试图通过比较后端统计逻辑器2208提供的当前帧的运动统计信息和前一帧的运动统计信息来预测场景变化,所述运动统计信息可包括某些度量(例如,明度)。当度量的差异大于特定阈值时,预测场景变化,后端统计逻辑器2208可用信号通知场景变化。在一些实施例中,可以使用加权预测,因为由于设备10捕捉和处理的图像的多样性,固定阈值可能并非始终都完美。另外,取决于正被处理的图像数据的某些特性,也可使用多个阈值。
如上所述,面部检测数据2201也可被提供给后端统计逻辑器2208和编码器118,如图134中所示。这里,在后端处理期间,后端统计数据和/或编码器118可以利用面部检测数据2201以及宏块频率信息。例如,对于与利用面部检测数据2201确定的面部在图像帧内的位置对应的宏块,可减少量化,从而改善存在于利用显示设备28显示的图像中的编码面部或面部特征的视觉表现和总体质量。
现在参见图140,按照一个实施例,图解说明更详细地表示LTM逻辑器2202的方框图。如图所示,在首先把来自ISP管线82的YC1C2图像数据114转换到伽玛校正的的RGB线性颜色空间之后,应用色调映射。例如,如图140中所示,逻辑器2208首先把YC1C2(例如,YCbCr)数据转换到非线性sRGB颜色空间。在本实施例中,LTM逻辑器2202可被配置成接收具有不同的子采样特性的YCC图像数据。例如,如到选择逻辑器2205(例如,多路复用器)的输入114所示,LTM逻辑器2202可被配置为接收YCC 4:4:4完整数据、YCC 4:2:2色度子采样数据、或者YCC 4:2:0色度子采样数据。对子采样的YCC图像数据格式来说,可以应用向上转换逻辑器2209,以便在YCC图像数据由逻辑器2208转换到sRGB颜色空间之前,把子采样的YCC图像数据转换成YCC 4:4:4格式。
转换后的sRGB图像数据2210随后可以被逻辑器2212转换到RGBlinear颜色空间,RGBlinear颜色空间是伽玛校正的线性空间。之后,转换后的RGBlinear图像数据2214被提供给LTM逻辑器2216,LTM逻辑器2216可被配置成识别图像帧中共享相似明度的区域(例如,图137的2432和2434),并且对这些区域应用局部色调映射。如在本实施例中所示,LTM逻辑器2216还可从面部检测逻辑器2200(图134)接收参数2201,参数2201可指示当前图像帧内存在面部和/或面部特征的场所和位置。
在对RGBlinear数据2214应用局部色调映射之后,随后通过首先利用逻辑器2222把经处理的RGBlinear图像数据2220转换回sRGB颜色空间,随后利用逻辑器2226把sRGB图像数据2224转换回YC1C2颜色空间,使处理后的图像数据2200被转换回YC1C2颜色空间。从而,转换后的YC1C2数据2228(应用了色调映射)可从LTM逻辑器2202被输出,并被提供给BCC逻辑器2204,如上在图134中所述。应理解,可以利用与如上在图125中所述,在ISP管线82的RGB处理逻辑器902中把去马赛克的RGB图像数据变换到YC1C2颜色空间的技术相似的技术,实现图像数据114到在ISP后端LTM逻辑器块2202内利用的各种颜色空间的变换。此外,在YCC被向上转换(例如,利用逻辑器2209)的实施例中,YC1C2数据可被逻辑器2226向下转换(子采样)。另外,在其它实施例中,也可用比例缩放逻辑器2206而不是逻辑器2226进行这种子采样/向下转换。
虽然本实施例表示从YCC颜色空间转换到sRGB颜色空间,随后转换到sRGBlinear颜色空间的转换处理,不过,其它实施例可以利用不同的颜色空间转换,或者可以应用利用功函的近似变换。即,在一些实施例中,到近似线性的颜色空间的转换足以用于局部色调映射。从而,利用近似变换函数,可以至少部分简化这种实施例的转换逻辑器(例如,通过消除对颜色空间变换查寻表的需要)。在另一个实施例中,也可以在人眼更好地感知的颜色空间(比如Lab颜色空间)中进行局部色调映射。
图141和142是按照公开的实施例,描述利用ISP后端处理逻辑器120,处理图像数据的方法的流程图。首先参见图141,图141描述图解说明ISP后端处理逻辑器120进行的图像数据的处理的方法2230。从步骤2232开始,方法2230从ISP管线82接收YCC图像数据。例如,如上所述,接收的YCC图像数据可以在YCbCr亮度和色度颜色空间中。随后,方法2232可分枝到各个步骤2234和2238。在步骤2234,可以处理接收的YCC图像数据,以检测当前图像帧内的面部和/或面部特征的位置/场所。例如,参见图134,该步骤可利用面部检测逻辑器2200执行,面部检测逻辑器2200可被配置成实现面部检测算法,比如Viola-Jones。之后,在步骤2236,面部检测数据(例如,数据2201)可被提供给ISP控制逻辑器84,作为给ISP前端统计信息处理单元142或144的反馈,以及提供给LTM逻辑器块2202、后端统计逻辑器2208、和编码器/解码器逻辑器118,如图134中所示。
在可以至少部分与步骤2234同时进行的步骤2238,处理从ISP管线82接收的YCC图像数据,以应用色调映射。之后,方法2230进入步骤2240,从而YCC图像数据(例如2228)被进一步处理,以便进行明度、对比度和颜色调整(例如,利用BCC逻辑器2204)。随后,在步骤2242,对来自步骤2240的图像数据应用比例缩放,以便把图像数据比例缩放成一个或多个期望的大小或分辨率。另外,如上所述,在一些实施例中,也可应用颜色空间变换或子采样(例如,在YCC数据被上采样,以便进行局部色调映射的实施例中),以产生具有期望的采样的输出图像。最后,在步骤2244,比例缩放的YCC图像数据可被显示,以供观看(例如,利用显示设备28),或者可被保存在存储器108中,以便稍后观看。
图142更详细地图解说明图141的色调映射步骤2238。例如,步骤2238可从子步骤2248开始,在子步骤2248中,在步骤2232接收的YCC图像数据首先被转换到sRGB颜色空间。如上所述和在图140中所示,在转换到sRGB空间之前,一些实施例可提供子采样的YCC图像数据的向上转换。之后,在子步骤2250,sRGB图像数据被转换到伽玛校正的线性颜色空间RGBlinear。随后,在子步骤2252,ISP后端LTM逻辑器块2202的色调映射逻辑器2216对RGBlinear数据应用色调映射。子步骤2252的色调映射图像数据随后从RGBlinear颜色空间被转换回sRGB颜色空间,如在子步骤2254所示。之后,在子步骤2256,sRGB图像数据可被转换回YCC颜色空间,方法2230的步骤2238可继续到在图141中讨论的步骤2240。如上所述,图142中所示的处理2238仅仅是按照适合于局部色调映射的方式,应用颜色空间变换的一种处理。在其它实施例中,代替图解说明的变换步骤,也可应用近似的线性变换。
可以明白,这里仅仅作为例子,提供了上面说明的与缺陷像素检测和校正、透镜阴影校正、去马赛克和图像锐化等等相关的各种图像处理技术。因而,应明白本公开不应被理解成仅仅局限于上面提供的例子。事实上,在其它实施例中,这里说明的例证逻辑器可以进行多种变化和/或另外的特征。此外,应理解可按照任何适当的方式实现上面讨论的技术。例如,图像处理电路32的组件,尤其是ISP前端块80和ISP管道块82可利用硬件(例如,适当配置的电路)、软件(例如,借助包括保存在一个或多个有形的计算机可读介质上的可执行代码的计算机程序),或者通过利用硬件和软件元件的组合来实现。
根据本发明的一个方面,还提供一种图像信号处理(ISP)逻辑器,包括:用于接收与利用数字图像传感器捕捉的多个图像帧对应的进入像素的装置;用于把进入像素发送给与数字图像传感器相关联的输入缓冲器的装置;用于把来自输入缓冲器的第一图像帧的第一像素提供给在输入缓冲器下游的目的地单元的装置,所述目的地单元与ISP逻辑器相关联;用于确定在I SP逻辑器中是否存在溢出状态,如果存在溢出状态,那么通过丢弃进入像素来停止把进入像素发给输入缓冲器,在每个丢弃的进入像素之后,确定溢出状态是否仍然存在,在溢出状态仍然存在时,对与第一图像帧对应的每个丢弃的进入像素计数的装置;用于确定溢出状态是否不再存在的装置;和如果溢出状态不再存在,那么把第一图像帧的第二像素提供给目的地单元,并重新开始向输入缓冲器发送进入像素的装置。
其中,在溢出状态存在时,对与第一图像帧对应的所述每个丢弃的进入像素计数包括:在溢出状态存在时,递增计数器,所述计数器被配置成保存指示丢弃的与第一图像帧对应的进入像素的数目的值。
该图像信号处理(ISP)逻辑器进一步包括:如果在第一图像帧结束之前,溢出状态变得不再存在,那么用相应的替换像素值替换与第一图像帧对应的各个丢弃的进入像素的装置。
其中,替换像素值具有与在溢出状态开始存在之前发给输入缓冲器的最后一个进入像素的值相等的值。
其中,从被配置成保存期望的替换像素值的可编程数据寄存器读取替换像素值。
其中,提供替换像素值允许接收第一图像帧的目的地单元处理或保存与第一图像帧的像素的预期数目相等的多个像素。
其中,确定溢出状态是否存在包括:确定至少一个下游处理单元施加的背压是否传播到输入缓冲器。
该图像信号处理(ISP)逻辑器进一步包括:如果溢出状态持续到在第一图像帧之后的至少一个图像帧,那么丢弃整个的至少一个后续图像帧的装置。
其中,当溢出状态不再存在时,用替换像素值替换计数的与第一图像帧对应的多个丢弃的进入像素。
本发明的一个方面还涉及一种图像信号处理系统,包括:用于把与利用图像传感器获得的多个图像帧对应的图像像素提供给传感器输入缓冲器的装置,其中,所述多个图像帧对应于一组视频数据;用于把保存在传感器输入缓冲器中的图像像素发给图像信号处理系统的所选目的地逻辑器的装置;如果在第一图像帧期间,出现溢出状态,那么丢弃在出现溢出状态之后,图像传感器获得的对应于第一图像帧的图像像素的装置;用于利用溢出计数器保持与第一当前图像帧对应的丢弃图像像素的数目的计数的装置;用于确定溢出状态是否在第一图像帧期间恢复的装置;如果溢出状态在第一图像帧期间恢复,那么把在出现溢出状态之前,将保存在传感器输入缓冲器中的图像像素发给选择的目的地逻辑器,把与丢弃图像像素的计数相等的多个替换像素值发给选择的目的地逻辑器,并把与第一图像帧对应的另外的图像像素提供给传感器输入缓冲器的装置;和如果在第一图像帧结束之后,并在第一图像帧之后的第二图像帧开始时,仍然出现溢出状态,那么清除传感器输入缓冲器,接收与第二图像帧对应的图像像素,重置溢出计数器,并且当把视频数据从图像处理系统输出给显示设备时,用信号通知图像信号处理系统的控制逻辑器以丢弃对应于第一图像帧的图像像素的装置。
该图像信号处理系统进一步包括:如果在第二图像帧结束之后,并在第二图像帧之后的第三图像帧开始时,仍然出现溢出,那么:清除传感器输入缓冲器,接收与第三图像帧对应的图像像素的装置;清除溢出计数器的装置;和当把视频数据从图像处理系统输出给显示设备时,用信号通知控制逻辑器以丢弃与第二图像帧对应的图像像素的装置。
该图像信号处理系统进一步包括:当丢弃第一图像帧时,递增丢弃帧计数器的装置,其中,丢弃帧计数器被配置成指示在溢出状态期间丢弃的帧的数目。
该图像信号处理系统包括:利用音频-视频同步逻辑器,根据丢弃帧计数器指示的丢弃的帧的数目,调整至少一个音频-视频同步参数的装置。
上述提及的图像信号处理(ISP)逻辑器和图像信号处理系统既可以用软件实现也可以用硬件实现。
作为例子示出了上面说明的具体实施例,应明白这些实施例可容许各种修改和备选形式。另外应明白,权利要求并不旨在局限于公开的特殊形式,相反,覆盖在本发明的精神和范围内的所有修改、等同方案和备选方案。
Claims (33)
1.一种用于控制图像信号处理(ISP)过程中的溢出的方法,包括:
接收与利用数字图像传感器捕捉的多个图像帧对应的进入像素;
把进入像素发送给与数字图像传感器相关联的输入缓冲器;
把来自输入缓冲器的第一图像帧的第一像素提供给在输入缓冲器下游的目的地单元,所述目的地单元与ISP逻辑器相关联;
确定在ISP逻辑器中是否存在溢出状态,如果存在溢出状态,那么通过丢弃进入像素来停止把进入像素发给输入缓冲器,在每个丢弃的进入像素之后,确定溢出状态是否仍然存在,在溢出状态仍然存在时,对与第一图像帧对应的每个丢弃的进入像素计数;
确定溢出状态是否不再存在;和
如果溢出状态不再存在,那么把第一图像帧的第二像素提供给目的地单元,并重新开始向输入缓冲器发送进入像素。
2.按照权利要求1所述的方法,其中,在溢出状态存在时,对与第一图像帧对应的每个丢弃的进入像素计数包括:在溢出状态存在时,递增计数器,所述计数器被配置成保存指示丢弃的与第一图像帧对应的进入像素的数目的值。
3.按照权利要求1所述的方法,进一步包括:如果在第一图像帧结束之前,溢出状态变得不再存在,那么用相应的替换像素值替换与第一图像帧对应的各个丢弃的进入像素。
4.按照权利要求3所述的方法,其中,替换像素值具有与在溢出状态开始存在之前发给输入缓冲器的最后一个进入像素的值相等的值。
5.按照权利要求3所述的方法,其中,从被配置成保存期望的替换像素值的可编程数据寄存器读取替换像素值。
6.按照权利要求3所述的方法,其中,提供替换像素值允许接收第一图像帧的目的地单元处理或保存与第一图像帧的像素的预期数目相等的多个像素。
7.按照权利要求1所述的方法,其中,确定溢出状态是否存在包括:确定至少一个下游处理单元施加的背压是否传播到输入缓冲器。
8.按照权利要求1所述的方法,进一步包括:如果溢出状态持续到在第一图像帧之后的至少一个图像帧,那么丢弃整个的至少一个后续图像帧。
9.按照权利要求8所述的方法,其中,当溢出状态不再存在时,用替换像素值替换计数的与第一图像帧对应的多个丢弃的进入像素。
10.一种图像信号处理系统,包括:
输入队列缓冲器,被配置成接收与图像传感器获得的多帧图像数据对应的进入像素,其中,输入队列缓冲器接收的进入像素被发给图像信号处理系统的多个目的地单元中的目标目的地单元;
中断请求(IRQ)状态寄存器,被配置成指示多个目的地单元中的至少一个目的地单元的溢出状态的发生;和
控制逻辑器,被配置成如下控制从图像传感器到输入队列缓冲器的对进入像素的接收:
至少部分根据IRQ寄存器的值检测溢出的出现;
当出现溢出时,识别数字图像传感器正在获取的当前帧;
在溢出出现的时候,丢弃数字图像传感器获得的、对应于当前图像帧的进入像素;
检测溢出的恢复;和
如果在当前图像帧结束之前,发生溢出恢复,那么接收在溢出恢复之后数字图像传感器获得的、与当前图像帧的剩余部分对应的进入像素,把在溢出恢复之后获得的进入像素发给目的地单元,并且对于在出现溢出时丢弃的每个进入像素,向目标目的地单元发送替换像素值。
11.按照权利要求10所述的图像信号处理系统,进一步包括:丢弃像素计数器,所述丢弃像素计数器被配置成通过对于丢弃的每个进入像素将其值递增一,来保持在出现溢出时丢弃的对应于当前图像帧的进入像素的数目的计数。
12.按照权利要求11所述的图像信号处理系统,其中,根据丢弃像素计数器保存的计数,确定提供给目标目的地单元的替换像素值的数目。
13.按照权利要求10所述的图像信号处理系统,其中,控制逻辑器被配置成识别图像帧是否包括替换像素值,并且至少部分根据存在于识别的图像帧中的替换像素值的数目,确定是否输出识别为包括替换像素值的图像帧。
14.按照权利要求13所述的图像信号处理系统,其中,控制逻辑器被配置成如下确定是否输出识别的图像帧:
比较替换像素值的数目和阈值;
如果替换像素值的数目超过阈值,那么不输出识别的图像帧;和
如果替换像素值的数目小于阈值,那么输出识别的图像帧。
15.按照权利要求10所述的图像信号处理系统,其中,如果在当前图像帧结束之前,溢出未恢复,那么控制逻辑器被配置成丢弃来自数字图像传感器的所有进入像素,直到溢出恢复为止,并且当溢出恢复时,控制逻辑器被配置成:
把输入队列缓冲器中对应于当前图像帧的像素发给目标目的地单元;
用替换像素值替换溢出期间丢弃的当前图像帧的每个像素,并把替换像素值提供给目标目的地单元;
检测在溢出恢复之后,数字图像传感器获得的第一帧的开始;
利用输入队列缓冲器,接收对应于第一帧的进入像素。
16.按照权利要求10所述的图像信号处理系统,其中,控制逻辑器被配置成根据垂直同步信号,确定在当前图像帧结束之前,是否发生溢出恢复。
17.一种处理像素数据的方法,包括:
把与利用图像传感器获得的多个图像帧对应的图像像素提供给传感器输入缓冲器,其中,所述多个图像帧对应于一组视频数据;
把保存在传感器输入缓冲器中的图像像素发给图像信号处理系统的所选目的地逻辑器;
如果在第一图像帧期间,出现溢出状态,那么丢弃在出现溢出状态之后,图像传感器获得的对应于第一图像帧的图像像素;
利用溢出计数器保持与当前的第一图像帧对应的丢弃图像像素的数目的计数;
确定溢出状态是否在第一图像帧期间恢复;
如果溢出状态在第一图像帧期间恢复,那么把在出现溢出状态之前保存在传感器输入缓冲器中的图像像素发给所选的目的地逻辑器,把与丢弃图像像素的计数相等的多个替换像素值发给所选的目的地逻辑器,并把与第一图像帧对应的另外的图像像素提供给传感器输入缓冲器;和
如果在第一图像帧结束之后,并在第一图像帧之后的第二图像帧开始时,仍然出现溢出状态,那么清除传感器输入缓冲器,接收与第二图像帧对应的图像像素,重置溢出计数器,并且当把视频数据从图像处理系统输出给显示设备时,用信号通知图像信号处理系统的控制逻辑器以丢弃对应于第一图像帧的图像像素。
18.按照权利要求17所述的方法,进一步包括:如果在第二图像帧结束之后,并在第二图像帧之后的第三图像帧开始时,仍然出现溢出,那么:
清除传感器输入缓冲器,接收与第三图像帧对应的图像像素;
清除溢出计数器;和
当把视频数据从图像处理系统输出给显示设备时,用信号通知控制逻辑器以丢弃与第二图像帧对应的图像像素。
19.按照权利要求17所述的方法,进一步包括:当丢弃第一图像帧时,递增丢弃帧计数器,其中,丢弃帧计数器被配置成指示在溢出状态期间丢弃的帧的数目。
20.按照权利要求19所述的方法,包括:利用音频-视频同步逻辑器,根据丢弃帧计数器指示的丢弃的帧的数目,调整至少一个音频-视频同步参数。
21.一种图像信号处理(ISP)逻辑器,包括:
用于接收与利用数字图像传感器捕捉的多个图像帧对应的进入像素的装置;
用于把进入像素发送给与数字图像传感器相关联的输入缓冲器的装置;
用于把来自输入缓冲器的第一图像帧的第一像素提供给在输入缓冲器下游的目的地单元的装置,所述目的地单元与ISP逻辑器相关联;
用于确定在ISP逻辑器中是否存在溢出状态,如果存在溢出状态,那么通过丢弃进入像素来停止把进入像素发给输入缓冲器,在每个丢弃的进入像素之后,确定溢出状态是否仍然存在,在溢出状态仍然存在时,对与第一图像帧对应的每个丢弃的进入像素计数的装置;
用于确定溢出状态是否不再存在的装置;和
如果溢出状态不再存在,那么把第一图像帧的第二像素提供给目的地单元,并重新开始向输入缓冲器发送进入像素的装置。
22.按照权利要求21所述的图像信号处理(ISP)逻辑器,其中,在溢出状态存在时,对与第一图像帧对应的所述每个丢弃的进入像素计数包括:在溢出状态存在时,递增计数器,所述计数器被配置成保存指示丢弃的与第一图像帧对应的进入像素的数目的值。
23.按照权利要求21所述的图像信号处理(ISP)逻辑器,进一步包括:如果在第一图像帧结束之前,溢出状态变得不再存在,那么用相应的替换像素值替换与第一图像帧对应的各个丢弃的进入像素的装置。
24.按照权利要求23所述的图像信号处理(ISP)逻辑器,其中,替换像素值具有与在溢出状态开始存在之前发给输入缓冲器的最后一个进入像素的值相等的值。
25.按照权利要求23所述的图像信号处理(ISP)逻辑器,其中,从被配置成保存期望的替换像素值的可编程数据寄存器读取替换像素值。
26.按照权利要求23所述的图像信号处理(ISP)逻辑器,其中,提供替换像素值允许接收第一图像帧的目的地单元处理或保存与第一图像帧的像素的预期数目相等的多个像素。
27.按照权利要求21所述的图像信号处理(ISP)逻辑器,其中,确定溢出状态是否存在包括:确定至少一个下游处理单元施加的背压是否传播到输入缓冲器。
28.按照权利要求21所述的图像信号处理(ISP)逻辑器,进一步包括:如果溢出状态持续到在第一图像帧之后的至少一个图像帧,那么丢弃整个的至少一个后续图像帧的装置。
29.按照权利要求28所述的图像信号处理(ISP)逻辑器,其中,当溢出状态不再存在时,用替换像素值替换计数的与第一图像帧对应的多个丢弃的进入像素。
30.一种图像信号处理系统,包括:
用于把与利用图像传感器获得的多个图像帧对应的图像像素提供给传感器输入缓冲器的装置,其中,所述多个图像帧对应于一组视频数据;
用于把保存在传感器输入缓冲器中的图像像素发给图像信号处理系统的所选目的地逻辑器的装置;
用于如果在第一图像帧期间,出现溢出状态,那么丢弃在出现溢出状态之后,图像传感器获得的对应于第一图像帧的图像像素的装置;
用于利用溢出计数器保持与第一当前图像帧对应的丢弃图像像素的数目的计数的装置;
用于确定溢出状态是否在第一图像帧期间恢复的装置;
用于如果溢出状态在第一图像帧期间恢复,那么把在出现溢出状态之前,将保存在传感器输入缓冲器中的图像像素发给选择的目的地逻辑器,把与丢弃图像像素的计数相等的多个替换像素值发给选择的目的地逻辑器,并把与第一图像帧对应的另外的图像像素提供给传感器输入缓冲器的装置;和
如果在第一图像帧结束之后,并在第一图像帧之后的第二图像帧开始时,仍然出现溢出状态,那么清除传感器输入缓冲器,接收与第二图像帧对应的图像像素,重置溢出计数器,并且当把视频数据从图像处理系统输出给显示设备时,用信号通知图像信号处理系统的控制逻辑器以丢弃对应于第一图像帧的图像像素的装置。
31.按照权利要求30所述的图像信号处理系统,进一步包括:如果在第二图像帧结束之后,并在第二图像帧之后的第三图像帧开始时,仍然出现溢出,那么:
清除传感器输入缓冲器,接收与第三图像帧对应的图像像素的装置;
清除溢出计数器的装置;和
当把视频数据从图像处理系统输出给显示设备时,用信号通知控制逻辑器以丢弃与第二图像帧对应的图像像素的装置。
32.按照权利要求30所述的图像信号处理系统,进一步包括:用于当丢弃第一图像帧时,递增丢弃帧计数器的装置,其中,丢弃帧计数器被配置成指示在溢出状态期间丢弃的帧的数目。
33.按照权利要求32所述的图像信号处理系统,包括:用于利用音频-视频同步逻辑器,根据丢弃帧计数器指示的丢弃的帧的数目,调整至少一个音频-视频同步参数的装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/895,674 US8629913B2 (en) | 2010-09-30 | 2010-09-30 | Overflow control techniques for image signal processing |
US12/895,674 | 2010-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102572316A CN102572316A (zh) | 2012-07-11 |
CN102572316B true CN102572316B (zh) | 2015-02-11 |
Family
ID=44675823
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110305695.0A Expired - Fee Related CN102572316B (zh) | 2010-09-30 | 2011-09-30 | 用于图像信号处理的溢出控制技术 |
Country Status (5)
Country | Link |
---|---|
US (1) | US8629913B2 (zh) |
KR (1) | KR101320818B1 (zh) |
CN (1) | CN102572316B (zh) |
TW (1) | TWI504265B (zh) |
WO (1) | WO2012044434A1 (zh) |
Families Citing this family (92)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8754904B2 (en) * | 2011-04-03 | 2014-06-17 | Lucidlogix Software Solutions, Ltd. | Virtualization method of vertical-synchronization in graphics systems |
US8788079B2 (en) | 2010-11-09 | 2014-07-22 | Vmware, Inc. | Monitoring audio fidelity and audio-video synchronization |
US9214004B2 (en) | 2008-12-18 | 2015-12-15 | Vmware, Inc. | Watermarking and scalability techniques for a virtual desktop planning tool |
US9674562B1 (en) | 2008-12-18 | 2017-06-06 | Vmware, Inc. | Quality evaluation of multimedia delivery in cloud environments |
JP5649409B2 (ja) * | 2010-11-04 | 2015-01-07 | 株式会社東芝 | 画像処理装置 |
US9336117B2 (en) | 2010-11-09 | 2016-05-10 | Vmware, Inc. | Remote display performance measurement triggered by application display upgrade |
US8910228B2 (en) | 2010-11-09 | 2014-12-09 | Vmware, Inc. | Measurement of remote display performance with image-embedded markers |
US8780238B2 (en) * | 2011-01-28 | 2014-07-15 | Aptina Imaging Corporation | Systems and methods for binning pixels |
EP2671207B1 (en) | 2011-02-03 | 2019-01-02 | L-3 Communications Corporation | Graphics processing architecture for an fpga |
US8760464B2 (en) * | 2011-02-16 | 2014-06-24 | Apple Inc. | Shape masks |
US8780996B2 (en) * | 2011-04-07 | 2014-07-15 | Google, Inc. | System and method for encoding and decoding video data |
US8781004B1 (en) | 2011-04-07 | 2014-07-15 | Google Inc. | System and method for encoding video using variable loop filter |
CA2771851C (en) * | 2011-04-12 | 2018-07-24 | Research In Motion Limited | Camera flash for improved color balance |
US9363522B2 (en) * | 2011-04-28 | 2016-06-07 | Warner Bros. Entertainment, Inc. | Region-of-interest encoding enhancements for variable-bitrate mezzanine compression |
US8884963B2 (en) * | 2011-05-04 | 2014-11-11 | Qualcomm Incorporated | Low resolution buffer based pixel culling |
US20130058419A1 (en) * | 2011-09-05 | 2013-03-07 | Zhou Ye | Wireless video/audio data transmission system |
KR101822661B1 (ko) * | 2011-10-27 | 2018-01-26 | 삼성전자주식회사 | 비전 인식 장치 및 방법 |
US9131073B1 (en) | 2012-03-02 | 2015-09-08 | Google Inc. | Motion estimation aided noise reduction |
US8805170B2 (en) * | 2012-03-07 | 2014-08-12 | Broadcom Corporation | System and method for memory storage of video data |
CN103391415B (zh) * | 2012-05-11 | 2016-12-07 | 安凯(广州)微电子技术有限公司 | 一种录像数据丢帧处理方法及系统 |
US9332239B2 (en) | 2012-05-31 | 2016-05-03 | Apple Inc. | Systems and methods for RGB image processing |
US9031319B2 (en) | 2012-05-31 | 2015-05-12 | Apple Inc. | Systems and methods for luma sharpening |
US9077943B2 (en) | 2012-05-31 | 2015-07-07 | Apple Inc. | Local image statistics collection |
US9105078B2 (en) | 2012-05-31 | 2015-08-11 | Apple Inc. | Systems and methods for local tone mapping |
US8872946B2 (en) | 2012-05-31 | 2014-10-28 | Apple Inc. | Systems and methods for raw image processing |
US8953882B2 (en) | 2012-05-31 | 2015-02-10 | Apple Inc. | Systems and methods for determining noise statistics of image data |
US8917336B2 (en) | 2012-05-31 | 2014-12-23 | Apple Inc. | Image signal processing involving geometric distortion correction |
US11089247B2 (en) | 2012-05-31 | 2021-08-10 | Apple Inc. | Systems and method for reducing fixed pattern noise in image data |
US9025867B2 (en) | 2012-05-31 | 2015-05-05 | Apple Inc. | Systems and methods for YCC image processing |
US8817120B2 (en) | 2012-05-31 | 2014-08-26 | Apple Inc. | Systems and methods for collecting fixed pattern noise statistics of image data |
US9142012B2 (en) | 2012-05-31 | 2015-09-22 | Apple Inc. | Systems and methods for chroma noise reduction |
US9743057B2 (en) | 2012-05-31 | 2017-08-22 | Apple Inc. | Systems and methods for lens shading correction |
US9014504B2 (en) | 2012-05-31 | 2015-04-21 | Apple Inc. | Systems and methods for highlight recovery in an image signal processor |
US9344729B1 (en) | 2012-07-11 | 2016-05-17 | Google Inc. | Selective prediction signal filtering |
US9854138B2 (en) * | 2012-09-20 | 2017-12-26 | Gyrus Acmi, Inc. | Fixed pattern noise reduction |
US8782558B1 (en) * | 2012-11-28 | 2014-07-15 | Advanced Testing Technologies, Inc. | Method, program and arrangement for highlighting failing elements of a visual image |
US9189433B2 (en) * | 2012-12-18 | 2015-11-17 | International Business Machines Corporation | Tracking a relative arrival order of events being stored in multiple queues using a counter |
US9201755B2 (en) | 2013-02-14 | 2015-12-01 | Vmware, Inc. | Real-time, interactive measurement techniques for desktop virtualization |
US10075680B2 (en) * | 2013-06-27 | 2018-09-11 | Stmicroelectronics S.R.L. | Video-surveillance method, corresponding system, and computer program product |
GB2516221A (en) * | 2013-07-01 | 2015-01-21 | Barco Nv | Method and processor for streaming video processing |
US9996488B2 (en) | 2013-09-09 | 2018-06-12 | Qualcomm Incorporated | I3C high data rate (HDR) always-on image sensor 8-bit operation indicator and buffer over threshold indicator |
US10353837B2 (en) | 2013-09-09 | 2019-07-16 | Qualcomm Incorporated | Method and apparatus to enable multiple masters to operate in a single master bus architecture |
US9690725B2 (en) | 2014-01-14 | 2017-06-27 | Qualcomm Incorporated | Camera control interface extension with in-band interrupt |
WO2015054548A1 (en) | 2013-10-09 | 2015-04-16 | Qualcomm Incorporated | ERROR DETECTION CAPABILITY OVER CCIe PROTOCOL |
US20150109486A1 (en) * | 2013-10-17 | 2015-04-23 | Nvidia Corporation | Filtering extraneous image data in camera systems |
JPWO2015064403A1 (ja) * | 2013-11-01 | 2017-03-09 | ソニー株式会社 | 画像処理装置および方法 |
US9398297B2 (en) * | 2013-11-04 | 2016-07-19 | Intel Corporation | Integral image coding |
US9383851B2 (en) * | 2014-01-06 | 2016-07-05 | Nvidia Corporation | Method and apparatus for buffering sensor input in a low power system state |
US9684624B2 (en) | 2014-01-14 | 2017-06-20 | Qualcomm Incorporated | Receive clock calibration for a serial bus |
JP6439418B2 (ja) * | 2014-03-05 | 2018-12-19 | ソニー株式会社 | 画像処理装置及び画像処理方法、並びに画像表示装置 |
US9414100B2 (en) | 2014-03-31 | 2016-08-09 | Arris Enterprises, Inc. | Adaptive streaming transcoder synchronization |
US9218651B2 (en) * | 2014-05-14 | 2015-12-22 | Novatek (Shanghai) Co., Ltd. | Image processing method for dynamically adjusting luminance and contrast of image |
JP2016019161A (ja) * | 2014-07-08 | 2016-02-01 | キヤノン株式会社 | 撮像装置 |
CN104202614B (zh) * | 2014-08-15 | 2016-03-09 | 小米科技有限责任公司 | 一种基于网络环境调整视频画质的方法及装置 |
US10085050B2 (en) | 2014-08-15 | 2018-09-25 | Xiaomi Inc. | Method and apparatus for adjusting video quality based on network environment |
US10102613B2 (en) | 2014-09-25 | 2018-10-16 | Google Llc | Frequency-domain denoising |
US9805662B2 (en) * | 2015-03-23 | 2017-10-31 | Intel Corporation | Content adaptive backlight power saving technology |
US9892518B2 (en) * | 2015-06-09 | 2018-02-13 | The Trustees Of Columbia University In The City Of New York | Systems and methods for detecting motion using local phase information |
CN105611290B (zh) * | 2015-12-28 | 2019-03-26 | 惠州Tcl移动通信有限公司 | 一种基于移动终端的无线传输图片的处理方法和系统 |
US9838660B1 (en) * | 2016-08-15 | 2017-12-05 | Samsung Electronics Co., Ltd. | Methods and systems for white balance |
EP3358844A1 (en) * | 2017-02-07 | 2018-08-08 | Koninklijke Philips N.V. | Method and apparatus for processing an image property map |
CN106767952B (zh) * | 2017-02-28 | 2018-12-07 | 西安交通大学 | 一种电感式位移传感器的干扰消除方法 |
US20180260658A1 (en) * | 2017-03-09 | 2018-09-13 | Qualcomm Incorporated | Systems and methods for avoiding redundant pixel computations in an image processing pipeline |
US20230107110A1 (en) * | 2017-04-10 | 2023-04-06 | Eys3D Microelectronics, Co. | Depth processing system and operational method thereof |
CN108011638B (zh) * | 2017-07-03 | 2021-09-28 | 中国人民解放军国防科技大学 | 一种数字射频脉冲调制方法和调制器 |
US10412410B2 (en) * | 2017-08-14 | 2019-09-10 | Google Llc | Compound motion-compensated prediction |
CN111801703A (zh) * | 2018-04-17 | 2020-10-20 | 赫尔实验室有限公司 | 用于图像处理管线的边界框生成的硬件和系统 |
EP3687818A1 (en) * | 2018-12-03 | 2020-08-05 | Hewlett-Packard Development Company, L.P. | Logic circuitry package |
JP7211483B2 (ja) * | 2019-02-18 | 2023-01-24 | 日本電気株式会社 | 画像処理装置、方法、システム、及びプログラム |
US11017541B2 (en) * | 2019-06-18 | 2021-05-25 | Intel Corporation | Texture detector for image processing |
CN112784825B (zh) * | 2019-11-01 | 2024-04-30 | 株式会社理光 | 图片中文字的识别方法、关键字检索方法、装置及设备 |
CN110933302B (zh) * | 2019-11-27 | 2021-06-25 | 维沃移动通信有限公司 | 一种拍摄方法及电子设备 |
US11483246B2 (en) | 2020-01-13 | 2022-10-25 | Vmware, Inc. | Tenant-specific quality of service |
CN111258537B (zh) * | 2020-01-15 | 2022-08-09 | 中科寒武纪科技股份有限公司 | 一种防止数据溢出的方法、装置和芯片 |
US11599395B2 (en) | 2020-02-19 | 2023-03-07 | Vmware, Inc. | Dynamic core allocation |
CN112101376B (zh) * | 2020-08-14 | 2024-10-22 | 北京迈格威科技有限公司 | 图像处理方法、装置、电子设备和计算机可读介质 |
CN111972928B (zh) * | 2020-08-21 | 2023-01-24 | 浙江指云信息技术有限公司 | 一种具有环绕音场的助睡眠枕头及其调控方法 |
US11539633B2 (en) * | 2020-08-31 | 2022-12-27 | Vmware, Inc. | Determining whether to rate limit traffic |
US11134208B1 (en) * | 2020-11-17 | 2021-09-28 | Raytheon Company | Increasing dynamic range of digital pixels by utilizing polling during integration |
CN112954241A (zh) * | 2021-02-20 | 2021-06-11 | 南京威派视半导体技术有限公司 | 图像传感器的图像数据读取系统及读取与组织的方法 |
US11483502B1 (en) * | 2021-06-04 | 2022-10-25 | Omnivision Technologies, Inc. | Bitline control supporting binning mode for pixel arrays with phase detection autofocus and image sensing photodiodes |
US11799784B2 (en) | 2021-06-08 | 2023-10-24 | Vmware, Inc. | Virtualized QoS support in software defined networks |
KR20220168742A (ko) | 2021-06-17 | 2022-12-26 | 삼성전자주식회사 | 인터럽트 제어를 수행하는 이미지 신호 프로세서 및 이미지 처리 시스템 |
CN113344092B (zh) * | 2021-06-18 | 2022-10-11 | 中科迈航信息技术有限公司 | Ai的图像识别方法及终端装置 |
CN113422904A (zh) * | 2021-06-21 | 2021-09-21 | 安谋科技(中国)有限公司 | 图像数据处理方法、介质及电子设备 |
CN113986530A (zh) * | 2021-09-30 | 2022-01-28 | 青岛歌尔声学科技有限公司 | 一种图像处理方法、装置、存储介质及终端 |
CN114201148B (zh) * | 2021-12-09 | 2024-08-20 | 中信银行股份有限公司 | 一种基于背压问题的处理方法及系统 |
CN114926359B (zh) * | 2022-05-20 | 2023-04-07 | 电子科技大学 | 联合双颜色空间恢复和多级解码结构的水下图像增强方法 |
CN115599574B (zh) * | 2022-12-12 | 2023-03-24 | 北京象帝先计算技术有限公司 | 图形处理系统、电子组件、电子设备及信息处理方法 |
CN117132629B (zh) * | 2023-02-17 | 2024-06-28 | 荣耀终端有限公司 | 图像处理方法和电子设备 |
US12081892B1 (en) * | 2023-03-10 | 2024-09-03 | Apple Inc. | Generation of dummy frame in image sensor interface circuit responsive to detection of timeout error |
CN117041669B (zh) * | 2023-09-27 | 2023-12-08 | 湖南快乐阳光互动娱乐传媒有限公司 | 视频流的超分控制方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0685797A1 (en) * | 1994-06-03 | 1995-12-06 | Hewlett-Packard Company | Overflow protection circuit for UART device |
DE19826584A1 (de) * | 1998-06-15 | 1999-12-16 | Siemens Ag | Verfahren zur Korrektur von Übertragungsfehlern bei einer Kommunikationsverbindung, vorzugsweise einer ATM-Kommunikationsverbindung |
CN1754335A (zh) * | 2003-02-25 | 2006-03-29 | 摩托罗拉公司 | 分组数据通信系统中的流量控制 |
WO2006128478A1 (en) * | 2005-05-30 | 2006-12-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Data unit relay device and method of controlling the same |
Family Cites Families (72)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4475172A (en) | 1978-05-30 | 1984-10-02 | Bally Manufacturing Corporation | Audio/visual home computer and game apparatus |
US4589089A (en) | 1978-05-30 | 1986-05-13 | Bally Manufacturing Corporation | Computer-peripheral interface for a game apparatus |
US4799677A (en) | 1983-09-02 | 1989-01-24 | Bally Manufacturing Corporation | Video game having video disk read only memory |
US4979738A (en) | 1983-12-06 | 1990-12-25 | Midway Manufacturing Corporation | Constant spatial data mass RAM video display system |
US4605961A (en) | 1983-12-22 | 1986-08-12 | Frederiksen Jeffrey E | Video transmission system using time-warp scrambling |
US4694489A (en) | 1983-12-22 | 1987-09-15 | Frederiksen Jeffrey E | Video transmission system |
US4742543A (en) | 1983-12-22 | 1988-05-03 | Frederiksen Jeffrey E | Video transmission system |
US4682360A (en) | 1983-12-22 | 1987-07-21 | Frederiksen Jeffrey E | Video transmission system |
US4743959A (en) | 1986-09-17 | 1988-05-10 | Frederiksen Jeffrey E | High resolution color video image acquisition and compression system |
WO1991002428A1 (en) | 1989-08-08 | 1991-02-21 | Sanyo Electric Co., Ltd | Automatically focusing camera |
US5227863A (en) | 1989-11-14 | 1993-07-13 | Intelligent Resources Integrated Systems, Inc. | Programmable digital video processing system |
JPH04307831A (ja) | 1991-04-04 | 1992-10-30 | Nippon Telegr & Teleph Corp <Ntt> | 送信バッファ制御装置 |
US5272529A (en) | 1992-03-20 | 1993-12-21 | Northwest Starscan Limited Partnership | Adaptive hierarchical subband vector quantization encoder |
US5247355A (en) | 1992-06-11 | 1993-09-21 | Northwest Starscan Limited Partnership | Gridlocked method and system for video motion compensation |
AU5099593A (en) | 1992-09-01 | 1994-03-29 | Apple Computer, Inc. | Improved vector quantization |
GB2275851B (en) | 1993-03-05 | 1997-02-26 | Sony Broadcast & Communication | A combined digital video/audio synchroniser |
US6122411A (en) | 1994-02-16 | 2000-09-19 | Apple Computer, Inc. | Method and apparatus for storing high and low resolution images in an imaging device |
US5694227A (en) | 1994-07-15 | 1997-12-02 | Apple Computer, Inc. | Method and apparatus for calibrating and adjusting a color imaging system |
US5629936A (en) * | 1994-08-01 | 1997-05-13 | University Of Iowa Research Foundation Inc. | Control of consecutive packet loss in a packet buffer |
US5764291A (en) | 1994-09-30 | 1998-06-09 | Apple Computer, Inc. | Apparatus and method for orientation-dependent camera exposure and focus setting optimization |
US5496106A (en) | 1994-12-13 | 1996-03-05 | Apple Computer, Inc. | System and method for generating a contrast overlay as a focus assist for an imaging device |
US5640613A (en) | 1995-04-14 | 1997-06-17 | Apple Computer, Inc. | Corrective lens assembly |
US6011585A (en) | 1996-01-19 | 2000-01-04 | Apple Computer, Inc. | Apparatus and method for rotating the display orientation of a captured image |
US5867214A (en) | 1996-04-11 | 1999-02-02 | Apple Computer, Inc. | Apparatus and method for increasing a digital camera image capture rate by delaying image processing |
US5809178A (en) | 1996-06-11 | 1998-09-15 | Apple Computer, Inc. | Elimination of visible quantizing artifacts in a digital image utilizing a critical noise/quantizing factor |
US6031964A (en) | 1996-06-20 | 2000-02-29 | Apple Computer, Inc. | System and method for using a unified memory architecture to implement a digital camera device |
US6157394A (en) | 1996-08-29 | 2000-12-05 | Apple Computer, Inc. | Flexible digital image processing via an image processing chain with modular image processors |
US5991465A (en) | 1996-08-29 | 1999-11-23 | Apple Computer, Inc. | Modular digital image processing via an image processing chain with modifiable parameter controls |
US6028611A (en) | 1996-08-29 | 2000-02-22 | Apple Computer, Inc. | Modular digital image processing via an image processing chain |
US5790705A (en) | 1996-09-13 | 1998-08-04 | Apple Computer, Inc. | Compression techniques for substantially lossless digital image data storage |
US6141044A (en) | 1996-09-26 | 2000-10-31 | Apple Computer, Inc. | Method and system for coherent image group maintenance in memory |
US5986714A (en) * | 1997-06-10 | 1999-11-16 | International Business Machines Corporation | Method, apparatus and computer program product for selectively reducing bandwidth of real-time video data |
KR100301825B1 (ko) * | 1997-12-29 | 2001-10-27 | 구자홍 | 엠펙비디오디코디시스템및엠펙비디오디코딩시스템의오버플로우처리방법 |
US6198514B1 (en) | 1998-02-27 | 2001-03-06 | Apple Computer, Inc. | Color misconvergence measurement using a common monochrome image |
JP2001281529A (ja) | 2000-03-29 | 2001-10-10 | Minolta Co Ltd | デジタルカメラ |
KR100341063B1 (ko) * | 2000-06-28 | 2002-06-20 | 송문섭 | 실시간 영상 통신을 위한 율제어 장치 및 그 방법 |
US6954193B1 (en) | 2000-09-08 | 2005-10-11 | Apple Computer, Inc. | Method and apparatus for correcting pixel level intensity variation |
US6745012B1 (en) | 2000-11-17 | 2004-06-01 | Telefonaktiebolaget Lm Ericsson (Publ) | Adaptive data compression in a wireless telecommunications system |
US7170938B1 (en) | 2001-08-21 | 2007-01-30 | Cisco Systems Canada Co. | Rate control method for video transcoding |
US6959044B1 (en) | 2001-08-21 | 2005-10-25 | Cisco Systems Canada Co. | Dynamic GOP system and method for digital video encoding |
KR100484148B1 (ko) * | 2002-07-27 | 2005-04-18 | 삼성전자주식회사 | 개선된 비트율 제어 방법과 그 장치 |
WO2004015476A1 (ja) | 2002-08-07 | 2004-02-19 | Matsushita Electric Industrial Co., Ltd. | 合焦装置 |
US7277595B1 (en) | 2003-01-06 | 2007-10-02 | Apple Inc. | Method and apparatus for digital image manipulation to remove image blemishes |
US7310371B2 (en) | 2003-05-30 | 2007-12-18 | Lsi Corporation | Method and/or apparatus for reducing the complexity of H.264 B-frame encoding using selective reconstruction |
US7327786B2 (en) | 2003-06-02 | 2008-02-05 | Lsi Logic Corporation | Method for improving rate-distortion performance of a video compression system through parallel coefficient cancellation in the transform |
US7324595B2 (en) | 2003-09-22 | 2008-01-29 | Lsi Logic Corporation | Method and/or apparatus for reducing the complexity of non-reference frame encoding using selective reconstruction |
US7602849B2 (en) | 2003-11-17 | 2009-10-13 | Lsi Corporation | Adaptive reference picture selection based on inter-picture motion measurement |
US7362804B2 (en) | 2003-11-24 | 2008-04-22 | Lsi Logic Corporation | Graphical symbols for H.264 bitstream syntax elements |
US7345708B2 (en) | 2003-12-23 | 2008-03-18 | Lsi Logic Corporation | Method and apparatus for video deinterlacing and format conversion |
US7362376B2 (en) | 2003-12-23 | 2008-04-22 | Lsi Logic Corporation | Method and apparatus for video deinterlacing and format conversion |
US7515765B1 (en) | 2004-01-30 | 2009-04-07 | Apple Inc. | Image sharpness management |
US7231587B2 (en) | 2004-03-29 | 2007-06-12 | Lsi Corporation | Embedded picture PSNR/CRC data in compressed video bitstream |
US7620103B2 (en) | 2004-12-10 | 2009-11-17 | Lsi Corporation | Programmable quantization dead zone and threshold for standard-based H.264 and/or VC1 video encoding |
US7612804B1 (en) | 2005-02-15 | 2009-11-03 | Apple Inc. | Methods and apparatuses for image processing |
US7949044B2 (en) | 2005-04-12 | 2011-05-24 | Lsi Corporation | Method for coefficient bitdepth limitation, encoder and bitstream generation apparatus |
US8031766B2 (en) | 2005-08-02 | 2011-10-04 | Lsi Corporation | Performance adaptive video encoding with concurrent decoding |
US8045618B2 (en) | 2005-08-05 | 2011-10-25 | Lsi Corporation | Method and apparatus for MPEG-2 to VC-1 video transcoding |
US7881384B2 (en) | 2005-08-05 | 2011-02-01 | Lsi Corporation | Method and apparatus for H.264 to MPEG-2 video transcoding |
US8155194B2 (en) | 2005-08-05 | 2012-04-10 | Lsi Corporation | Method and apparatus for MPEG-2 to H.264 video transcoding |
US7903739B2 (en) | 2005-08-05 | 2011-03-08 | Lsi Corporation | Method and apparatus for VC-1 to MPEG-2 video transcoding |
US8208540B2 (en) | 2005-08-05 | 2012-06-26 | Lsi Corporation | Video bitstream transcoding method and apparatus |
US7596280B2 (en) | 2005-09-29 | 2009-09-29 | Apple Inc. | Video acquisition with integrated GPU processing |
TWI285500B (en) | 2005-11-11 | 2007-08-11 | Primax Electronics Ltd | Auto focus method for digital camera |
US8970680B2 (en) | 2006-08-01 | 2015-03-03 | Qualcomm Incorporated | Real-time capturing and generating stereo images and videos with a monoscopic low power mobile device |
US7773127B2 (en) | 2006-10-13 | 2010-08-10 | Apple Inc. | System and method for RAW image processing |
US7893975B2 (en) | 2006-10-13 | 2011-02-22 | Apple Inc. | System and method for processing images using predetermined tone reproduction curves |
JP4254841B2 (ja) | 2006-10-20 | 2009-04-15 | ソニー株式会社 | 撮像装置、撮像方法、画像処理装置、画像処理方法および画像処理プログラム |
US7974489B2 (en) | 2007-05-30 | 2011-07-05 | Avago Technologies Ecbu Ip (Singapore) Pte. Ltd. | Buffer management for an adaptive buffer value using accumulation and averaging |
KR100929843B1 (ko) * | 2007-09-28 | 2009-12-04 | 주식회사 하이닉스반도체 | 오버플로우하지 않는 카운터 |
US7852751B2 (en) | 2008-02-15 | 2010-12-14 | Cisco Technology, Inc. | Constructing repair paths around multiple non-available links in a data communications network |
US8405727B2 (en) | 2008-05-01 | 2013-03-26 | Apple Inc. | Apparatus and method for calibrating image capture devices |
KR101477537B1 (ko) * | 2008-08-04 | 2014-12-30 | 삼성전자주식회사 | 오버 라이딩 모드를 지원하는 디지털 카메라 및 그제어방법 |
-
2010
- 2010-09-30 US US12/895,674 patent/US8629913B2/en active Active
-
2011
- 2011-08-31 WO PCT/US2011/050052 patent/WO2012044434A1/en active Application Filing
- 2011-09-29 TW TW100135384A patent/TWI504265B/zh not_active IP Right Cessation
- 2011-09-30 KR KR1020110100278A patent/KR101320818B1/ko active IP Right Grant
- 2011-09-30 CN CN201110305695.0A patent/CN102572316B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0685797A1 (en) * | 1994-06-03 | 1995-12-06 | Hewlett-Packard Company | Overflow protection circuit for UART device |
DE19826584A1 (de) * | 1998-06-15 | 1999-12-16 | Siemens Ag | Verfahren zur Korrektur von Übertragungsfehlern bei einer Kommunikationsverbindung, vorzugsweise einer ATM-Kommunikationsverbindung |
CN1754335A (zh) * | 2003-02-25 | 2006-03-29 | 摩托罗拉公司 | 分组数据通信系统中的流量控制 |
WO2006128478A1 (en) * | 2005-05-30 | 2006-12-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Data unit relay device and method of controlling the same |
CN101189840A (zh) * | 2005-05-30 | 2008-05-28 | 艾利森电话股份有限公司 | 数据单元中继设备和控制该数据单元中继设备的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102572316A (zh) | 2012-07-11 |
US20120081580A1 (en) | 2012-04-05 |
TW201228395A (en) | 2012-07-01 |
WO2012044434A1 (en) | 2012-04-05 |
US8629913B2 (en) | 2014-01-14 |
KR101320818B1 (ko) | 2013-10-29 |
KR20120107042A (ko) | 2012-09-28 |
TWI504265B (zh) | 2015-10-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102572316B (zh) | 用于图像信号处理的溢出控制技术 | |
CN102547302B (zh) | 使用图像传感器接口定时信号的闪光同步 | |
CN102547301B (zh) | 使用图像信号处理器处理图像数据的系统和方法 | |
CN102547162B (zh) | 用于处理图像数据的方法和系统以及电子设备 | |
CN102572443B (zh) | 用于在图像信号处理系统中同步音频和视频数据的技术 | |
CN102572265B (zh) | 使用具有粗略和精细自动对焦分数的图像统计数据的自动对焦控制 | |
US8508621B2 (en) | Image sensor data formats and memory addressing techniques for image signal processing | |
CN102404582A (zh) | 用于自动白平衡处理的灵活的颜色空间选择 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150211 |