发明内容
本发明所要解决的技术问题是提供一种图像修复的自适应方法。
根据本发明的技术方案,一种自适应图像修复方法,其特征在于:包括如下步骤:
A.读入破损图像,并根据破损图像进行参数设置;
A1.根据破损区域图像断裂面积的大小设置曲率自适应系数的阈值
;其中,
;
A2.根据破损区域图像中所包含的边缘或细节设置梯度自适应系数
;其中,
;
A3.根据对破损图像所需要保护的梯度范围,设置常数
;常数
用于控制所需要保护的梯度的范围,
越大,梯度函数衰减越慢,图像修复的扩散性度就会减缓,这样可达到保护特定梯度的目的;
B.对破损图像制作掩膜图像,即将图像的破损区域与非破损区域分开来,以便于破损区域修复;
C.根据掩膜图像确定破损区域的位置;
D. 逐一计算破损区域各个点的半点梯度
和半点梯度模值
;
F. 计算曲率自适应系数
,其中:
,并将曲率自适应系数
与在A1步骤中设定的阈值
进行比较,得到最终的曲率自适应系数
的值,所述最终的曲率自适应系数
与阈值
的关系为:
;
在破损区域中逐点计算各点的曲率自适应系数
,与事先给定的阈值
进行比较,将大于
的
设定为
,说明此处几乎不存在大曲率的情况,即破损断裂面积较小,则不需要曲率来加强扩散,于是修复模型变为二阶偏微分方程,加快了修复速度;反之,将
设定为
,表明此处有大曲率的存在,即破损断裂面积很大,需要保留曲率扩散项来加强扩散以达到连接大的断裂破损区域的目的;
其中:
,
是用于平衡去噪和平滑的参数,
表示Lagrange乘子,
表示图像破损区域,
表示非破损区域。
分别表示现有破损图像和原始图像,
k表示半点曲率,
f(|k|) 表示曲率传导系数,
f(|k|)是以
k为自变量的增函数,
表示半点梯度,
表示半点梯度模值,
,
表示梯度传导系数,
是以
为半点梯度的增函数,
是常数;
是梯度自适应系数;
这样便可以在图像不同的破损区域自动的选择不同的修复模型,达到最好的图像修复的效果;
H.计算修复增量 ;
I. 得到第n+1次迭代后的修复结果:
其中,
表示第n+1次的修复结果,
表示第n次的修复结果,
表示迭代步长,
表示第n次的修复增量;
J.判断第n次的修复增量
是否小于或等于设定值,当第n次的修复增量
大于设定值,进入步骤K, 当第n次的修复增量
小于或等于设定值,修复完成;
K.判断迭代次数是否等于设定的次数,当迭代次数不等于设定的次数,进入步骤C, 当迭代次数等于设定的次数,修复完成。
根据本发明所述的自适应图像修复方法的一个优选方案,曲率传导系数
根据本发明所述的自适应图像修复方法的一个优选方案,梯度自适应系数
采用与破损区域中包含的边缘或细节成反比的原则进行设置;即:当破损区域中包含的边缘或细节越多时,
的取值越接近1,当破损区域中包含的边缘或细节越少时,
的取值越接近2。采用该原则进行设置的效果是:在图像修复时,只在较大曲率时使用CCD模型,有效减少修复时间,同时,只在较大梯度使用各向异性扩散,而平坦区域使用各向同性扩散,比全局使用各项异性扩散效果更优,修复时间更少,采用该方法进行图像修复不仅效果好,而且修复时间大大减少。
根据本发明所述的自适应图像修复方法的一个优选方案, 阈值
采用与破损区域中包含的断裂面积成正比的原则进行设置;即:当破损区域中包含的断裂面积越大,阈值
的取值越接近2,当破损区域中包含的断裂面积越小,阈值
的取值越接近1。采用该原则进行设置的效果是:当破损区域中包含的断裂面积越大,将阈值
的值提高,让传导系数曲率保留下来,这样便可以让曲率这个传导系数在更多的地方发挥作用,加强传播;反之,就应该降低阈值
的取值。
本发明所述的自适应图像修复方法的有益效果是:本发明根据不同的图像特点选择不同的梯度自适应系数
,不仅提高了修复的速度,还增强了图像修复的效果;并跟据破损区域中的曲率,计算曲率自适应系数
,在大曲率时保留曲率扩散项,在小曲率时去掉曲率扩散项,使得大大提高了图像修复的速度,本发明不仅图像修复效果好,而且修复时间短,适用于对所有破损的图像进行自动的修复。
具体实施方式
参见图1,一种自适应图像修复方法,按如下步骤进行:
A.读入破损图像,并根据破损图像进行参数设置;
A1.根据破损区域图像断裂面积的大小设置曲率自适应系数的阈值
;其中,
;
在具体实施例中,阈值
采用与破损区域中包含的断裂面积成正比的原则进行设置,即当破损区域中包含的断裂面积越大,阈值
的取值越接近2,当破损区域中包含的断裂面积越小,阈值
的取值越接近1;采用该原则进行设置的效果是:当破损区域中包含的断裂面积越大,将阈值
的值提高,让传导系数曲率保留下来,这样便可以让曲率这个传导系数在更多的地方发挥作用,加强传播;反之,就应该降低阈值
的取值;
A2.根据破损区域图像中所包含的边缘或细节设置梯度自适应系数
;其中,
;
在具体实施例中,梯度自适应系数
采用与破损区域中包含的边缘或细节成反比的原则进行设置,即当破损区域中包含的边缘或细节越多时,
的取值越接近1,当破损区域中包含的边缘或细节越少时,
的取值越接近2;采用该原则进行设置的效果是:在图像修复时,只在较大曲率时使用CCD模型,有效减少修复时间。同时,只在较大梯度使用各向异性扩散,而平坦区域使用各向同性扩散,比全局使用各项异性扩散效果更优,同时时间更少。该方法的图像修复不仅效果好,而且修复时间大大减少;
A3.根据对破损图像所需要保护的梯度范围,设置常数
;常数
一般设置为0~20;
A4.设定迭代次数和迭代步长
;一般以 200次为起始数,迭代步长
以50次递增,直到峰值信噪比达到较稳定为止;
B.对破损图像制作掩膜图像,即将图像的破损区域与非破损区域分开来,以便于破损区域修复;一般来说图像中破损的区域为全白或全黑的区域,而这两个像素值在正常图像中很难出现,所以只要将图像中像素值大于250(破损区为白色),或像素值小于5(破损区为黑色)的部分视为破损区,将该处标记像素值为1(或0),将其他完好的地方标记像素值为0(或1),那么掩膜图像就制作完成;
C.根据掩膜图像确定破损区域的位置;
D. 逐一计算破损区域各个点的半点梯度
和半点梯度模值
;
E.逐一计算破损区域各个点的半点曲率;
其中,
表示
x对
I的偏导数,
表示
y对
I的偏导数;
和
的求法与式(11)相同,计算时,
和
采用中心差分法,同时,半点曲率
也采用中心差分法计算;
F. 计算曲率自适应系数
,其中:
,并将曲率自适应系数
与在A1步骤中设定的阈值
进行比较,得到最终的曲率自适应系数
的值,所述最终的曲率自适应系数
与阈值
的关系为:
;
在破损区域中逐点计算各点的曲率自适应系数
,与事先给定的阈值
进行比较,将大于
的
设定为
,说明此处几乎不存在大曲率的情况,即破损断裂面积较小,则不需要曲率来加强扩散,于是修复模型变为二阶偏微分方程,加快了修复速度;反之,将
设定为1,表明此处有大曲率的存在,即破损断裂面积很大,需要保留曲率扩散项来加强扩散以达到连接大的断裂破损区域的目的;
G.计算矢量j :
其中(1)式是由4个半点梯度和4个半点曲率的加权平均得来的:
其中,
z表示一个半像素点,
表示全部的4个半像素点,即一个领域;
(1)式和(2)式中,
,
是用于平衡去噪和平滑的参数,
表示Lagrange乘子,
表示图像破损区域,
表示非破损区域。
分别表示现有破损图像和原始图像,
k表示半点曲率,
f(|k|) 表示曲率传导系数,
f(|k|)是以
k为自变量的增函数,
表示梯度,
表示梯度模值,
,
代表梯度传导系数,
是以
为梯度的增函数,
是常数;
是梯度自适应系数;其中,
;
根据(1)式,修复分成两种情况,一种是破损图像有噪声的情况,一种是破损图像无噪声的情况,有噪声的修复模型如(3)式:
无噪声的修复模型如(4)式:
(4)
这样便可以在图像不同的破损区域自动的选择不同的修复模型,达到最好的图像修复的效果;
若将j写成j=(j 1,j 2),则:
其中:j 1为水平分量,j 2为垂直分量,d为网格长度,h为两个网格点之间的距离;
若以当前计算点为中心点(0 ,0),则在半点方案时:
;
I. 得到第n次迭代后的修复结果:
其中,
表示第n+1次的修复结果,
表示第n次的修复结果,
表示迭代步长,
表示第n次的修复增量;
J.判断修补增量
是否小于或等于设定值,当修补增量
不小于设定值,进入步骤K, 当修补增量
小于或等于设定值,修复完成;设定值规定为约等于0的数,如0.1、0.01等等,设定值越小,修复时间可能越长。
K.判断迭代次数是否等于设定的次数,当迭代次数不等于设定的次数,进入步骤C, 当迭代次数等于设定的次数,修复完成。
修复图像的流程如图1所示。
p(
)是根据图像的平坦陡峭程度来选择的,图像变化越平缓,
p越接近2,否则越接近1;
a是曲率自适应系数的一个阈值,
,当图像破损处的大曲率比较多时,将阈值
a的值提高。图5表示,当
时,传导系数为
,即p-laplace算子CCD模型;反之,传导系数为
,即p-laplace算子TV模型。由此看出,这样分成两部分的原因是,当曲率较小时,不直接使用因子
k,降阶为二阶,可大大减少运算时间。
在CDD模型中,传导率
受梯度和曲率的共同控制,即CDD 模型在梯度大的地方扩散较弱, 在曲率绝对值大的地方扩散较强。所以对
和
选择适当的函数,这样在
和
的共同作用下,图像中强烈并且光顺的边缘将得到最好的保护,即使不太强(
较小),但足够光顺的等照度线也能持续足够长的时间。反之,如果任何等照度线的局部具有大曲率,即使其梯度模值较大,也将迅速扩散。
所以,选择
,与
相比,它更强调了大曲率,如图2中虚线曲线所示。
选择
,参数
K可以用来控制受保护梯度模值的范围。分别选择
K=1和
K=3,函数如图3所示。可见,当
K=3时,函数随着梯度的增加衰减的更慢,即可以通过控制
K来保护不同的梯度。如图3中虚线曲线所示。
由于大曲率时需扩散强,而CDD模型中的曲率因子能加强扩散,所以在大曲率时使用CDD模型较好;而小曲率的时候使用TV模型即可;在大梯度时,为了保护边缘使用TV模型较好;小梯度时,即平坦区域使用热扩散模型较好。因此,本发明引入了根据曲率大小选择曲率扩散模型的自适应系数q和根据图像变化大小选择扩散模型的自适应系数p。其Euler-Lagrange方程和梯度下降公式为:
式(6)中
是用于平衡去噪和平滑的参数(若修复图像时有噪声的,
取得越小,图像平滑模糊的越严重),
,
表示Lagrange乘子,
表示图像破损区域,
表示非破损区域。
分别表示现有破损图像和原始图像,
k表示半点曲率,
,
f(|k|)是以
k为自变量的增函数,表示曲率传导系数;
表示半点梯度,
表示半点梯度模值,
,
表示的是以
为半点梯度的增函数,表示梯度传导系数;
div表示散度,
表示图像随修复时间的变化值。
由式(6)可知,
,
。
的取值与图像的曲率有关,在图像变化大处曲率
k就大,当
时,
,即保留了曲率扩散项这一项;在图像变化不明显处曲率
k小,当
时,
,即曲率扩散项为0,此时就简化为TV模型。
的取值与图像的梯度有关,破损区图像边缘较多的话,
p的取值越小,反之越大。
下面,在不考虑噪声的情况下,用极限法来分析上面的自适应模型。p和q的极限值分别取1和2,那么,可以组合成四种不同的情况:
这时表示该破损点处的曲率值很小,表示没有什么太大的破损或者断裂的存在;同时,原始的破损区域中的图像包含的大多是接近于平坦的区域,所以破损区域的梯度值也很小,那么这时的修补模型演变为:
其中,
表示拉普拉斯算子,
表示梯度。式(7)中的模型为著名的调和模型,也称作热扩散模型,即各项同性扩散模型。它表示在修复该破损区域的时候,各个方向都是以相同速度和系数进行扩散的,速度快于各向异性扩散。调和模型是一个二阶偏微分方程,它适合修复破损区是很平坦的区域的图像。由于调和模型在所有方向都可以以一个较快的速度进行修复,所以不像各向异性扩散,不同方向上的修复程度不同,所以收敛速度较快,即完成修复的时间较少;同时,在平坦区域使用调和模型的效果是优于各向异性扩散的,因为平坦区域意味着没有什么边缘或细节部分,那么要是用各向异性扩散就会使一些方向的像素值增强,一些方向的像素值减弱,造成虚假边缘,即我们所说的阶梯效应。所以,通过上面的分析,在平坦区域使用调和修补模型无论是在修复效果上还是修复速度上都是最优的。
这时表示该破损点处的曲率值很小,表示没有什么太大的破损或者断裂的存在;而破损区域中包含的边缘或细节是比较多的,所以其梯度值是很大的。这样的情况表示了破损区域包含了较多的边缘,但破损的边缘都很光滑且断裂面积不大的区域,这时的修补模型演变为:
其中,
表示半点梯度,
。根据式子(8)可知,现在的修复模型演变成了TV模型。TV模型是一个二阶偏微分方程,同时也是各向异性扩散的,在速度上是优于三阶的CDD修复模型的。由于是各向异性扩散的,所以在修复时其扩散只发生在破损图像的边缘处,所以该模型能很好的保护边缘和细节部分。并且由于破损处的曲率小,表示断裂面积不大,所以用TV模型修复完全不会对修复效果造成影响,由于在此略去了曲率部分的计算,使得CDD模型的三阶偏微分方程降阶成了二阶的TV模型,使得修复时间大大的减少了。所以,在这种破损面积不大的广顺边缘区域,使用TV模型在修复速度上是较快的。
我们上面分析的两个模型就是p-laplace算子扩散模型中的两个特例,而之所以p-laplace算子可以达到一个很好的修复效果,就是因为它实质上就是一个各项异性扩散的方程,如果用等照度线的切线和垂直方向来表示,有下面的式子:
其中,
表示半点梯度,
p(
)表示梯度自适应系数,
表示等照度线的切线方向,扩散系数
表示切线方向的扩散速度,而
表示等照度线的垂直方向,扩散系数
表示垂直方向的扩散速度。这两个系数控制着不同方向上的扩散行为,所以只要合理的选择
的值,就能达到某种扩散目的,最终达到满意的图像修复的效果,而上面所分析的只是两种极限情况。
这时表示破损处的曲率是很大的,表示这里有破损面积较大或者断裂处较宽的情况存在,但是破损区域所包含的边缘很细节又较少,接近于平坦区域,即梯度值是很小的。当破损图像是这种破损面积较大,但图像又很平坦时,修补模型就演变为:
其中,
表示半点梯度,
。式子(9)所表示的模型就是QCDD修复模型。QCDD修复模型是直接建立在热扩散模型的基础上的,此时的扩散强度不在依赖于梯度模值了,而仅仅依赖于等照线的几何信息——曲率
。即在破损处的曲率较大时,扩散就会加快,以此来填补破损面积较大的区域。由于曲率
的引入,使得该模型满足了人类视觉中的“连接整体性准则”,表明在面对较大破损的时候修复效果还是不错的。由于QCDD修复模型是建立在热扩散的基础上的,所以去除了梯度值对扩散速度的负面影响,因此其修复速度必然会加快。
这时表示破损处的曲率很大,表示这里有破损面积较大或者断裂处较宽的情况存在;同时,破损区域中包含了大量的边缘和细节部分,即破损区域的梯度值都很大。那么这种破损面积大且破损区域含有大量的边缘或细节信息的区域,修补模型演变为:
其中,
表示半点梯度,
,
表示半点曲率,
。式子(10)表示的就是一个典型的CDD模型。因为破损的图像中的断裂面积很大同时破损区域还含有大量的边缘信息,所以要用曲率
加强其扩散,达到修断裂面积的目的,同时还要应用各向异性扩散来保护边缘和细节部分。所以在这种破损大且边缘多的区域使用CDD模型是最合适的,虽然CDD模型的修复速度较慢,但其修复效果是最好的,能够满足要求。
通过以上分析可以看出,一幅破损的图像并不是所有地方都使用的一种修复模型,在不合适的地方用错误的模型不仅会导致修复速度很慢,同时可能造成修复质量下降的情况出现。所以只要根据不同的图像、不同位置的情况选取适当的的值,修复模型就可以近似趋近于以上的四个模型中的一个或几个,这就达到了自适应的目的,使得最终的修复效果达到最佳。所以通过上面的分析可以知道,该自适应模型在修复质量和修复速度上都表现的很不错。
实施例1:采用本发明的方法对带有划痕和特殊图案的Lena破损图像进行图像修复,其中,原始图像见图4(a),图4(a)的破损图像见图4(b),图4(b)的掩膜图像见图4(c),图4(b)的修复图像见图4(d);在修复时,设置
p=1.5,
a=1.55,
K=0.8,迭代次数为300次,迭代步长
取1。
实施例2:采用本发明的方法对带有汉字的Lena破损图像进行图像修复,其中,原始图像见图5(a), 图5(a)的破损图像见图5(b),图5(b)的掩膜图像见图5(c),图5(b)的修复图像见图5(d);在修复时,设置
p=0.35,
a=0.8,
K=0.9,迭代次数为300次,迭代步长
取1。
综上所述,本发明的自适应图像修复方法可以针对不同的图像、在不同的破损区域自适应的使用不同的图像修复模型,其图像修复效果好,而且修复时间短。