CN114697621B - 使用反指数函数优化的边缘保留噪声降低算法 - Google Patents
使用反指数函数优化的边缘保留噪声降低算法 Download PDFInfo
- Publication number
- CN114697621B CN114697621B CN202011470120.XA CN202011470120A CN114697621B CN 114697621 B CN114697621 B CN 114697621B CN 202011470120 A CN202011470120 A CN 202011470120A CN 114697621 B CN114697621 B CN 114697621B
- Authority
- CN
- China
- Prior art keywords
- image
- image data
- memory buffer
- vector value
- memory
- 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.)
- Active
Links
- 230000009467 reduction Effects 0.000 title abstract description 29
- 238000004422 calculation algorithm Methods 0.000 title abstract description 13
- 238000005457 optimization Methods 0.000 title description 3
- 230000015654 memory Effects 0.000 claims abstract description 132
- 239000013598 vector Substances 0.000 claims abstract description 115
- 239000000872 buffer Substances 0.000 claims abstract description 96
- 230000006870 function Effects 0.000 claims abstract description 18
- 230000001131 transforming effect Effects 0.000 claims abstract description 11
- 238000000034 method Methods 0.000 claims description 64
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 description 40
- 230000008569 process Effects 0.000 description 31
- 238000001914 filtration Methods 0.000 description 25
- 238000004891 communication Methods 0.000 description 20
- 238000010586 diagram Methods 0.000 description 18
- 238000013461 design Methods 0.000 description 9
- 238000003860 storage Methods 0.000 description 9
- 238000012937 correction Methods 0.000 description 8
- 230000004044 response Effects 0.000 description 8
- 238000001514 detection method Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 230000002146 bilateral effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 230000009977 dual effect Effects 0.000 description 3
- 230000005855 radiation Effects 0.000 description 3
- 206010065042 Immune reconstitution inflammatory syndrome Diseases 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 2
- 125000002015 acyclic group Chemical group 0.000 description 2
- 230000000712 assembly Effects 0.000 description 2
- 238000000429 assembly Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- QVFWZNCVPCJQOP-UHFFFAOYSA-N chloralodol Chemical compound CC(O)(C)CC(C)OC(O)C(Cl)(Cl)Cl QVFWZNCVPCJQOP-UHFFFAOYSA-N 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000012804 iterative process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000023320 Luma <angiosperm> Species 0.000 description 1
- 238000012952 Resampling Methods 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000011176 pooling Methods 0.000 description 1
- 230000001629 suppression Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012800 visualization 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
- H04N25/10—Circuitry of solid-state image sensors [SSIS]; Control thereof for transforming different wavelengths into image signals
- H04N25/11—Arrangement of colour filter arrays [CFA]; Filter mosaics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/20—Image enhancement or restoration using local operators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T5/00—Image enhancement or restoration
- G06T5/70—Denoising; Smoothing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
- H04N23/81—Camera processing pipelines; Components thereof for suppressing or minimising disturbance in the image signal generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
- H04N23/84—Camera processing pipelines; Components thereof for processing colour signals
- H04N23/843—Demosaicing, e.g. interpolating colour pixel values
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/10—Circuitry of solid-state image sensors [SSIS]; Control thereof for transforming different wavelengths into image signals
- H04N25/11—Arrangement of colour filter arrays [CFA]; Filter mosaics
- H04N25/13—Arrangement of colour filter arrays [CFA]; Filter mosaics characterised by the spectral characteristics of the filter elements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N25/00—Circuitry of solid-state image sensors [SSIS]; Control thereof
- H04N25/60—Noise processing, e.g. detecting, correcting, reducing or removing noise
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N9/00—Details of colour television systems
- H04N9/64—Circuits for processing colour signals
- H04N9/643—Hue control means, e.g. flesh tone control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N9/00—Details of colour television systems
- H04N9/64—Circuits for processing colour signals
- H04N9/73—Colour balance circuits, e.g. white balance circuits or colour temperature control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10024—Color image
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/20—Special algorithmic details
- G06T2207/20172—Image enhancement details
- G06T2207/20192—Edge enhancement; Edge preservation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Spectroscopy & Molecular Physics (AREA)
- Image Processing (AREA)
Abstract
使用反指数函数优化的边缘保留噪声降低算法。一种装置包括存储器和处理器电路。存储器可以被配置为存储图像的图像数据。处理器电路可以被配置为:(a)将图像的图像数据从存储器拷贝到处理器电路的第一存储器缓冲器;(b)使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值;(c)使用被存储在第一存储器缓冲器中的图像数据以及第一向量值来针对图像中的每个像素位置计算第二向量值;(d)通过将第二向量值添加到对应的图像数据来变换被存储在第一存储器缓冲器中的图像数据;(e)将变换后的图像数据存储到存储器;以及(f)重复步骤(a)到(e),直到图像的图像数据已经被变换为止。
Description
技术领域
本发明总体上涉及图像处理,并且更具体地涉及用于实现使用反指数函数优化的边缘保留噪声降低算法的方法和/或装置。
背景技术
传统上,通过运行高斯平滑或者平均平滑滤波来降低图像中的噪声。尽管传统滤波技术抑制了噪声,但是传统滤波技术也会使对象边缘模糊。现有的边缘保留噪声降低算法利用双边滤波器和引导滤波器。双边滤波器使用非线性滤波器内核,从而导致高计算复杂度。引导滤波器需要设置参数以适应各种图像场景,这限制了其应用。由于双边滤波器和引导滤波器两者都涉及大量的非线性计算,因此难以将这些算法完全部署到密集计算加速器。
将期望实现使用反指数函数优化的边缘保留噪声降低算法。
发明内容
本发明涵盖涉及一种包括存储器和处理电路的装置的方面。存储器可以被配置为存储图像的图像数据。处理器电路可以被配置为:(a)将图像的图像数据从存储器拷贝到处理器电路的第一存储器缓冲器;(b)使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值;(c)使用被存储在第一存储器缓冲器中的图像数据以及第一向量值来针对图像中的每个像素位置计算第二向量值;(d)通过将第二向量值添加到对应的图像数据来变换被存储在第一存储器缓冲器中的图像数据;(e)将变换后的图像数据存储到存储器;以及(f)重复步骤(a)到(e),直到图像的图像数据已经被变换为止。
在上面描述的装置方面的一些实施例中,处理器电路还被配置为对变换后的图像数据重复步骤(a)到(f)预定的迭代次数。
在上面描述的装置方面的一些实施例中,处理器电路还被配置为将变换后的图像数据存储在第二存储器缓冲器中以作为结果图像输出。
在上面描述的装置方面的一些实施例中,处理器电路包括被配置为执行一个或多个运算符的多个硬件引擎。在其中处理器电路包括多个硬件引擎的一些实施例中,一个或多个运算符包括快速卷积运算符、乘法-加法运算符和超越运算符(transcendentaloperator)。在其中处理器电路包括多个硬件引擎的一些实施例中,处理器利用快速卷积运算符来执行梯度计算,以针对图像中的每个像素位置计算第一向量值。在其中处理器电路包括多个硬件引擎的一些实施例中,处理器利用乘法-加法运算符来执行逐元素的乘法和求和,以针对图像中的每个像素位置计算第一向量值。在其中处理器电路包括多个硬件引擎的一些实施例中,处理器电路利用超越运算符来执行指数和除法计算,以针对图像中的每个像素位置计算第一向量值。
在上面描述的装置方面的一些实施例中,变换后的图像数据具有降低的噪声和保留的对象边缘。
在上面描述的装置方面的一些实施例中,存储器和处理器电路被实现为片上相机系统的一部分。
在上面描述的装置方面的一些实施例中,图像包括热图像和飞行时间图像中的至少一个。
本发明还涵盖涉及一种降低捕获的图像中的噪声的方法的方面,该方法包括以下步骤:将图像的图像数据拷贝到第一存储器缓冲器;使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值;使用被存储在第一存储器缓冲器中的图像数据以及第一向量值来针对图像中的每个像素位置计算第二向量值;通过将第二向量值添加到对应的图像数据来变换被存储在第一存储器缓冲器中的图像数据;以及将变换后的图像数据存储在第二存储器缓冲器中以作为结果图像输出。
在上面描述的方法方面的一些实施例中,方法还包括对以下操作执行预定的迭代次数:使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值;使用被存储在第一存储器缓冲器中的图像数据以及第一向量值来针对图像中的每个位置计算第二向量值;以及通过将第二向量值添加到对应的图像数据来变换被存储在第一存储器缓冲器中的图像数据。
在上面描述的方法方面的一些实施例中,通过将第二向量值添加到对应的图像数据来变换被存储在第一存储器缓冲器中的图像数据降低了图像数据中的噪声,同时保留了对象的边缘。
在上面描述的方法方面的一些实施例中,通过将第二向量值添加到对应的图像数据来变换被存储在第一存储器缓冲器中的图像数据降低了图像数据中的固定模式噪声,同时保留了对象的边缘。
在上面描述的方法方面的一些实施例中,图像包括热图像和飞行时间图像中的至少一个。
在上面描述的方法方面的一些实施例中,使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值包括:使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算梯度向量。在一些实施例中,使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值还包括:针对被存储在第一存储器缓冲器中的图像中的每个像素位置计算梯度向量值的平方和。在一些实施例中,使用被存储在第一存储器缓冲器中的图像数据来针对图像中的每个像素位置计算第一向量值还包括:计算表示在图像的每个像素位置处的梯度的平方和的反指数函数的向量。
附图说明
根据下面的详细描述以及所附权利要求书和附图,本发明的实施例将变得显而易见。
图1是示出在相机的上下文中的根据本发明的实施例的边缘保留噪声降低滤波技术的示例实现方式的框图。
图2是示出根据本发明的实施例的数字信号处理流水线中的多个步骤的图。
图3是示出根据本发明的示例实施例的过程的流程图。
图4是示出用于计算图像的梯度相关值的多个阵列的图。
图5是示出用于计算用于将边缘保留噪声降低滤波应用于图像的反指数梯度幅度的多个阵列的图。
图6和图7是示出根据本发明的实施例的边缘保留噪声降低滤波的仿真的图。
图8是示出其中可以实现根据本发明的示例实施例的边缘保留噪声降低滤波技术的计算机视觉系统的示例实现方式的相机系统的图。
图9是示出其中可以实现根据本发明的示例实施例的边缘保留噪声降低滤波技术的上下文的图。
图10是示出图9的硬件引擎的一般实现方式的图。
具体实施方式
本发明的实施例包括提供边缘保留噪声降低算法,其可以(i)在抑制噪声的同时维持对象边缘;(ii)使用反指数函数优化;(iii)被实现为迭代过程;(iv)与常规技术相比具有较低的计算复杂度;(v)与常规技术相比具有较少的配置参数;(vi)提供容易的硬件加速部署;(vii)实现良好的图像质量;(viii)用于热图像和/或飞行时间图像;(ix)处理固定模式噪声和/或(x)被实现为一个或多个集成电路。
参考图1,示出了说明在相机50的上下文中的本发明的实施例的框图。相机50可以包括块(或电路)80和/或块(或电路)90。电路80可以是透镜和图像传感器组装件。电路90可以是相机电路。在一些实施例中,相机电路90可以包括被配置为实现数字视频相机、数字静态相机或者混合数字视频/静态相机(其被共同且单独地称为数字相机)的一个或多个电路。在各种实施例中,相机电路90可以用于捕获并过滤可见光图像、热(或红外辐射)图像和/或飞行时间图像。在示例中,相机电路90的电子件可以被实现为一个或多个集成电路。例如,专用集成电路(ASIC)或者片上系统(SoC)可以用于实现相机电路90的处理部分。相机50可以包括其他组件(未示出)。相机50的组件的数量、类型和/或功能可以根据特定实现方式的设计标准而变化。
相机电路90可以包括块(或电路)100。电路100可以实现处理器。处理器100可以被实现为嵌入式处理器(例如,ARM等)。在一些实施例中,处理器100可以包括被配置为执行边缘保留噪声降低滤波方案并且控制对噪声滤波的图像执行的一个或多个图像处理或计算机视觉操作(例如,对象检测、对象识别等)的多个硬件块(或单元)。在一些实施例中,处理器100可以包括块(或电路)102。电路102可以被实现为体现软件或固件。软件或固件102可以包括实现根据本发明的实施例的边缘保留噪声降低滤波方案的操作(或者代码或例程)。
相机电路90、处理器100和/或固件102中的每一个可以包括其他组件(未示出)。相机电路90、处理器100和/或固件102的组件的数量、类型和/或功能可以根据特定实现方式的设计标准而变化。
参考图2,示出了说明图1的处理器100的数字信号处理(DSP)电路的示例流水线的多个步骤的图。在各种实施例中,处理器电路100可以实现用于将从图像传感器获取的图像数据(例如,以颜色滤波器阵列(CFA)图片格式或者RGB-IR图片格式)转换为YUV图片格式的流水线110。流水线110可以实现根据本发明的实施例的噪声滤波算法,该噪声滤波算法在提供噪声降低的同时保留图像中的对象边缘。在各种实施例中,流水线可以包括步骤(或阶段)112、步骤(阶段)114、步骤(或阶段)116、步骤(或阶段)118以及步骤(或阶段)120。步骤112可以对CFA格式的图像数据执行去马赛克以获得针对每个图片元素(像素)的线性RGB(红色、绿色、蓝色)图像数据。步骤114可以执行白平衡操作。步骤116可以执行颜色和色调校正。步骤118可以执行RGB到YUV颜色空间转换。步骤120可以执行噪声滤波(例如,噪声降低、噪声校正等)和/或锐化。步骤120可以实现根据本发明的实施例的边缘保留噪声降低滤波技术。步骤112-120可以使用常规技术以进行去马赛克、白平衡、颜色和色调校正以及颜色空间转换。噪声降低和/或锐化不需要限于步骤120,而是可以在流水线步骤112-118中的一个或多个点处利用。通常,可以使用流水线110来处理可见光图像和红外辐射图像两者。然而,可以取决于流水线110是处理可见光图像还是处理红外辐射图像来选择不同的配置参数。
噪声特性基于图像数据本身而变化并且还可以在图像数据通过DSP流水线被处理时变化或者被成形。典型地,传感器图片具有附加的噪声(例如,噪声幅度独立于传感器数据)和光子噪声(例如,由于光子的离散本质而导致的噪声)。后者随着明亮度的增加而增加。例如,在理想情况下(例如,通过多次拍摄相同的图片来取平均),像素A将测量100个光子并且像素B将测量1000个光子,与像素A相比,将期望像素B的光子的绝对数量方面有更多的变化(例如,更多噪声)。因此,传感器图片将典型地在较明亮的像素中具有较高噪声。
白平衡典型地以不同的量来缩放颜色通道(例如,红值、绿值和蓝值)中的每一个(例如,将增益应用于颜色通道中的每一个)。不同的缩放量也缩放噪声,因此具有较高白平衡增益的颜色将典型地更加嘈杂。例如,如果红增益、绿增益和蓝增益分别为1.5、1和2,则在白平衡之后,可以期望蓝色是最嘈杂的并且绿色是最干净的。
颜色和色调校正也可以影响噪声。色调曲线典型地对于暗值具有大的斜率并且对于明亮值具有小的斜率;这将与明亮区域相比在暗区域中增加噪声。由于像素在暗区域中以较低噪声开始,因此典型行为是最暗区域和最明亮区域噪声最低并且处于中间的那些区域(例如,中间色调)最嘈杂。此外,混合输入RGB的颜色校正可以产生比其他颜色更加嘈杂的一些颜色。
在各种实施例中,提出了一种新的噪声滤波算法,该算法具有较低的计算复杂度、较少的配置参数以及较容易的硬件加速部署。在各种实施例中,通过运行新的算法,可以抑制图像噪声,同时对象边缘通常被维持为基本上未改变的。
参考图3,示出了说明根据本发明的示例实施例的边缘保留噪声降低滤波过程200的流程图。在各种实施例中,过程(或方法)200可以包括步骤(或状态)202、步骤(或状态)204、步骤(或状态)206、步骤(或状态)208、步骤(或状态)210、步骤(或状态)212、步骤(或状态)214、步骤(或状态)216和步骤(或状态)218。在步骤202中,可以从图像传感器接收输入帧IM0的图像数据。图像数据可以被存储在存储器中。在示例中,输入帧IM0可以被存储为具有宽度Im_w和高度Im_h的二维(2D)阵列(例如,IM0[1,Im_h,Im_w])。在示例中,输入帧IM0的图像数据可以被存储在系统存储器(例如,动态随机存取存储器(DRAM))中。
在步骤204中,过程200可以通过将输入帧IM0的图像数据从DRAM拷贝到本地存储器缓冲器以供处理器100处理来初始化本地存储器中的输出帧缓冲器IM1。类似于输入帧,输出帧可以被存储为具有宽度Im_w和高度Im_h的二维(2D)阵列(例如,IM1[1,Im_h,Im_w])。在步骤206中,过程200可以将第一(索引)变量(例如,K)初始化到初始值(例如,K=1)并且以要执行的迭代的次数初始化第二变量(例如,N)。然后,过程200可以移动到步骤208,步骤208开始包括步骤208-218的迭代过程。
在步骤208中,过程200可以使用输出帧IM1的图像数据来计算多个图像梯度相关向量(例如,GX[1,Im_h,Im_w]、GY[1,Im_h,Im_w]和GXY2[1,Im_h,Im_w])和四通道向量(例如,NPHI[4,Im_h,Im_w])。四通道向量NPHI[4,Im_h,Im_w]通常包括针对输入图像的每个像素位置的值。在计算四通道向量NPHI[4,Im_h,Im_w]的值时,过程200首先计算表示在图像IM1的每个像素位置处的水平梯度的向量GX[1,Im_h,Im_w]以及表示在图像IM1的每个像素位置处的垂直梯度的向量GY[1,Im_h,Im_w]。一旦计算出了水平梯度向量和垂直梯度向量,过程200就可以生成表示在每个像素位置处的梯度幅度的平方和的向量GXY2[1,Im_h,Im_w]。在示例中,可以使用下面的等式1来计算向量GXY2[1,Im_h,Im_w]:
GXY2=GX*GX+GY*GY 等式1
其中,GX是水平梯度向量并且GY是垂直梯度向量。
当已经针对每个像素位置计算了向量GXY2[1,Im_h,Im_w]时,过程200可以计算表示在图像IM1的每个像素位置处的梯度的平方和的反指数函数的向量SPHI[1,Im_h,Im_w]。在示例中,可以使用下面的等式2来计算向量SPHI[1,Im_h,Im_w]:
SPHI[1,Im_h,Im_w]=1/(exp(GXY2/Alpha)+Beta) 等式2
其中,Alpha和Beta是被选择以避免计算溢出的值。在示例中,Alpha可以具有大于5的值并且Beta可以具有Alpha-1的值。
一旦已经在图像IM1的每个像素位置处计算了向量SPHI[1,Im_h,Im_w],过程200就可以计算表示在图像IM1的每个半像素位置处的梯度的平方和的反指数函数的四通道向量NPHI[4,Im_h,Im_w]的值。在示例中,可以使用下面的过程来计算四通道向量NPHI[4,Im_h,Im_w]:
一旦已经针对每个像素位置计算了向量NPHI[4,Im_h,Im_w]的值,过程200然后就可以移动到步骤210。
在步骤210中,过程200可以使用输出帧IM1的图像数据以及向量NPHI[4,Im_h,Im_w]的值来针对输入图像的每个像素位置计算向量值VELOC[1,Im_h,Im_w]。在计算向量值VELOC[1,Im_h,Im_w]时,过程200可以首先计算表示向量NPHI的沿着通道维度的值的总和的向量SUM_NPHI[1,Im_h,Im_w]。在示例中,可以使用下面的等式3来计算在图像IM1的每个位置处的向量SUM_NPHI[1,Im_h,Im_w]的值:
SUM_NPHI=NPHI[0,:,:]+NPHI[1,:,:]+NPHI[2,:,:]+NPHI[3,:,:] 等式3
当已经针对每个像素位置计算了向量SUM_NPHI[1,Im_h,Im_w]时,过程200可以使用下面的过程来生成向量值VELOC[1,Im_h,Im_w]:
一旦已经针对每个像素位置计算了向量值VELOC[1,Im_h,Im_w],过程然后就可以移动到步骤212。
在步骤212中,过程200可以变换输出帧缓冲器IM1中的图像数据以在降低噪声的同时维持对象边缘。在示例中,过程200通常在每个位置处将计算出的向量值VELOC[1,Im_h,Im_w]添加到图像数据IM1[Im_h,Im_w](例如,IM1=IM1+VELOC)。然后,过程200可以移动到状态214。在步骤214中,过程200检查是否已经执行了预定的迭代次数(例如,K=N?)。当尚未执行预定的迭代次数时(例如,K<N),则过程200移动到步骤216以使索引K增加1并且然后返回到步骤208以执行另一迭代。当已经执行了预定的迭代次数时(例如,K=N),过程200移动到步骤218,在步骤218中,输出帧缓冲器IM1中的变换后的图像数据可以作为结果帧输出。在示例中,输出帧缓冲器IM1中的图像数据可以被拷贝回系统存储器(例如,DRAM)。
参考图4,示出了说明保存用于计算图像的梯度相关值的阵列的多个存储器缓冲器的图。在示例中,可以建立第一存储器缓冲器以保存输出帧IM1的图像数据。类似于输入帧,输出帧IM1可以被存储为具有宽度Im_w和高度Im_h的二维(2D)阵列(例如,IM1[1,Im_h,Im_w])。通常,输出帧Im1的图像像素的强度可以被表示为像素坐标的函数(例如,强度=f(x,y))。在图像中,像素的强度可以被定义为像素的值。例如,在8位灰度图像中,存在256个灰度级别。因此,被存储在输出缓冲器IM1中的图像的每个像素可以具有从0到255的值,该值将为像素的亮度。
输出帧缓冲器IM1的每个像素具有对应的水平梯度GX和垂直梯度GY。可以建立第二存储器缓冲器以保存输出帧IM1的水平梯度值,并且可以建立第三存储器缓冲器以保存输出帧IM1的垂直梯度值。类似于输出帧,水平梯度GX和垂直梯度GY可以被存储为具有宽度Im_w和高度Im_h的二维(2D)阵列(例如,分别为GX[1,Im_h,Im_w]和GY[1,Im_h,Im_w])。在示例中,可以由下面的等式4来表示梯度GX和梯度GY:
将等式4应用于图4中示出的阵列IM1中的位置x,y处的目标像素,针对梯度GX[1,x,y]和梯度GY[1,x,y]产生下面的值:
这也在图4中进行了说明。
一旦已经计算了水平梯度向量GX[1,Im_h,Im_w]和垂直梯度向量GY[1,Im_h,Im_w],就可以计算表示在每个像素位置处的梯度幅度的平方和的向量GXY2[1,Im_h,Im_w]。在示例中,可以建立第四存储器缓冲器GXY2以保存输出帧IM1的梯度幅度值的平方和。在另一示例中,向量GXY2[1,Im_h,Im_w]可以共享用于保存梯度向量GX[1,Im_h,Im_w]和GY[1,Im_h,Im_w]的存储器缓冲器中的一个,因为GX和GY通常在计算出向量GXY2[1,Im_h,Im_w]的值之后变为废弃。在示例中,可以使用上面的等式1来计算向量GXY2[1,Im_h,Im_w]:
GXY2=GX*GX+GY*GY 等式1
其中,GX是水平梯度向量并且GY是垂直梯度向量。将等式1应用于图4中示出的梯度向量GX[1,Im_h,Im_w]和GY[1,Im_h,Im_w]中的目标像素位置,针对向量GXY2[1,Im_h,Im_w]中的对应位置产生下面的值:
GXY2(x,y)=(-50)*(-50)+50*50=5000
参考图5,示出了说明用于计算在将根据本发明的实施例的边缘保留噪声降低滤波技术应用于输出帧缓冲器IM1中的图像数据时使用的反指数梯度幅度的多个阵列的图。在示例中,四个存储器缓冲器222、224、226和228可以用于执行根据本发明的示例实施例的反指数梯度优化。存储器缓冲器222可以被配置为保存向量SPHI[1,Im_h,Im_w]的全部或者部分。存储器缓冲器224可以被配置为将图像数据的全部或者部分保存在输出帧缓冲器IM1中。存储器缓冲器226可以被配置为保存向量NPHI[4,Im_h,Im_w]的全部或者部分。存储器缓冲器228可以被配置为保存向量SUM_NPHI[1,Im_h,Im_w]的全部或者部分。在示例中,可以使用输出帧缓冲器IM1来代替单独的缓冲器224。
当已经针对每个像素位置计算了向量GXY2[1,Im_h,Im_w]时,就可以计算表示在图像IM1的每个像素位置处的梯度的平方和的反指数函数的向量SPHI[1,Im_h,Im_w]的值并且将其存储在缓冲器222中。在示例中,可以使用下面的等式2来计算向量SPHI[1,Im_h,Im_w]:
SPHI[1,Im_h,Im_w]=1/(exp(GXY2/Alpha)+Beta) 等式2
其中,Alpha和Beta是被选择以避免计算溢出的值。在示例中,Alpha可以具有大于5的值并且Beta可以具有Alpha-1的值。在示例中,存储器缓冲器222可以共享用于保存向量GXY2[1,Im_h,Im_w]的存储器缓冲器。
一旦已经在图像IM1的每个像素位置处计算了向量SPHI[1,Im_h,Im_w],就可以计算表示在图像IM1的每个半像素位置处的梯度的平方和的反指数函数的四通道向量NPHI[4,Im_h,Im_w]的值并且将其存储在存储器缓冲器226中。在示例中,可以使用下面的过程来计算四通道向量NPHI[4,Im_h,Im_w]:
一旦已经针对每个像素位置计算了向量NPHI[4,Im_h,Im_w]的值,就可以计算向量SUM_NPHI[1,Im_h,Im_w]的值并且将其存储在存储器缓冲器228中。在示例中,可以使用下面的等式3来计算在图像IM1的每个位置处的向量SUM_NPHI[1,Im_h,Im_w]的值:
SUM_NPHI=NPHI[0,:,:]+NPHI[1,:,:]+NPHI[2,:,:]+NPHI[3,:,:]等式3
当已经针对每个像素位置计算了向量SUM_NPHI[1,Im_h,Im_w]的值时,可以使用输出帧IM1的图像数据、向量NPHI[4,Im_h,Im_w]的值以及向量SUM_NPHI[1,Im_h,Im_w]的值来计算向量VELOC[1,Im_h,Im_w]的值。在示例中,可以使用下面的过程来计算向量值VELOC[1,Im_h,Im_w]:
一旦已经针对每个像素位置计算了向量VELOC[1,Im_h,Im_w]的值,就可以对输出帧缓冲器IM1中的图像数据进行变换以在降低噪声的同时维持对象边缘。在示例中,在输出帧缓冲器IM1中的每个位置处,可以将计算出的向量值VELOC[1,Im_h,Im_w]添加到图像数据IM1[Im_h,Im_w](例如,IM1=IM1+VELOC)。一旦输出帧缓冲器IM1中的图像数据已经变换了预定的迭代次数,就可以将修改后的图像数据存储回系统存储器(例如,DRAM)以用于存储和/或随后的计算机视觉处理(例如,对象检测、对象标识、对象跟踪、飞行时间确定等)。
参考图6,示出了说明具有噪声的源图像的仿真的图形300的图。图形300通常示出了具有噪声302a和302b以及真实对象304的原始图像。正常地,噪声302a和302b可以作为锐化强度斑点出现。
参考图7,示出了说明图6的图像数据的仿真在应用根据本发明的示例实施例的边缘保留噪声降低滤波技术的八次迭代之后的图形310的图。在应用根据本发明的示例实施例的边缘保留噪声降低滤波技术之后,噪声元素302a和302b被显著降低(如由元素302a’和302b’示出的),同时对象边缘304基本上未改变(如由边缘304’示出的)。
参考图8,示出了相机系统900的图,该图说明了其中可以实现根据本发明的示例实施例的边缘保留噪声降低滤波算法的计算机视觉系统的示例实现方式。在一个示例中,相机系统900的电子件可以被实现为一个或多个集成电路。在示例中,相机系统900可以围绕处理器/相机芯片(或电路)902构建。在示例中,处理器/相机芯片902可以被实现为专用集成电路(ASIC)或片上系统(SOC)。处理器/相机电路902通常结合硬件和/或软件/固件,该硬件和/或软件/固件可以被配置为实现上面结合图1至图7描述的电路和过程。
在示例中,处理器/相机电路902可以连接到透镜和传感器组装件904。在一些实施例中,透镜和传感器组装件904可以是处理器/相机电路902的组件(例如,SoC组件)。在一些实施例中,透镜和传感器组装件904可以是与处理器/相机电路902分离的组件(例如,透镜和传感器组装件可以是与处理器/相机电路902兼容的可互换组件)。在一些实施例中,透镜和传感器组装件904可以是(例如,经由视频电缆、高清晰度媒体接口(HDMI)电缆、通用串行总线(USB)电缆、以太网电缆或无线链路)连接到处理器/相机电路902的单独相机的一部分。
透镜和传感器组装件904可以包括块(或电路)906和/或块(或电路)908。电路906可以与透镜组装件相关联。电路908可以被实现为一个或多个图像传感器。在一个示例中,电路908可以被实现为单个传感器。在另一示例中,电路908可以被实现为传感器的立体对。透镜和传感器组装件904可以包括其他组件(未示出)。透镜和传感器组装件904的组件的数量、类型和/或功能可以根据特定实现方式的设计标准而变化。
透镜组装件906可以捕获和/或聚焦从相机系统900周围的环境接收到的光输入。透镜组装件906可以捕获和/或聚焦用于(多个)图像传感器908的光。透镜组装件906可以实现一个或多个光学透镜。透镜组装件906可以提供缩放特征和/或聚焦特征。可以利用附加电路(例如,电动机)来实现透镜组装件906,以调整透镜组装件906的方向、缩放和/或光圈。可以定向、倾斜、平移、缩放和/或旋转透镜组装件906以提供相机系统900周围的环境的目标视图。
(多个)图像传感器908可以从透镜组装件906接收光。(多个)图像传感器908可以被配置为将接收到的聚焦光变换为数字数据(例如,位流)。在一些实施例中,(多个)图像传感器908可以执行模数转换。例如,(多个)图像传感器908可以对从透镜组装件906接收到的聚焦光执行光电转换。(多个)图像传感器908可以将转换后的图像数据呈现为颜色滤波器阵列(CFA)格式的位流。处理器/相机电路902可以将位流变换为视频数据、视频文件和/或视频帧(例如,人类可读的内容)。
处理器/相机电路902还可以连接到:(i)可选的音频输入/输出电路,其包括音频编解码器910、麦克风912和扬声器914;(ii)存储器916,其可以包括动态随机存取存储器(DRAM);(iii)非易失性存储器(例如,NAND闪速存储器)918、可移除介质(例如,SD、SDXC等)920、一个或多个串行(例如,RS-485、RS-232等)设备922、一个或多个通用串行总线(USB)设备(例如,USB主机)924和无线通信设备926。
在各种实施例中,处理器/相机电路902可以包括多个块(或电路)930a-930n、多个块(或电路)932a-932n、块(或电路)934、块(或电路)936、块(或电路)938、块(或电路)940、块(或电路)942、块(或电路)944、块(或电路)946、块(或电路)948、块(或电路)950、块(或电路)952和/或块(或电路)954。多个电路930a-930n可以是处理器电路。在各种实施例中,电路930a-930n可以包括一个或多个嵌入式处理器(例如,ARM等)。电路932a-932n可以实现多个与计算机视觉相关的处理器电路。在示例中,电路932a-932n中的一个或多个可以实现各种与计算机视觉相关的应用。电路934可以是数字信号处理(DSP)模块。在一些实施例中,电路934可以实现分离的图像DSP模块和视频DSP模块。
电路936可以是存储接口。电路936可以使处理器/相机电路902与DRAM 916、非易失性存储器918和可移除介质920接合。DRAM 916、非易失性存储器918和/或可移除介质920中的一个或多个可以存储计算机可读指令。可以由处理器930a-930n读取并执行计算机可读指令。响应于计算机可读指令,处理器930a-930n可以是可操作的以用作用于处理器932a-932n的控制器。例如,处理器932a-932n的资源可以被配置为高效地执行硬件中的各种特定操作,并且处理器930a-930n可以被配置为做出关于如何处理去往/来自处理器932的各种资源的输入/输出的决定。
电路938可以实现本地存储器系统。在一些实施例中,本地存储器系统938可以包括但不限于高速缓冲存储器(例如,L2CACHE)、直接存储器存取(DMA)引擎、图形直接存储器访问(GDMA)引擎和快速随机访问存储器。在示例中,DAG存储器968可以在本地存储器系统938中实现。电路940可以实现传感器输入(或接口)。电路942可以实现一个或多个控制接口,包括但不限于设备间通信(IDC)接口、集成电路间(I2C)接口、串行外围设备接口(SPI)和脉冲宽度调制(PWM)接口。电路944可以实现音频接口(例如,I2S接口等)。电路946可以实现时钟电路,包括但不限于实时时钟(RTC)、看门狗定时器(WDT)和/或一个或多个可编程定时器。电路948可以实现输入/输出(I/O)接口。电路950可以是视频输出模块。电路952可以是通信模块。电路954可以是安全模块。电路930至954可以使用一条或多条总线、接口、迹线、协议等彼此连接。
电路918可以被实现为非易失性存储器(例如,NAND闪速存储器、NOR闪速存储器等)。电路920可以包括一个或多个可移除介质卡(例如,安全数字介质(SD)、安全数字扩展容量介质(SDXC)等)。电路922可以包括一个或多个串行接口(例如,RS-485、RS-232等)。电路924可以是用于连接到通用串行总线(USB)主机或用作USB主机的接口。电路926可以是用于与用户设备(例如,智能电话、计算机、平板计算设备、云资源等)进行通信的无线接口。在各种实施例中,电路904-926可以被实现为处理器/相机电路902外部的组件。在一些实施例中,电路904-926可以是处理器/相机电路902的板上组件。
控制接口942可以被配置为生成用于控制透镜和传感器组装件904的信号(例如,IDC/I2C、STEPPER、IRIS、AF/ZOOM/TILT/PAN等)。信号IRIS可以被配置为调整透镜组装件906的光圈。接口942可以使得处理器/相机电路902能够控制透镜和传感器组装件904。
存储接口936可以被配置为管理一种或多种类型的存储和/或数据访问。在一个示例中,存储接口936可以实现直接存储器访问(DMA)引擎和/或图形直接存储器访问(GDMA)。在另一示例中,存储接口936可以实现安全数字(SD)卡接口(例如,以连接到可移除介质920)。在各种实施例中,可以将编程代码(例如,用于控制处理器/相机电路902的各种处理器和编码器的可执行指令)存储在存储器(例如,DRAM 916、NAND 918等)中的一个或多个中。编程代码当由处理器930中的一个或多个执行时,通常使得处理器/相机电路902中的一个或多个组件配置视频同步操作并开始视频帧处理操作。可以将所得到的压缩视频信号呈现给存储接口936、视频输出950和/或通信接口952。存储接口936可以在外部介质(例如,DRAM 916、NAND 918、可移除介质920等)与本地(内部)存储器系统938之间传输程序代码和/或数据。
传感器输入940可以被配置为向图像传感器908发送数据/从图像传感器908接收数据。在一个示例中,传感器输入940可以包括图像传感器输入接口。传感器输入940可以被配置为将捕获的图像(例如,图片元素、像素、数据)从图像传感器908发送到DSP模块934、处理器930中的一个或多个和/或处理器932中的一个或多个。由传感器输入940接收到的数据可以由DSP 934使用来确定来自图像传感器908的亮度(Y)和色度(U和V)值。传感器输入940可以提供到透镜和传感器组装件904的接口。传感器输入接口940可以使得处理器/相机电路902能够捕获来自透镜和传感器组装件904的图像数据。
音频接口944可以被配置为发送/接收音频数据。在一个示例中,音频接口944可以实现音频IC间声音(I2S)接口。音频接口944可以被配置为以由音频编解码器910实现的格式发送/接收数据。
DSP模块934可以被配置为处理数字信号。DSP模块934可以包括图像数字信号处理器(IDSP)、视频数字信号处理器DSP(VDSP)和/或音频数字信号处理器(ADSP)。DSP模块934可以被配置为从传感器输入940接收信息(例如,图像传感器908捕获的像素数据值)。DSP模块934可以被配置为根据从传感器输入940接收到的信息来确定像素值(例如,RGB、YUV、亮度、色度等)。DSP模块934可以进一步被配置为支持或提供传感器RGB到YUV原始图像流水线,以改进图像质量、进行不良像素检测和校正、去马赛克、白平衡、颜色和色调校正、伽玛校正、色相调整、饱和度、明亮度和对比度调整、色度和亮度噪声过滤。
I/O接口948可以被配置为发送/接收数据。由I/O接口948发送/接收的数据可以是杂项信息和/或控制数据。在一个示例中,I/O接口948可以实现通用输入/输出(GPIO)接口、模数转换器(ADC)模块、数模转换器(DAC)模块、红外(IR)远程接口、脉冲宽度调制(PWM)模块、通用异步接收器发送器(UART)、红外(IR)远程接口和/或一个或多个同步数据通信接口(IDC SPI/SSI)中的一个或多个。
视频输出模块950可以被配置为发送视频数据。例如,处理器/相机电路902可以连接到外部设备(例如,电视、监视器、膝上型计算机、平板计算设备等)。视频输出模块950可以实现高清晰度多媒体接口(HDMI)、PAL/NTSC接口、LCD/电视/并行接口和/或DisplayPort接口。
通信模块952可以被配置为发送/接收数据。通信模块952发送/接收的数据可以根据特定协议(例如,USB、Wi-Fi、UART等)进行格式化。在一个示例中,通信模块952可以实现安全数字输入输出(SDIO)接口。通信模块952可以包括对通过一种或多种无线协议(例如,/>Z-Wave、LoRa、电气与电子工程师协会(IEEE)802.11a/b/g/n/ac(WiFi)、IEEE 802.15、IEEE 802.15.1、IEEE 802.15.2、IEEE802.15.3、IEEE 802.15.4、IEEE 802.15.5和/或IEEE 802.20、GSM、CDMA、GPRS、UMTS、CDMA2000、3GPP LTE、4G/HSPA/WiMAX、5G、LTE_M、NB-IoT、SMS等)进行的无线通信的支持。通信模块952还可以包括对使用通用串行总线协议(例如,USB 1.0、2.0、3.0等)中的一种或多种进行的通信的支持。处理器/相机电路902还可以被配置为经由USB连接供电。然而,可以相应地实现其他通信和/或电源接口,以满足特定应用的设计标准。
安全模块954可以包括一套高级安全特征,以实现高级的设备上物理安全,包括OTP、安全启动、以及I/O可视化和DRAM加扰。在示例中,安全模块958可以包括真随机数生成器。在示例中,安全模块954可以用于处理器/相机电路902上的DRAM通信加密。
处理器/相机电路902可以被配置(例如,编程)为控制一个或多个透镜组装件906以及一个或多个图像传感器908。处理器/相机电路902可以从(多个)图像传感器908接收原始图像数据。处理器/相机电路902可以同时(并行地)将原始图像数据编码为多个编码的视频流。多个视频流可以具有各种分辨率(例如,VGA、WVGA、QVGA、SD、HD、超HD、4K等)。处理器/相机电路902可以在音频接口944处接收编码的和/或未编码的(例如,原始)音频数据。处理器/相机电路902还可以从通信接口952(例如,USB和/或SDIO)接收编码的音频数据。处理器/相机电路902可以(例如,使用USB主机接口)将编码的视频数据提供给无线接口926。无线接口926可以包括对通过一种或多种无线和/或蜂窝协议(例如,Z-Wave、LoRa、Wi-Fi IEEE 802.11a/b/g/n/ac、IEEE 802.15、IEEE 802.15.1、IEEE 802.15.2、IEEE 802.15.3、IEEE 802.15.4、IEEE 802.15.5、IEEE802.20、GSM、CDMA、GPRS、UMTS、CDMA2000、3GPP LTE、4G/HSPA/WiMAX、5G、SMS、LTE_M、NB-IoT等)进行的无线通信的支持。处理器/相机电路902还可以包括对使用通用串行总线协议(例如,USB 1.0、2.0、3.0等)中的一种或多种进行的通信的支持。
参考图9,示出了说明其中可以实现根据本发明的示例实施例的边缘保留噪声降低滤波算法的上下文的处理电路902的图。在各种实施例中,处理电路902可以被实现为计算机视觉系统的一部分。在各种实施例中,处理电路902可以被实现为相机、计算机、服务器(例如,云服务器)、智能电话(例如,蜂窝电话)、个人数字助理等的一部分。在示例中,处理电路902可以被配置用于包括但不限于自动驾驶和半自动驾驶车辆(例如,汽车、卡车、摩托车、农用机械、无人机、飞机等)、制造和/或安全和监视系统的应用。与通用计算机相反,处理电路902通常包括硬件电路,该硬件电路被优化以在最小的面积中且在最小的功耗的情况下提供高性能的图像处理和计算机视觉流水线。在示例中,可以使用被设计为减少计算复杂度并高效使用资源的硬件模块来实现用于执行用于计算机(或机器)视觉的图像处理、特征检测/提取和/或对象检测/分类的各种操作。
在示例实施例中,处理电路902可以包括块(或电路)930i、块(或电路)932i、块(或电路)916和/或存储器总线917。电路930i可以实现第一处理器。电路932i可以实现第二处理器。在示例中,电路932i可以实现计算机视觉处理器。在示例中,处理器932i可以是智能视觉处理器。电路916可以实现外部存储器(例如,电路930i和932i外部的存储器)。在示例中,电路916可以被实现为动态随机存取存储器(DRAM)电路。处理电路902可以包括其他组件(未示出)。处理电路902的组件的数量、类型和/或布置可以根据特定实现方式的设计标准而变化。
电路930i可以实现处理器电路。在一些实施例中,可以使用通用处理器电路来实现处理器电路930i。处理器930i可以是可操作的以与电路932i和电路916交互来执行各种处理任务。在示例中,处理器930i可以被配置作为用于电路932i的控制器。处理器930i可以被配置为执行计算机可读指令。在一个示例中,计算机可读指令可以由电路916存储。在一些实施例中,计算机可读指令可以包括控制器操作。处理器930i可以被配置为与电路932i进行通信和/或访问由电路932i的组件生成的结果。在示例中,处理器930i可以被配置为利用电路932i来执行与一个或多个神经网络模型相关联的操作。
在示例中,处理器930i可以被配置为利用边缘保留噪声降低滤波(EPNRF)技术102对电路932i进行编程。在各种实施例中,EPNRF技术102可以被配置用于在边缘设备中的操作。在示例中,处理电路902可以耦合到被配置为生成数据输入的传感器(例如,视频相机等)。处理电路902可以被配置为响应于来自传感器的数据输入来生成一个或多个输出。数据输入可以由EPNRF技术102来处理。由处理器930i执行的操作可以根据特定实现方式的设计标准而变化。
在各种实施例中,电路916可以实现动态随机存取存储器(DRAM)电路。电路916通常是可操作的以存储输入数据元素的多维阵列和各种形式的输出数据元素。电路916可以与处理器930i和处理器932i交换输入数据元素和输出数据元素。
处理器932i可以实现计算机视觉处理器电路。在示例中,处理器932i可以被配置为实现用于计算机视觉的各种功能。处理器932i通常是可操作的以执行由处理器930i布置的特定的处理任务。在各种实施例中,处理器932i的全部或部分可以仅以硬件来实现。处理器932i可以直接执行针对边缘保留噪声降低滤波并由指定处理(例如,计算机视觉)任务的软件(例如,有向非循环图等)生成的数据流。在一些实施例中,处理器932i可以是由处理电路902实现并且被配置为一起操作的若干计算机视觉处理器的代表示例。
在示例实施例中,处理器932i通常包括块(或电路)960、一个或多个块(或电路)962a-962n、块(或电路)960、路径966和块(或电路)968。块960可以实现调度器电路。块962a-962n可以实现硬件资源(或引擎)。块964可以实现共享存储器电路。块968可以实现有向非循环图(DAG)存储器。在示例实施例中,电路962a-962n中的一个或多个可以包括块(或电路)970a-970n。在所示的示例中,实现了电路970a、970b和970n。
在示例实施例中,电路970a可以实现卷积操作,电路970b可以被配置为提供n维(nD)点积运算,并且电路970n可以被配置为执行超越运算。可以利用电路970a-970n来提供根据本发明的示例实施例的边缘保留噪声降低滤波。卷积、nD点积和超越运算可以用于执行计算机(或机器)视觉任务(例如,作为对象检测过程的一部分等)。在又一示例中,电路962c-962n中的一个或多个可以包括块(或电路)970c-970n(未示出)以提供多维的卷积计算。
在示例中,电路932i可以被配置为从处理器930i接收有向非循环图(DAG)。从处理器930i接收到的DAG可以被存储在DAG存储器968中。电路932i可以被配置为使用电路960、962a-962n和964执行用于边缘保留噪声降低滤波方案102的DAG。
可以在电路960与相应的电路962a-962n之间交换多个信号(例如,OP_A至OP_N)。每个信号OP_A至OP_N可以传达执行操作信息和/或产生操作信息。可以在相应的电路962a-962n与电路964之间交换多个信号(例如,MEM_A至MEM_N)。信号MEM_A至MEM_N可以携带数据。信号(例如,DRAM)可以在电路916与电路964之间交换。信号DRAM可以在电路916与960之间(例如,在存储器总线966上)传输数据。
电路960可以实现调度器电路。调度器电路960通常是可操作的以在电路962a-962n之间调度任务,以执行由处理器930i定义的各种与计算机视觉相关的任务。调度器电路960可以将各个任务分配给电路962a-962n。调度器电路960可以响应于解析由处理器930i提供的有向非循环图(DAG)而分配各个任务。调度器电路960可以基于电路962a-962n执行工作的可用性将任务时间复用到电路962a-962n。
每个电路962a-962n可以实现处理资源(或硬件引擎)。硬件引擎962a-962n通常是可操作的以执行特定的处理任务。硬件引擎962a-962n可以被实现为包括专用硬件电路,该专用硬件电路被优化以在执行特定的处理任务时具有高性能和低功耗。在一些配置中,硬件引擎962a-962n可以并行且彼此独立地操作。在其他配置中,硬件引擎962a-962n可以彼此共同操作以执行分配的任务。
硬件引擎962a-962n可以是同质处理资源(例如,所有电路962a-962n可以具有相同的能力)或异质处理资源(例如,两个或更多个电路962a-962n可以具有不同的能力)。硬件引擎962a-962n通常被配置为执行运算符,该运算符可以包括但不限于重采样运算符、扭曲(warping)运算符、操纵组件列表的组件运算符(例如,组件可以是向量的共享共同属性的区域并且可以与边界框组合在一起)、矩阵逆运算符、点积运算符、卷积运算符、条件运算符(例如,复用和解复用)、重映射运算符、最小-最大-约简运算符、池化运算符、非最小非最大抑制运算符、聚集运算符、散射运算符、统计运算符、分类器运算符、积分图像运算符、上采样运算符和二的幂的下采样运算符等。
在各种实施例中,硬件引擎962a-962n可以仅被实现为硬件电路。在一些实施例中,硬件引擎962a-962n可以被实现为通用引擎,这些通用引擎可以通过电路定制和/或软件/固件被配置为作为专用机器(或引擎)来操作。在一些实施例中,硬件引擎962a-962n可以被替代地实现为在处理器930i和/或一个或多个处理器932i(包括但不限于向量处理器、中央处理单元(CPU)、数字信号处理器(DSP)或图形处理单元(GPU))上执行的程序代码的一个或多个实例或线程。在一些实施例中,调度器960可以针对特定进程和/或线程选择硬件引擎962a-962n中的一个或多个。调度器960可以被配置为响应于解析存储在DAG存储器968中的有向非循环图而将硬件引擎962a-962n指派给特定任务。
电路964可以实现共享存储器电路。共享存储器964可以被配置为响应于输入请求而存储数据和/或响应于输出请求(例如,来自处理器930i、DRAM 916、调度器电路960和/或硬件引擎962a-962n的请求)而呈现数据。在示例中,共享存储器电路964可以针对计算机视觉处理器932i实现片上存储器。共享存储器964通常是可操作的以存储由硬件引擎962a-962n生成和/或利用的输入数据元素和输出数据元素的多维阵列(或向量)的全部或部分。输入数据元素可以经由存储器总线917从DRAM电路916传输到共享存储器964。输出数据元素可以经由存储器总线917从共享存储器964发送到DRAM电路916。
路径966可以实现处理器932i内部的传输路径。传输路径966通常是可操作的以将数据从调度器电路960移动到共享存储器964。传输路径966还可以是可操作的以将数据从共享存储器964移动到调度器电路960。
处理器930i被示为与计算机视觉处理器932i进行通信。处理器930i可以被配置作为用于计算机视觉处理器932i的控制器。在一些实施例中,处理器930i可以被配置为将指令传输到调度器960。例如,处理器930i可以经由DAG存储器968将一个或多个有向非循环图提供给调度器960。调度器960可以响应于解析有向非循环图而初始化和/或配置硬件引擎962a-962n。在一些实施例中,处理器930i可以从调度器960接收状态信息。例如,调度器960可以将状态信息和/或输出的准备度从硬件引擎962a-962n提供给处理器930i,以使得处理器930i能够确定要执行的一个或多个下一条指令和/或要做出的决定。在一些实施例中,处理器930i可以被配置为与共享存储器964进行通信(例如,直接地或通过调度器960进行通信,该调度器960经由路径966从共享存储器964接收数据)。处理器930i可以被配置为从共享存储器964取回信息以做出决定。处理器930i响应于来自计算机视觉处理器932i的信息而执行的指令可以根据特定实现方式的设计标准而变化。
电路970a可以实现卷积电路。卷积电路970a可以与存储器964进行通信以接收输入数据并呈现输出数据。卷积电路970a通常是可操作的以从共享存储器电路964抓取多个数据向量。每个数据向量可以包括多个数据值。卷积电路970a还可以是可操作的以从共享存储器964抓取内核。该内核通常包括多个内核值。卷积电路970a还可以是可操作的以将块从共享存储器964抓取到内部(或本地)缓冲器。该块通常包括多个输入分片(tile)。每个输入分片可以包括多个维度的多个输入值。卷积电路970a还可以是可操作的以通过将内部缓冲器中的每个输入分片与内核值中的对应的一个相乘来并行地计算多个中间值,并且基于该中间值来计算包括多个输出值的输出分片。在各种实施例中,卷积电路970a可以仅以硬件来实现。可以用于实现电路970a的卷积计算方案的示例可以在美国专利第10,210,768号中找到,该专利以其整体通过引用并入本文。电路970b可以实现nD点积过程。电路970n可以实现超越运算过程。在各种实施例中,可以根据本文提供的实现方式描述来执行根据本发明的实施例的边缘保留噪声降低滤波方案。
参考图10,示出了说明图9的通用硬件引擎962x的示例实现方式的图。硬件引擎962x可以代表硬件引擎962a-962n。硬件引擎962x通常包括块(或电路)980、块(或电路)982、块(或电路)984和多个块(或电路)986a-986n。电路980可以被实现为存储器(或缓冲器)对980a和980b。电路982可以实现控制器电路。在示例中,电路982可以包括一个或多个有限状态机(FSM),该FSM被配置为控制由硬件引擎962x实现的各种运算符。电路984可以实现硬件引擎962x的处理流水线。电路986a-986n可以实现先进先出(FIFO)存储器。电路986a-986n可以被配置作为用于处理流水线984的输入缓冲器。共享存储器964可以(例如,通过来自电路982的信号)被配置作为多个共享输入缓冲器988a-988n和一个或多个输出缓冲器990。
信号(例如,ADDR/CONFIG)可以由调度器电路960生成并由硬件引擎962x接收。信号ADDR/CONFIG可以携带地址信息和配置数据。信号(例如,BUSY_LEVEL)可以由电路982生成并且被传输到调度器电路960。信号BUSY_LEVEL可以传达硬件引擎962x的忙碌水平。信号(例如,STATUS/TARGETS)可以由电路982生成并且被传输到调度器电路960。信号STATUS/TARGETS可以提供关于硬件引擎962x的状态信息和针对操作数的目标信息。
在示例实施例中,缓冲器980a和980b可以被配置作为双存储体配置缓冲器。双存储体缓冲器可以是可操作的以将用于当前正在运行的操作的配置信息存储在一个缓冲器(例如,缓冲器980b)中,而将用于下一操作的配置信息移动到另一缓冲器(例如,缓冲器980a)中。调度器960通常将运算符配置信息(包括在已经在先前的运算符组块中对运算符进行了部分处理的情况下的状态字)加载到双存储体缓冲器中。一旦电路982完成了正在运行的操作的配置信息并且已经接收到用于下一操作的配置信息,就可以交换缓冲器980a和980b。
电路982通常实现硬件引擎962x的控制电路。电路982确定何时从当前正在运行的运算符切换到新的运算符。控制器982通常是可操作的以控制信息向硬件引擎982x的进出的移动以及在硬件引擎982x内部的移动。通常,硬件引擎962x的操作是流水线化的。在运算符切换期间,流水线984的前端可能已经正在处理针对新的运算符的数据,而流水线984的尾端仍在完成与旧的运算符相关联的处理。
电路984可以实现流水线电路。流水线电路984通常是可操作的以使用被设计在硬件引擎962x中的功能来处理从共享存储器964接收到的操作数。电路984可以将由执行的功能产生的数据传送到一个或多个共享缓冲器990。
缓冲器986a-986n可以实现FIFO缓冲器。FIFO缓冲器986a-986n可以是可操作的以存储从共享缓冲器988a-988n接收到的操作数以在流水线984中进行处理。通常,FIFO缓冲器的数量和实现的共享缓冲器的数量可以是变化的以满足特定应用的设计标准。
如(多个)相关领域的技术人员将认识到的,可以使用根据本说明书的教导编程的常规通用处理器、数字计算机、微处理器、微控制器、RISC(精简指令集计算机)处理器、CISC(复杂指令集计算机)处理器、SIMD(单指令多数据)处理器、信号处理器、中央处理单元(CPU)、算术逻辑单元(ALU)、视频数字信号处理器(VDSP)、分布式计算机资源和/或类似的计算机器中的一个或多个来设计、建模、模拟和/或仿真由图1-10的图执行的功能和示出的结构。如将对(多个)相关领域技术人员显而易见的,熟练的程序员可以基于本公开的教导容易地准备适当的软件、固件、编码、例程、指令、操作码、微码和/或程序模块。软件通常体现在一种或多种介质(例如,非暂时性存储介质)中,并且可以由处理器中的一个或多个顺序或并行执行。
本发明的实施例还可以在ASIC(专用集成电路)、FPGA(现场可编程门阵列)、PLD(可编程逻辑器件)、CPLD(复杂可编程逻辑器件)、门海、ASSP(专用标准产品)和集成电路中的一个或多个中实现。该电路可以基于一种或多种硬件描述语言来实现。可以结合闪速存储器、非易失性存储器、随机存取存储器、只读存储器、磁盘、软盘、诸如DVD和DVD RAM之类的光盘、磁光盘和/或分布式存储系统来利用本发明的实施例。
当术语“可以”和“通常”在本文中与“是”和动词结合使用时,其意在传达这样的意图:该描述是示例性的,并且被认为足够宽泛以涵盖本公开中提出的具体示例以及可以基于本公开得出的替代示例两者。如本文所使用的术语“可以”和“通常”不应被解释为必然暗示省略对应的元件的可取性或可能性。
尽管已经参考本发明的实施例具体地示出并描述了本发明,但是本领域技术人员将理解,可以在不脱离本发明的范围的情况下对形式和细节进行各种改变。
Claims (19)
1.一种降低捕获的图像中的噪声的装置,包括:
存储器,其被配置为存储图像的图像数据;以及
处理器电路,其被配置为:(a)将所述图像的所述图像数据从所述存储器拷贝到所述处理器电路的第一存储器缓冲器;(b)使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算第一向量值;(c)使用被存储在所述第一存储器缓冲器中的所述图像数据以及所述第一向量值来针对所述图像中的每个像素位置计算第二向量值;(d)通过将所述第二向量值添加到对应的图像数据来变换被存储在所述第一存储器缓冲器中的所述图像数据;(e)将变换后的图像数据存储到所述存储器;以及(f)重复步骤(a)到(e),直到所述图像的所述图像数据已经被变换为止。
2.根据权利要求1所述的装置,其中,所述处理器电路还被配置为对所述变换后的图像数据重复步骤(a)到(f)预定的迭代次数。
3.根据权利要求1所述的装置,其中,所述处理器电路还被配置为将所述变换后的图像数据存储在第二存储器缓冲器中以作为结果图像输出。
4.根据权利要求1所述的装置,其中,所述处理器电路包括被配置为执行一个或多个运算符的多个硬件引擎。
5.根据权利要求4所述的装置,其中,所述一个或多个运算符包括快速卷积运算符、乘法-加法运算符和超越运算符。
6.根据权利要求5所述的装置,其中,所述处理器电路利用所述快速卷积运算符来执行梯度计算,以针对所述图像中的每个位置计算所述第一向量值。
7.根据权利要求5所述的装置,其中,所述处理器电路利用所述乘法-加法运算符来执行逐元素的乘法和求和,以针对所述图像中的每个位置计算所述第一向量值。
8.根据权利要求5所述的装置,其中,所述处理器电路利用所述超越运算符来执行指数和除法计算,以针对所述图像中的每个位置计算所述第一向量值。
9.根据权利要求1所述的装置,其中,所述变换后的图像数据具有降低的噪声和保留的对象边缘。
10.根据权利要求1所述的装置,其中,所述存储器和所述处理器电路被实现为片上相机系统的一部分。
11.根据权利要求1所述的装置,其中,所述图像包括热图像和飞行时间图像中的至少一个。
12.一种降低捕获的图像中的噪声的方法,包括以下步骤:
将图像的图像数据拷贝到第一存储器缓冲器;
使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算第一向量值;
使用被存储在所述第一存储器缓冲器中的所述图像数据以及所述第一向量值来针对所述图像中的每个像素位置计算第二向量值;
通过将所述第二向量值添加到对应的图像数据来变换被存储在所述第一存储器缓冲器中的所述图像数据;并且
将变换后的图像数据存储在第二存储器缓冲器中以作为结果图像输出。
13.根据权利要求12所述的方法,还包括对以下操作执行预定的迭代次数:使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算所述第一向量值;使用被存储在所述第一存储器缓冲器中的所述图像数据以及所述第一向量值来针对所述图像中的每个位置计算所述第二向量值;以及通过将所述第二向量值添加到所述对应的图像数据来变换被存储在所述第一存储器缓冲器中的所述图像数据。
14.根据权利要求12所述的方法,其中,通过将所述第二向量值添加到所述对应的图像数据来变换被存储在所述第一存储器缓冲器中的所述图像数据降低了所述图像数据中的噪声,同时保留了对象的边缘。
15.根据权利要求12所述的方法,其中,通过将所述第二向量值添加到所述对应的图像数据来变换被存储在所述第一存储器缓冲器中的所述图像数据降低了所述图像数据中的固定模式噪声,同时保留了对象的边缘。
16.根据权利要求12所述的方法,其中,所述图像包括热图像和飞行时间图像中的至少一个。
17.根据权利要求12所述的方法,其中,使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算所述第一向量值包括:使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算梯度向量。
18.根据权利要求17所述的方法,其中,使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算所述第一向量值还包括:针对被存储在所述第一存储器缓冲器中的所述图像中的每个像素位置计算梯度向量值的平方和。
19.根据权利要求18所述的方法,其中,使用被存储在所述第一存储器缓冲器中的所述图像数据来针对所述图像中的每个像素位置计算所述第一向量值还包括:计算表示在所述图像的每个像素位置处的梯度的平方和的反指数函数的向量。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011470120.XA CN114697621B (zh) | 2020-12-14 | 2020-12-14 | 使用反指数函数优化的边缘保留噪声降低算法 |
US17/138,046 US11521300B2 (en) | 2020-12-14 | 2020-12-30 | Edge preserving noise reduction algorithm using inverse exponential function optimization |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011470120.XA CN114697621B (zh) | 2020-12-14 | 2020-12-14 | 使用反指数函数优化的边缘保留噪声降低算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114697621A CN114697621A (zh) | 2022-07-01 |
CN114697621B true CN114697621B (zh) | 2024-06-18 |
Family
ID=81941568
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011470120.XA Active CN114697621B (zh) | 2020-12-14 | 2020-12-14 | 使用反指数函数优化的边缘保留噪声降低算法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11521300B2 (zh) |
CN (1) | CN114697621B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12131504B2 (en) * | 2021-11-30 | 2024-10-29 | Texas Instruments Incorporated | Suppression of clipping artifacts from color conversion |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108550158A (zh) * | 2018-04-16 | 2018-09-18 | 深圳市华星光电技术有限公司 | 图像边缘处理方法、电子装置及计算机可读存储介质 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100476875C (zh) * | 2007-01-15 | 2009-04-08 | 浙江大学 | 一种基调平移和削弱图像噪声的快速处理方法 |
US9299131B2 (en) * | 2011-08-22 | 2016-03-29 | Nec Corporation | Noise reduction apparatus, noise reduction method, and computer-readable storage medium |
US8953882B2 (en) * | 2012-05-31 | 2015-02-10 | Apple Inc. | Systems and methods for determining noise statistics of image data |
US9041834B2 (en) * | 2012-09-19 | 2015-05-26 | Ziilabs Inc., Ltd. | Systems and methods for reducing noise in video streams |
US9799088B2 (en) * | 2014-08-21 | 2017-10-24 | Qualcomm Incorporated | Render target command reordering in graphics processing |
CN104657947B (zh) * | 2015-02-06 | 2017-08-22 | 哈尔滨工业大学深圳研究生院 | 针对碱基图像的一种降噪方法 |
US10530995B2 (en) * | 2015-06-12 | 2020-01-07 | Gopro, Inc. | Global tone mapping |
US10038862B2 (en) * | 2016-05-02 | 2018-07-31 | Qualcomm Incorporated | Methods and apparatus for automated noise and texture optimization of digital image sensors |
US10318306B1 (en) * | 2017-05-03 | 2019-06-11 | Ambarella, Inc. | Multidimensional vectors in a coprocessor |
US10929945B2 (en) * | 2017-07-28 | 2021-02-23 | Google Llc | Image capture devices featuring intelligent use of lightweight hardware-generated statistics |
US10547863B1 (en) * | 2018-08-10 | 2020-01-28 | Apple Inc. | Image statistics for motion detection |
JP7015967B2 (ja) * | 2018-09-24 | 2022-02-03 | ドルビー ラボラトリーズ ライセンシング コーポレイション | Sdr-hdr画像変換における画像ノイズ除去 |
US11074678B2 (en) * | 2019-04-24 | 2021-07-27 | Apple Inc. | Biasing a noise filter to preserve image texture |
GB201908517D0 (en) * | 2019-06-13 | 2019-07-31 | Spectral Edge Ltd | 3D digital imagenoise reduction system and method |
-
2020
- 2020-12-14 CN CN202011470120.XA patent/CN114697621B/zh active Active
- 2020-12-30 US US17/138,046 patent/US11521300B2/en active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108550158A (zh) * | 2018-04-16 | 2018-09-18 | 深圳市华星光电技术有限公司 | 图像边缘处理方法、电子装置及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11521300B2 (en) | 2022-12-06 |
US20220188983A1 (en) | 2022-06-16 |
CN114697621A (zh) | 2022-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10719918B2 (en) | Dynamically determining filtering strength for noise filtering in image processing | |
US20220207680A1 (en) | Image Processing Method and Apparatus | |
US10467496B2 (en) | Temporal filtering of independent color channels in image data | |
US9911174B2 (en) | Multi-rate processing for image data in an image processing pipeline | |
US10445402B1 (en) | Fast and energy-efficient region of interest pooling for object detection with convolutional neural network | |
US10621464B1 (en) | Block based non-maximum suppression | |
US11526702B2 (en) | Unsupervised multi-scale disparity/optical flow fusion | |
US12073599B2 (en) | Method to improve accuracy of quantized multi-stage object detection network | |
US12056843B2 (en) | Methods and systems for image processing | |
CN110717864B (zh) | 一种图像增强方法、装置、终端设备及计算机可读介质 | |
US11620816B1 (en) | Hardware efficient RoI align | |
US9648261B2 (en) | Account for clipped pixels in auto-focus statistics collection | |
CN114697621B (zh) | 使用反指数函数优化的边缘保留噪声降低算法 | |
US11568251B1 (en) | Dynamic quantization for models run on edge devices | |
US9374526B2 (en) | Providing frame delay using a temporal filter | |
CN115797228A (zh) | 一种图像处理装置、方法、芯片、电子设备及存储介质 | |
US10789718B1 (en) | Local maxima sub-integer position estimation in video processing | |
US10671883B1 (en) | Approximate cross-check for real-time feature matching | |
US11615304B1 (en) | Quantization aware training by constraining input | |
Chen et al. | Real-time Image Contrast Enhancement VLSI Design for Intelligent Autonomous Vehicles. | |
WO2021016864A1 (zh) | 图像处理方法、系统、可移动平台及存储介质 | |
CN118195957A (zh) | Yuv数据处理方法和装置、数据处理设备、芯片及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |