发明名称 一种基于亮度分层的快速三边滤波器色调映射方法
摘要 本发明涉及一种基于亮度分层的快速三边滤波器色调映射方法,属于数字图像处理领域。本发明在现有三边滤波器色调映射方法的基础上,仅对获得平滑后的水平方向梯度图像L′x(p)和经平滑后的垂直方向梯度图像L′y(p)的方法进行了改进,即:通过对水平方向梯度图像Lx(p)的像素值进行分级,然后根据Wk(p)=s(Lx(p)-Ik)和Jk(p)=Wk(p)·Ix(p)分别获得图像Wk(p)和图像Jk(p);再利用图像Wk(p)和图像Jk(p)对水平方向梯度图像Lx(p)进行平滑处理,得到平滑后的水平方向梯度图像L′x(p);使用相同方法,得到平滑后的垂直方向梯度图像L′y(p)。本发明方法与已有的三边滤波器色调映射方法相比较,具有处理速度快,但不损失图像细节的优点。
申请公布号 CN101908207B 申请公布日期 2012.02.08
申请号 CN201010236178.8 申请日期 2010.07.26
申请人 北京理工大学 发明人 沈建冰;刘衡生
分类号 G06T5/00(2006.01)I 主分类号 G06T5/00(2006.01)I
代理机构 代理人
主权项 一种基于亮度分层的快速三边滤波器色调映射方法,其特征在于:具体操作步骤为:第1步:输入一幅高动态范围图像;第2步:根据该图像的红色通道R、绿色通道G、蓝色通道B的通道值,获得该图像中每个像素p的对数域亮度L(p);第3步:利用前向差分法获得每个像素p的对数域亮度L(p)的水平方向梯度图像Lx(p)和垂直方向梯度图像Ly(p);第4步:获得经平滑后的水平方向梯度图像Lx(p);具体为:步骤①:找出第3步得到的水平方向梯度图像Lx(p)中的最大像素值Imax和最小像素值Imin,把从Imin到Imax的区间等分为m个亮度等级,分别记为I0、I1、……、Im‑1;其中,m≥4且m为正整数;步骤②:依次对第k个亮度等级,利用第3步得到的水平方向梯度图像Lx(p),分别根据公式(16)和公式(17)得到图像Wk(p)和图像Jk(p);k=1,2,……,m且k为正整数;Wk(p)=s(Lx(p)‑Ik)                                             (16)Jk(p)=Wk(p)·Lx(p)                                            (17)其中:s为一高斯函数;步骤③:对第3步得到的水平方向梯度图像Lx(p)进行平滑处理,得到平滑后的水平方向梯度图像L′x(p);具体为:如果Lx(p)∈[It,It+1],1≤t≤m‑2且t为正整数;则: <mrow> <msubsup> <mi>L</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <mi>I</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>L</mi> <mi>x</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>k</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>I</mi> <mi>t</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <munder> <mi>&Sigma;</mi> <mrow> <mi>&zeta;</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <mi>J</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mrow> <msub> <mi>L</mi> <mi>x</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <mi>I</mi> <mi>t</mi> </msub> </mrow> <mrow> <msub> <mi>k</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <mi>I</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>I</mi> <mi>t</mi> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <munder> <mi>&Sigma;</mi> <mrow> <mi>&zeta;</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <mi>J</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>k</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>p</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <mi>W</mi> <mi>t</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>k</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>p</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <mi>W</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow>其中,c为一高斯函数,N(p)表示以像素p为中心的n×n大小的区域,其中n≥3且n为正整数;ζ表示N(p)区域内的每一个像素;经过第4步的操作,即可获得经平滑后的水平方向梯度图像L′x(p);第5步:获得经平滑后的垂直方向梯度图像L′y(p);具体为:步骤①:找出第3步得到的垂直方向梯度图像Ly(p)中的最大像素值I′max和最小像素值I′min,把从I′min到I′max的区间等分为m′个亮度等级,分别记为I′0、I′1、……、I′m′‑1;其中,m′≥4且m′为正整数;步骤②:依次对于第k′个亮度等级,利用第3步得到的垂直方向梯度图像Ly(p),分别根据公式(21)和公式(22)得到图像W′k′(p)和图像J′k′(p);k′=1,2,……,m′且k′为正整数;W′k′(p)=s(Ly(p)‑I′k′)                                (21)Jk(p)=W′k′(p)·Ly(p)                                   (22)步骤③:对第3步得到的垂直方向梯度图像Ly(p)进行平滑处理,得到平滑后的垂直方向梯度图像L′y(p);具体为:如果Ly(p)∈[I′t′,I′t′+1],其中1≤t′≤m′‑2且t′为正整数;则: <mrow> <msubsup> <mi>L</mi> <mi>y</mi> <mo>&prime;</mo> </msubsup> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfrac> <mrow> <msub> <msup> <mi>I</mi> <mo>&prime;</mo> </msup> <mrow> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <mi>L</mi> <mi>y</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <msup> <mi>k</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <msup> <mi>I</mi> <mo>&prime;</mo> </msup> <mrow> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <msup> <mi>I</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <munder> <mi>&Sigma;</mi> <mrow> <mi>&zeta;</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <msup> <mi>J</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mrow> <msub> <msup> <mi>L</mi> <mo>&prime;</mo> </msup> <msup> <mi>x</mi> <mo>&prime;</mo> </msup> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>-</mo> <msub> <msup> <mi>I</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> </mrow> <mrow> <msub> <msup> <mi>k</mi> <mo>&prime;</mo> </msup> <mrow> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mrow> <mo>(</mo> <msub> <msup> <mi>I</mi> <mo>&prime;</mo> </msup> <mrow> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>-</mo> <msub> <msup> <mi>I</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> <mo>)</mo> </mrow> </mrow> </mfrac> <munder> <mi>&Sigma;</mi> <mrow> <mi>&zeta;</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <mi>J</mi> <mrow> <mi>t</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>23</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <msup> <mi>k</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>p</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <msup> <mi>W</mi> <mo>&prime;</mo> </msup> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>24</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <msup> <mi>k</mi> <mo>&prime;</mo> </msup> <mrow> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>p</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <msub> <msup> <mi>W</mi> <mo>&prime;</mo> </msup> <mrow> <msup> <mi>t</mi> <mo>&prime;</mo> </msup> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>25</mn> <mo>)</mo> </mrow> </mrow>经过第5步的操作,即可获得经平滑后的垂直方向梯度图像L′y(p);第6步:对于每一个像素p及其周围n×n大小区域内的每一个像素ζ,根据公式(5)计算局部细节值LΔ(p,ζ);LΔ(p,ζ)=L(ζ)‑L(p)‑(L′x(p),L′y(p))·(ζ‑p)             (5)第7步:根据公式(6)获得每一个像素p经三边滤波的结果Lout(p),Lout(p)即为L(p)的基本层图像; <mrow> <msub> <mi>L</mi> <mi>out</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>=</mo> <mi>L</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>+</mo> <mfrac> <mn>1</mn> <mrow> <msub> <mi>k</mi> <mi>&Delta;</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> </mrow> </mfrac> <munder> <mi>&Sigma;</mi> <mrow> <mi>&zeta;</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <msub> <mi>L</mi> <mi>&Delta;</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <mi>s</mi> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>&Delta;</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo> </mrow> </mrow> <mrow> <msub> <mi>k</mi> <mi>&Delta;</mi> </msub> <mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo> </mrow> <mo>=</mo> <munder> <mi>&Sigma;</mi> <mrow> <mi>&zeta;</mi> <mo>&Element;</mo> <mi>N</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> </mrow> </munder> <mi>c</mi> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>-</mo> <mi>p</mi> <mo>)</mo> </mrow> <mi>s</mi> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>&Delta;</mi> </msub> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>7</mn> <mo>)</mo> </mrow> </mrow>其中,f(p,ζ)为取值为0或1的二值函数,其定义如公式8所示; <mrow> <mi>f</mi> <mrow> <mo>(</mo> <mi>p</mi> <mo>,</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow> <mo>(</mo> <mi>if</mi> <msqrt> <msup> <mrow> <mo>(</mo> <msubsup> <mi>L</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <msubsup> <mi>L</mi> <mi>x</mi> <mo>&prime;</mo> </msubsup> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mn>2</mn> </msup> <mo>+</mo> <msup> <mrow> <mo>(</mo> <msubsup> <mi>L</mi> <mi>y</mi> <mo>&prime;</mo> </msubsup> <mrow> <mo>(</mo> <mi>&zeta;</mi> <mo>)</mo> </mrow> <mo>-</mo> <msubsup> <mi>L</mi> <mi>y</mi> <mo>&prime;</mo> </msubsup> <mrow> <mo>(</mo> <mi>p</mi> <mo>)</mo> </mrow> <mo>)</mo> </mrow> <mn>2</mn> </msup> </msqrt> <mo>&lt;</mo> <mi>R</mi> <mo>)</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> </mtd> <mtd> <mrow> <mo>(</mo> <mi>otherwise</mi> <mo>)</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>8</mn> <mo>)</mo> </mrow> </mrow>R为一个阈值,其通过公式(9)来确定;R=0.15(MaxG(L)‑MinG(L))(9)其中,MaxG(L)和MinG(L)分别为图像中每个像素p的对数域亮度L(p)中的最大梯度幅值和最小梯度幅值;第8步:通过公式(10)获得L(p)的细节层图像Ldetail(p);Ldetail(p)=L(p)‑Lout(p)                                     (10)第9步:通过公式(11)获得经动态范围压缩后的基本层图像Lbase(p);Lbase(p)=Lout(p)/factor                                     (11)其中,factor为压缩比例因子,取值为大于1的正实数;第10步:通过公式(12)合成经动态范围压缩后的对数域亮度图像Lmapped(p);Lmapped(p)=Lbase(p)+Ldetail(p)                              (12)第11步:从Lmapped(p)还原出彩色图像的三个颜色通道值;第12步:将第11步中的颜色通道值平移并缩放至0到255的区间,并四舍五入取整,再合并成一幅新的图像,即为输入的高动态范围图像经色调映射后的结果。
地址 100081 北京市海淀区中关村南大街5号