【图像修复】基于改进的Criminisi算法实现图像修复附matlab代码

简介: 【图像修复】基于改进的Criminisi算法实现图像修复附matlab代码

 1 内容介绍

针对Criminisi算法难以获得理想的修复效果,且存在修复时间过长等缺陷,提出一种改进Criminisi算法的图像修复算法。改进优先权计算方式找到最优待修复块,完善最优匹配块搜索策略,找到最优匹配块,采用新的置信值更新方式以获得更为理想修复效果,通过仿真实验测试算法性能,结果表明,相较于Criminisi算法,改进Criminisi算法不仅获得了较理想的图像修复效果,而且大幅度减少了修复时间,提高了图像修复的效果。

2 仿真代码

%全局搜索,寻找最佳匹配块

function Block=whole_match(zx,zy,img,Wpatch,sourceRegion)

%zx,zy为图像的大小

wpatch=rgb2gray(Wpatch);

aa=size(wpatch,1);

bb=size(wpatch,2);%得到的待修复块的实际大小

sx=zx-aa+1;

sy=zy-bb+1;%确定搜索范围的最大值

min=1.0000e+10;%赋初值

p=0;

%计算找到的匹配块与待修复块在已知像素点处的距离

for i=1:sx

   for j=1:sy

       mpatch=img(i:i+aa-1,j:j+bb-1,:);%得到图像中和待修复块同样大小的块

       for x=i:i+aa-1;

           for y=j:j+bb-1;

               if sourceRegion(i,j)==0

                   p=1;

               end

           end

       end

       if any(p(:))%说明有破损点,不作为待修复块的最佳匹配块

           continue;

       end

       E=0;

       r=mpatch(:,:,1);

       g=mpatch(:,:,2);

       b=mpatch(:,:,3);

       R=Wpatch(:,:,1);

       G=Wpatch(:,:,2);

       B=Wpatch(:,:,3);

       rc=r-R;gc=g-G;bc=b-B;

       E=rc.^2+gc.^2+bc.^2;

       if E<min

           min=E;%取使得误差最小的块,并记住它们在图像中的起始位置

           hk=i;

           lk=j;

       end

   end

end

rows=hk:hk+aa-1;

cols=lk:lk+bb-1;%误差最小的块就是最佳匹配块

Block=form_patch(rows,cols,zx);

3 运行结果

image.gif编辑

image.gif编辑

4 参考文献

[1]李爱菊, 钮文良. 基于改进Criminisi算法的图像修复[J]. 计算机工程与应用, 2014, 50(18):167-170.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

相关文章
|
4月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
316 0
|
4月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
169 0
|
4月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
239 8
|
4月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
256 8
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
466 0
|
4月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
316 2
|
5月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
297 3
|
5月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
214 6
|
4月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
280 8
|
4月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。

热门文章

最新文章