具体实施方式
以下说明为完成发明的优选实现方式,其目的在于描述本发明的基本精神,但并不用以限定本发明。实际的发明内容必须参考之后的权利要求范围。
必须了解的是,使用于本说明书中的“包含”、“包括”等词,用以表示存在特定的技术特征、数值、方法步骤、作业处理、元件和/或组件,但并不排除可加上更多的技术特征、数值、方法步骤、作业处理、元件、组件,或以上的任意组合。
在权利要求中使用如“第一”、“第二”、“第三”等词用来修饰权利要求中的元件,并非用来表示之间具有优先权顺序,先行关系,或者是一个元件先于另一个元件,或者是执行方法步骤时的时间先后顺序,仅用来区别具有相同名字的元件。
图1是依据本发明实施例的运算装置的系统架构图。此系统架构可实施于桌上型
计算机、笔记型计算机、平板计算机、手机、数字相机、数字摄像机等,至少包含处理单元
110。处理单元110可使用多种方式实施,例如以专用硬件电路或通用硬件(例如,单一处理
器、具并行处理能力的多处理器、图形处理器或其他具运算能力的处理器),并且在执行固
件或软件时,提供之后所描述的功能。处理单元110可整合于图像信号处理器(ISP,Image
Signal Processor)中,并且可通过相机模块控制器170控制相机模块190用以捕捉多个帧。
相机模块190可包含图像传感器,例如,互补式金属氧化物半导体(complementary metal-
oxide-semiconductor,CMOS)、电荷耦合元件(charge-coupled device,CCD)等传感器,用
以感测由红、绿、蓝光强度所形成的图像,以及包含读取电子电路,用以从图像传感器搜集
感测到的数据。相机噪声模型不只受到图像传感器工艺的影响,也会受到一些环境因素影
响,例如温度、湿度甚至所拍摄对象本身等。离线方式产生的预先校准过相机噪声模型并无
法消除由环境因素产生的噪声。所以,处理单元110可依据捕捉到的一个帧产生相机噪声模
型,并且使用相机噪声模型修正之后捕捉到的帧,并将修正后结果存储在帧缓存器(frame
buffer)130。易失性存储器150,例如动态随机存取存储器(DRAM,Dynamic Random Access
Memory),用以存储执行过程中需要的数据,例如,变量、数据表(data tables)等。本发明的
相机噪声模型产生及使用方法由处理单元110执行:首先通过相机模块控制器170控制相机
模块190取得一个帧(frame)。依据该帧的内容在线产生一相机噪声模型,其中,相机噪声模
型为像素值与标准差之间的关系,这里的“像素值”是指一个像素在各色彩通道(如R-、Gr-、
Gb-及B-通道)下亮度值或强度值。再通过相机模块控制器170控制相机模块190取得下一
帧,并使用上一帧实时计算得来的相机噪声模型调整下一帧的内容并且将其存储至帧缓存
器130。即是说,本发明是用上一帧的数据在线产生实时的相机噪声模型用于下一帧数据的
去噪处理,实现流水线形式的作业。与离线方式产生的预先校准过相机噪声模型相比,本发
明充分考虑了图像传感器所处的实时环境因素。在一实施例中,相机模块190取得的帧均包
含多个块(block),处理单元110在目前帧中全局地搜寻平坦块(flat block),每一平坦块
对应于一个像素值区间,且平坦块为对应该像素值区间的所有块中,像素值的标准差和海
森值(Hessian value)趋向于最小的块,至于如何搜集平坦块,后面会详述。之后,再以搜寻
出的多个平坦块拟合出该相机噪声模型。在此须注意的是,下述实施例中是基于贝尔格式
(Bayer block based)的块进行处理,在各个色彩通道(如R-、Gr-、Gb-及B-通道)分别建立
前述相机噪声模型。但本发明并不限于此,本领域技术人员还可以基于其他格式和单位的
数据进行处理。
图2是依据本发明实施例由处理单元执行的相机噪声模型产生及使用方法流程图。此流程开始于提供R-、Gr-、Gb-及B-通道对照表(步骤S211)。每一个通道对照表包含多笔记录,每一笔记录存储相应于一段像素值区间的代表值、标准差及海森值。以12位表示的R-通道来说,每个像素的R-值可为0~4095中的任一值。假设每段像素值区间包含32个像素值,则R-通道对照表包含128笔记录,第一笔记录关联于R-值0~31,第二笔记录关联于R-值32~63,依此类推。R-、Gr-、Gb-及B-通道对照表中所存储的标准差及海森值,可视为当前处理过的块中落入该段像素值区间的标准差及海森值趋向于最小的块的标准差及海森值。在此须注意的是,本领域技术人员可将每段像素值区间所包含的数目设为任意的整数,例如,16、32或64等。处理单元110通过相机模块控制器170控制相机模块190取得一个帧(步骤S213),接着,反复执行一个循环来根据帧中的信息更新R-、Gr-、Gb-及B-通道对照表(步骤S231至S251)。当处理完帧中的所有信息后(步骤S251中“是”的路径),根据更新后的R-、Gr-、Gb-及B-通道对照表分别拟合R-、Gr-、Gb-及B-通道的相机噪声模型(步骤S271)。
详细来说,在每一回合,处理单元110从帧中取得该帧的下一个R-、Gr-、Gb-及B-块(步骤S231)。在步骤S231,帧中的像素形成一个贝尔格式图像(Bayer pattern),处理单元110依序从帧中的mxm个贝尔格式图像的像素中搜集(m/2)x(m/2)个R-、Gr-、Gb-及B-块的像素。图3是依据本发明实施例的R-、Gr-、Gb-及B-块的取得示意图。例如,处理单元110从帧中的16x16个像素的贝尔格式图像310搜集8x8个像素的R-块330、8x8个像素的Gr-块350、8x8个像素的Gb-块370以及8x8个像素的B-块390。接着,分别计算R-、Gr-、Gb-及B-块的像素值均值、像素值平方的均值以及标准差(步骤S233)。标准差可使用公式(1)表示:
σx代表一块(可为R-、Gr-、Gb-或B-块)的标准差,代表此块的像素值平方的均值,以及μx代表此块的像素值均值。计算R-、Gr-、Gb-及B-块的海森值(Hessian value)(步骤S235)。在步骤S235,海森值可使用公式(2)计算:
H=max(fabs(Hxx),fabs(Hyy),fabs(Hxy)) (2)
fabs()为浮点数绝对值函数,max()为最大值函数,H代表一块(可为R-、Gr-、Gb-或B-块)的海森值,Hxx代表此块的第一模式值,Hyy代表此块的第二模式值,以及Hxy代表此块的第三模式值。图4A是依据本发明实施例的第一模式示意图。第一模式值可使用公式(3)计算:
m代表一块的行总数,以及x代表一个像素的像素值(可为R-、Gr-、Gb-或B-值)。图4B是依据本发明实施例的第二模式示意图。第二模式值可使用公式(4)计算:
m代表一块的列总数,以及x代表一个像素的像素值(可为R-、Gr-、Gb-或B-值)。图4C是依据本发明实施例的第三模式示意图。第三模式值可使用公式(5)计算:
m代表一块的行或列总数,以及x代表一个像素的像素值(可为R-、Gr-、Gb-或B-值)。处理单元110选择性更新R-、Gr-、Gb-及B-通道对照表中相应于一段像素值区间的像素值均值、标准差及海森值(步骤S237)。在步骤S237,详细来说,针对每一个R-、Gr-、Gb-及B-块,先决定计算后像素值均值落入哪个像素值区间。接着,判断相应通道对照表的该落入像素值区间中存储的标准差是否大于计算后标准差,以及判断相应通道对照表的该落入像素值区间中存储的海森值是否大于计算后海森值。当两个条件皆满足时,将计算后像素值均值、标准差及海森值更新相应通道对照表的该落入像素值区间中存储的像素值均值、标准差及海森值。最后,判断是否处理完帧中的所有R-、Gr-、Gb-及B-块(步骤S251)。若是,循环结束;否则,回到步骤S231,继续处理下一个R-、Gr-、Gb-及B-块。在本实施例中,步骤S237是以逐步取代的方式搜集落入每一像素值区间的所有块中像素值的标准差和海森值(Hessian value)趋向于最小的块参与后面的相机噪声模型的拟合,更新过程中由于只需要存储当前标准差和海森值趋向于最小的块的像素值均值、标准差及海森值,大大节省了存储空间。
在步骤S271,处理单元110根据更新后通道对照表(R-、Gr-、Gb-或B-通道对照表)中存储的每一段像素值区间中的像素值均值与标准差拟合相机噪声模型,并且将拟合后相机噪声模型存储至易失性存储器150。详细来说,相机噪声模型为一个像素值(R-、Gr-、Gb-或B-值)与标准差间的关系曲线。曲线拟合可以采用例如“随机抽样一致(Random SampleConsensus,Ransac)”等迭代算法,在前述全局搜集平坦块的基础上可以实现进一步去干扰。图5是依据本发明实施例的相机噪声模型示意图,其中,假设在每一个像素值采样点上,相机噪声都可以用一个均值为0,标准差与像素值线性正相关的高斯白噪声来表征,相机噪声模型可使用公式(6)表示:
Y=a*X+b (6)
Y代表标准差,X代表像素的像素值(可为R-、Gr-、Gb-或B-值),a代表相机噪声模型的斜率,以及b代表相机噪声模型的截距。当然,在其它噪声理论中,相机噪声模型也可以呈现其它关系曲线,本发明不限于此。本发明另一实施例中还将相机噪声离线模型的斜率值a和截距值b作为预设值保存,如果在线相机噪声模型估计不成功,则可以采用离线模型的该预设值,以保证算法的鲁棒性。
最后,处理单元110可通过相机模块控制器170控制相机模块190取得下一个帧(步骤S291),接着,逐一取得该帧各像素的像素值,使用易失性存储器150中的相机噪声模型计算出各像素值的标准差,使用此计算后标准差调整此帧各像素的像素值,并且在调整完所有像素的像素值后存储调整后帧至帧缓存器130(步骤S293)。具体如何调整,后面图6至图8会详述。
图6是依据本发明实施例的相机去噪装置的系统方块图。噪声估计模块(noiseestimation module)610可通过相机模块控制器170控制相机模块190用以捕捉一个帧,并依据捕捉到的该帧产生相机噪声模型。相机噪声模型的产生细节可参考图2至图5的描述。但本发明不限于此,这里噪声估计模块610也可以使用其它方式产生该相机噪声模型。时域去噪模块630(DNT,Temporal De-Noise Module)可从噪声估计模块610取得相机噪声模型,或者是从非易失性存储器140取得预设的相机噪声模型,以及通过相机模块控制器170控制相机模块190用以捕捉另一个帧,以下称为目前帧。时域去噪模块630根据相机噪声模型、目前帧以及一参考帧中的每一像素值(可为R-、Gr-、Gb-或B-值)产生相应于每一像素值的融合比值(blending ratio),并且依据产生的融合比值融合目前帧以及参考帧中的像素值,用以产生暂存帧。值得注意的是,前述参考帧可为目前帧的前一帧经时域去噪模块630进行去噪处理后输出的帧,即参考帧为一累加帧。空域去噪模块(DNS,Spatial De-NoiseModule)650从时域去噪模块630取得暂存帧,在一实施例中,空域去噪模块650还使用相机噪声模型计算暂存帧中的每一像素值的消噪强度,取得暂存帧中的每一像素值的融合比值,以及使用融合比值调整暂存帧中的每一像素值的最终消噪强度。接着,空域去噪模块650使用最终消噪强度调整暂存帧中的每一像素值,用以产生结果帧。最后,空域去噪模块650将结果帧存储至帧缓存器130。
图7是依据本发明实施例的由处理单元110载入及执行时域去噪模块630的相关指令的时域去噪方法流程图。此方法始于取得R-、Gr-、Gb-及B-通道相机噪声模型(步骤S711),以及通过相机模块控制器170控制相机模块190来取得一个目前帧(步骤S713)。于步骤S711,R-、Gr-、Gb-及B-通道相机噪声模型可从噪声估计模块610或非易失性存储器140取得。接着,反复执行一个循环(步骤S733至S751),用以藉由融合目前帧以及参考帧中的每一个R-、Gr-、Gb-及B-像素值去除时域噪声。详细来说,处理单元110首先根据目前帧的一个位置的像素值计算一查找像素值(步骤S733),在一实施例中,处理单元110取得目前帧及参考帧中下一个位置的像素值(可以是R-、Gr-、Gb-或B-值),计算目前帧及参考帧的两个像素值的平均值作为该查找像素值;在其它实施例中,也可以直接以目前帧的该位置的像素值作为该查找像素值。之后,处理单元110根据相应通道的相机噪声模型取得相应于此查找像素值的标准差(步骤S735)。在步骤S733,查找像素值可使用公式(7)计算:
Xlookup=(Intensity1+Intensity2)/2 (7)
Xlookup代表查找像素值,Intensity1代表目前帧中的此位置的像素值(可为R-、Gr-、Gb-或B-值),以及Intensity2代表参考帧中的此位置的像素值(可为R-、Gr-、Gb-或B-值)。于步骤S735,处理单元110可根据相应通道的相机噪声模型取得相应于查找像素值的标准差。接着,处理单元110产生目前帧及参考帧的两个像素值间的差值(步骤S737),使用差值及前面取得的标准差计算融合比值(步骤S738)以及使用融合比值(blending ratio)融合目前帧及参考帧的此位置的两个像素值(步骤S739)。在步骤S738,融合比值可使用公式(8)计算:
Ratio=d*diff/e*std (8)
Ratio代表融合比值,d代表融合强度,diff代表差值,e代表噪声置信度(例如为1~2之间的任意数值),以及std代表标准差。于步骤S739,目前帧及参考帧的此位置的两个像素值的融合可使用公式(9)计算:
Xcurr=Xcurr*(Ratio)+Xref*(1-Ratio) (9)
Xcurr代表目前帧的此位置的像素值,Ratio代表此位置的融合比值,以及Xref代表参考帧的此位置的像素值。最后,处理单元110判断是否处理完所有像素值(步骤S751)。若是,则输出目前帧及目前帧的每一像素值的融合比值至空域去噪模块650(步骤S753);否则,继续处理下一个像素值(步骤S731)。值得注意的是,为了更加精确,处理单元110在步骤S737计算差值时还可以使用目前帧和参考帧此位置的像素周围的nxn块(例如,3x3块、5x5块)的像素值均值来计算该差值,在一些实施例中,处理单元110还要进一步判断此像素值周围的nxn块是否存在纹理,在不存在纹理的前提下使用前述均值的差值来作为该差值,这样可以进一步区别出噪声和边界,即便存在细小纹理也不会出错。在其它实施例中,步骤S739使用融合比值融合目前帧及参考帧的此位置的两个像素值以产生暂存帧时,还需要依据计算出的融合比值判断目前帧的该像素值相对于参考帧是否存在运动(motion);若不存在运动,则使用融合比值融合目前帧及参考帧的此位置的两个像素值;若存在运动,则使用目前帧的该像素值直接产生暂存帧,例如判断到场景切换(scene change),可以直接以目前帧作为暂存帧。举例而言,在前述公式(10)中,如果此位置的融合比值Ratio≥1,则说明存在运动,即是说,目前帧相对于参考帧的差值是运动引起,则公式(10)的计算中Ratio的取值截断为1;如果Ratio<1,则说明不存在运动,即是说,目前帧相对于参考帧的差值是噪声引起,则公式(10)的计算中Ratio的取值取步骤S738计算出的融合比值的值。
图8是依据本发明实施例的由处理单元110载入及执行空域去噪模块650的相关指令的空域去噪方法流程图。此方法始于从时域去噪模块630输入暂存帧及暂存帧的每一像素值的融合比值(步骤S811),以及取得R-、Gr-、Gb-及B-通道相机噪声模型(步骤S813)。在一实施例中,步骤S811的暂存帧是指经时域去噪模块630融合处理后输出的帧。在步骤S811,R-、Gr-、Gb-及B-通道相机噪声模型可从噪声估计模块610或非易失性存储器140取得。接着,反复执行一个循环(步骤S831至S851),用以调整目前帧中的每一个R-、Gr-、Gb-及B-像素值去除空域噪声。详细来说,处理单元110取得暂存帧中下一个位置的像素值(可以是R-、Gr-、Gb-或B-值)(步骤S831),根据相应通道的相机噪声模型取得相应于此像素值的消噪强度(步骤S833),以及依据此像素值的融合比值调整此像素值的消噪强度(步骤S835)。像素值的消噪强度的调整可使用公式(10)计算:
fSigma=Ratio*fSigma (10)
fSigma代表此像素值的消噪强度,以及Ratio代表此像素值的融合比值,即是说,本发明的空域去噪模块650会从时域去噪模块630处得到暂存帧以及对应暂存帧各像素的融合比值,利用融合比值调整空域去噪的强度,由于前述时域去噪模块630对目前帧中非运动的像素的判断存在误判的可能性,即将运动误判为噪声而对目前帧和参考帧的相应该像素做融合以实现时域去噪,本发明会根据时域去噪的强度(如前述融合比值)调整空域去噪的消噪强度,降低这种误判的影响。接着,处理单元110使用此像素值的消噪强度调整此像素值(步骤S837)。最后,处理单元110判断是否处理完所有像素值(步骤S851)。若是,则存储调整后暂存帧至帧缓存器130(步骤S853);否则,继续处理下一个像素值(步骤S831)。
虽然图1、6中包含了以上描述的元件,但不排除在不违反发明的精神下,使用更多其他的附加元件,已达成更佳的技术效果。此外,虽然图2、7、8的处理步骤采用特定的顺序来执行,但是在不违法发明精神的情况下,本领域技术人员可以在达到相同效果的前提下,修改这些步骤间的顺序,所以,本发明并不局限于仅使用如上所述的顺序。
虽然本发明使用以上实施例进行说明,但需要注意的是,这些描述并非用以限缩本发明。相反地,此发明涵盖了本领域技术人员显而易见的修改与相似设置。所以,本申请权利要求范围须以最宽广的方式解释来包含所有显而易见的修改与相似设置。