900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 【图像修复】基于matlab深度信息图像修复【含Matlab源码 2299期】

【图像修复】基于matlab深度信息图像修复【含Matlab源码 2299期】

时间:2019-06-09 09:26:29

相关推荐

【图像修复】基于matlab深度信息图像修复【含Matlab源码 2299期】

⛄一、深度信息图像修复简介

0 引言

图像修复是指对待修复图像中缺损的部分,利用已有的图像信息对缺损区域进行修复,是计算机图像和视觉中的研究热点之一。在图像修复领域,通常采用的是基于块的纹理合成的修复方法。基于块的纹理合成的修复又可以分为基于图像分解和基于样本块的图像修复技术两种。

基于图像分解的修复技术是将图像分解为结构和纹理两部分,基于样本分别进行结构修补和纹理合成,其中用图像修补技术来修补结构部分,用纹理合成方法来填充纹理部分,最终将两部分的修复结果叠加起来。该方法适合于结构比较清晰且易于提取的情况,因此具有很大的局限性。

基于样本块的图像修复技术是通过纹理合成来填充缺损区域,其主要思想是通过选取最优匹配的像素块,根据图像的纹理信息,以受损边界的某个像素点为中心在未受损区域的样本块中寻找相似的纹理块来进行填充缺失部分。Criminis等[1]通过计算受损边界的块中已知像素所占的比例、梯度和法线方向来定义待修复区块的优先级,通过计算区块之间的欧氏距离得到最佳匹配的像素块,然后将其复制到受损区域中。Criminisi算法通过对样本块的直接复制来填充缺损区域,修复效果往往存在明显的结构上的不连续性和不完整性。

考虑到在人类的视觉感知系统中,深度信息能够有效反映出物体的纹理特征和梯度变化,以及物体的完整性和模糊程度。Luo等[2]提出基于深度图像的图像修复算法,该方法通过基于深度图像绘制(Depth-Image-Based Rendering,DIBR)和视点变换,在Criminisi算法的基础上进行了改进。但是该方法的局限性在于必须有待修复图像的深度图像。Mansfield等[3,4]开始研究引入对块的变形,例如对样本块进行旋转、尺度放缩和颜色调整等,通过对块的变形来实现结构上的连续性,从而满足人类视觉的语义性。另外,场景中存在的透视扭曲现象往往会造成修复结构的不连续性,Huang等[5]在此基础上,引入仿射变换矩阵,通过检测图像中的消失点和消失线,提取出相应的仿射变换矩阵,实现对块的几何变换,从而更加有效地解决结构不连续的问题。但同样存在明显的不足之处,首先,受限于仿射变换矩阵的提取方法,对于图像中无法有效检测出消失点和消失线时,修复的效果也会随之下降;其次,该方法只能划分出最多3个平面区域,不能处理更加普遍的修复情况。

基于以上研究,本文提出了一种基于深度信息的图像修复算法,采用平面参数马尔可夫模型提取出图像的深度信息,通过对共面区域的划分,大幅度减小匹配块的搜索空间;并构造透视变换矩阵,来实现对匹配块的几何变换;设计含有深度信息的目标代价函数,通过对目标代价函数全局优化,来选择最优修复效果。最后,通过实验对算法进行验证,表明该算法不仅更加具有鲁棒性,而且能较大幅度地提高图像修复的准确性。

1 本文算法

本文算法主要是在Saxena算法[6]和Huang算法[5]的基础上,采用平面参数马尔可夫模型来提取图像已知像素信息区域的深度信息,分析超像素块的结构特征,据此划分出图像中的共面区域,在相互共面区域内搜索和待修复块的相似匹配块,根据深度信息推导出透视变换矩阵,最终根据设计的含有深度项的目标代价函数,通过全局优化选择最佳修复效果。

具体算法流程如图1所示。

图1 图像修复流程

1.1 平面参数马尔可夫模型

本文的平面参数马尔可夫模型是在Saxena等[6]提出的针对图像深度重构的马尔可夫模型基础上进行改进。其目的就是为了得到超像素块在三维空间中的位置和方向,从而推导出图像的深度信息。首先需要通过图像过分割的方法将图像分为具有相同特质的超像素块[7]。对于绝大多数的图像来说,一个超像素块就是一个平面的组成部分,诸如墙壁、窗户、天空和地面等,这些块通常具有相同的颜色和纹理特征。

单独从图像中很难得到三维空间中的位置和方向信息,但是可以通过其他的属性信息推导出。这些属性信息包括图像特征和超像素块的位置关系,其中图像特征信息包括纹理、颜色和边缘信息等,以及相对其他块的方向信息;超像素块位置关系可以分为相连和共面关系等,如图2所示。

图2 超像素块位置关系示意图

为了寻找平面参数(位置和方向信息)和属性信息之间的联系以及推导相连和共面结构的特性,构造平面参数马尔可夫模型方程:

图3 二维超像素块示意图

式(1)中f(·)项描述的是平面参数a和图像特征xi,si之间的联系。

图4 超像素块共面示意图

1.2 透视投影变换矩阵

通过透视投影的原理[8,9]推导出图像透视投影变换矩阵Mpers。如图5所示,坐标为(x,y,z)的点到选定投影参考点的投影,在观察平面上的交点为(xp,yp,zvp)。根据Ph=Mpers·P,其中:Ph=(xh,yh,zh,h)为齐次坐标,P=(x,y,z,1)为坐标位置[10]。xpyp与xhyh之间的关系为xp=xh/h,yp=yh/h;并且对于xh、yh有:

图5 透视投影原理

在3D空间中的相似结构具有相等的距离,然而,在图像空间中却不能保持其相等的特性,会产生一定的透视扭曲。为了解决透视扭曲的现象,通过仿射纠正来还原空间中的线性结构,保持纠正前后的图形中直线平行性不变。本文使用均值漂移方法[11]来检测3D仿射纠正空间中的偏移向量聚类集合,设集合Dm={di},di∈R2,其中di为纠正空间的偏移向量。对于每个不同的平面m需要各自检测偏移向量。

2 修复指导

考虑到透视扭曲现象的存在,需要根据透视变换矩阵Mpers对匹配块进行几何变形。同时,根据深度信息来推测出匹配块的目标位置。据此,设计了如下含有深度项的目标代价函数

其中:σ表示深度差异阈值参数,当sign(·)=0表示匹配块与待修复块之间存在较小的差异;反之,存在较大差异。实验中发现σ设为0.01时,能较为准确地反映匹配块和待修复块之间的深度差异。这样通过优先选择在深度上存在较小差异的匹配块来填充缺损区域,从而避免在深度信息上产生失真。

⛄二、部分源代码

clear all

close all

I=imread(‘color4.bmp’);

B=imread(‘depth4.bmp’);

%B=rgb2gray(B);

[m,n,hh]=size(I);

A=rgb2gray(I);%彩色图转换灰度图

I1=I;

figure(1),imshow(I);title(‘原始受污染的图像’);

figure(2),imshow(B);title(‘深度图’);

figure(3),imshow(A);title(‘灰度图’);

[rowind,columnind]=find(A<4);%灰度图中小于4灰度值的认为是受到污染的像素,统计受污染像素的位置,rowind和columnind均是向量,并且两者一一对应组成位置坐标

pointnum=length(rowind);%受污染像素的个数

rowstart=rowind-20;rowend=rowind+20;%统计每个受污染像素修复模板的起止行

rowstart(rowstart<1)=1;rowend(rowend>m)=m;%起始行不能小于1,终止行不能大于m

columnstart=columnind-20;columnend=columnind+20;%统计模板的起,止列

columnstart(columnstart<1)=1;columnend(columnend>n)=n;%以基准点(受污染点)为中心41*41模板

for num=1:pointnum%对每个受污染的像素进行修复

x=rowind(num);

y=columnind(num);

basedepth=B(x,y);%深度图基准点灰度值

xstart=rowstart(num);xend=rowend(num);x1=x-xstart+1;%得到基点的相对坐标ystart=columnstart(num);yend=columnend(num);y1=y-ystart+1;%得到基点的相对坐标 %Td=7depthpos=A(xstart:xend,ystart:yend)>3&abs(B(xstart:xend,ystart:yend)-basedepth)<7;%参与加权的像素在深度图上与基准点相差小于6且不能是受污染点[locind1,locind2]=find(depthpos);W=(locind1-x1).*(locind1-x1)+(locind2-y1).*(locind2-y1);%权值为距离平方的倒数TT=1./W;T=sum(TT);Aloc=I(xstart:xend,ystart:yend,1);%对红色通道进行处理Aloc=double(Aloc(depthpos));R=Aloc.*TT;R=sum(R);I1(x,y,1)=R/T;

⛄三、运行结果

⛄四、matlab版本及参考文献

1 matlab版本

a

2 参考文献

[1]何埜,李光耀,肖莽,谢力,彭磊,唐可.基于深度信息的图像修复算法[J].计算机应用. ,35(10)

3 备注

简介此部分摘自互联网,仅供参考,若侵权,联系删除

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。