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

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=7
depthpos=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版本
2014a

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

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

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

  1. 【Matlab图像融合】小波变换遥感图像融合【含GUI源码 744期】

    一.代码运行视频(哔哩哔哩) [Matlab图像融合]小波变换遥感图像融合[含GUI源码 744期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 包子阳,余 ...

  2. 【Matlab图像加密】正交拉丁方置乱算法图像加解密【含GUI源码 182期】

    一.代码运行视频(哔哩哔哩) [Matlab图像加密]正交拉丁方置乱算法图像加解密[含GUI源码 182期] 二.matlab版本及参考文献 一.代码运行视频(哔哩哔哩) [Matlab图像处理]自动 ...

  3. java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码、数据库)

    java计算机毕业设计ssm基于SSM学生信息管理系统37myx(附源码.数据库) 项目运行 环境配置: Jdk1.8 + Tomcat8.5 + Mysql + HBuilderX(Webstorm ...

  4. 基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java二次元信息分享平台计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 项目架构:B ...

  5. 【Matlab语音加密】语音信号加密解密(带面板)【含GUI源码 181期】

    一.代码运行视频(哔哩哔哩) [Matlab语音加密]语音信号加密解密(带面板)[含GUI源码 181期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆 ...

  6. 【Matlab车牌识别】停车计费系统【含GUI源码 735期】

    一.代码运行视频(哔哩哔哩) [Matlab车牌识别]停车计费系统[含GUI源码 735期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] 蔡利梅.MATLA ...

  7. 【Matlab语音分析】语音信号分析【含GUI源码 1718期】

    一.代码运行视频(哔哩哔哩) [Matlab语音分析]语音信号分析[含GUI源码 1718期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]韩纪庆,张磊,郑铁 ...

  8. 【Matlab人脸识别】BP神经网络人脸识别(含识别率)【含GUI源码 891期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]BP神经网络人脸识别(含识别率)[含GUI源码 891期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1] ...

  9. 【Matlab人脸识别】形态学教室人数统计(带面板)【含GUI源码 1703期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]形态学教室人数统计(带面板)[含GUI源码 1703期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟 ...

  10. 【Matlab人脸识别】人脸实时检测与跟踪【含GUI源码 673期】

    一.代码运行视频(哔哩哔哩) [Matlab人脸识别]人脸实时检测与跟踪[含GUI源码 673期] 二.matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]孟逸凡,柳益君 ...

最新文章

  1. IT人的眼睛就是一把尺!
  2. 破解win2003“终端服务器授权”激活许可证!
  3. Information Theory, Inference, and Learning Algorithms
  4. boost::hana::fold_left用法的测试程序
  5. Direct2D (3) : 使用浮点参数绘制基本图形
  6. Linux下安装zookeeper集群(奇数个)
  7. Android之elevation实现阴影效果
  8. Linux 编译 没有path,编译linux-2.6.21的问题-‘PATH_MAX’ undeclared
  9. 得到css style
  10. STM32开发工具-keil5安装
  11. VMware ESXI7.0的安装与配置(全过程超详细含中英文对照,附应知必会的理论基础和常见故障解决方案)
  12. 实战SATA硬盘安装64位XP(转)
  13. 微信群控云控客服开发SDK
  14. sort(()=>{return Math.random()-0.5)}乱序数组不准确
  15. c语言中 静态变量的默认值为,C中静态变量的默认值
  16. 数据分析(学习笔记)
  17. k Nearest Neighbor Algorithm
  18. VSCode 如何设置启动时打开上次关闭时在编辑的文件
  19. 中科院一博士论文致谢走红,同年的我也有一封未发表的致谢......
  20. 小米平板2win下屏蔽按键

热门文章

  1. 地址null发布新的JS游戏《吞食蛇永恒激情版》
  2. 内存管理(二)-- linux 预留内存几种方法
  3. 大话理解TCP/IP
  4. 程序员:我真不是修电脑的啊!!!
  5. android热启动和冷启动
  6. 小程序UI设计(9)-文字排版
  7. 清华向勇《操作系统 》学习笔记2
  8. 清华向勇《操作系统》学习笔记11:死锁和进程通信
  9. android 可拖拽对话框,可拖动的悬浮窗+对话框悬浮窗
  10. 【Java闭关修炼】SpringBoot项目-贪吃蛇对战小游戏-配置Mysql与注册登录模块2