clear all;
close all;
clc;
N=20000;
D=1000;
dt=0.4;
nn=2;
I=imread('lenna.bmp');
I=double(I);
%% 构建以 (y0,x0) 为左顶点,高为 height,长为 width 的 mask
y0=60;x0=100;
height=20;width=10;
y1=y0+height-1;x1=x0+width-1;
I([y0:y1],[x0:x1])=zeros(height,width);
figure(1);imshow(uint8(I));
%% 构建边缘,以 I0 作为修复区域的边界区域
k=3;
tmp=I([y0-k:y1+k],[x0-k:x1+k]);
I0=tmp;
[ny,nx]=size(I0);
%% 对 I0 进行曲率驱动扩散,并保持边界不动
for n=1:N
I0x=0.5*(I0(:,[2:nx,nx])-I0(:,[1,1:nx-1]));
I0y=0.5*(I0([2:ny,ny],:)-I0([1,1:ny-1],:));
gradient=sqrt(I0x.^2+I0y.^2+eps);
I0xx=(I0(:,[2:nx,nx])-I0)-(I0-I0(:,[1,1:nx-1]));
I0xy=0.25*((I0([2:ny,ny],[2:nx,nx])-I0([2:ny,ny],[1,1:nx-1]))-...
(I0([1,1:ny-1],[2:nx,nx])-I0([1,1:ny-1],[1,1:nx-1])));
I0yy=(I0([2:ny,ny],:)-I0)-(I0-I0([1,1:ny-1],:));
kappa=(I0y.^2.*I0xx-2*I0x.*I0y.*I0xy+I0x.^2.*I0yy)./(gradient.^3);
f=(abs(kappa)).^0.1;
Diffusion=(f+f(:,[2:nx,nx]))./(gradient+gradient(:,[2:nx,nx])).*(I0(:,[2:nx,nx])-I0)-...
(f+f(:,[1,1:nx-1]))./(gradient+gradient(:,[1,1:nx-1])).*(I0-I0(:,[1,1:nx-1]))+...
(f+f([2:ny,ny],:))./(gradient+gradient([2:ny,ny],:)).*(I0([2:ny,ny],:)-I0)-...
(f+f([1,1:ny-1],:))./(gradient+gradient([1,1:ny-1],:)).*(I0-I0([1,1:ny-1],:));
I0=I0+dt*Diffusion;
I0([1:k,height+k+1:height+2*k],[1:k,width+k+1:width+2*k])...
=tmp([1:k,height+k+1:height+2*k],[1:k,width+k+1:width+2*k]);
% 修复区域外面保持不动
%% 输出图像
if mod(n,D)==0
I([y0:y1],[x0:x1])=I0([1:height],[1:width]);
figure(nn);
imshow(uint8(I));
nn=nn+1;
end
n % 输出 n,而于 matlab 窗口看运行截止时间
end
刘良运
- 粉丝: 80
- 资源: 1万+
最新资源
- 【岗位说明】物业保安人员岗位职责.doc
- 【岗位说明】物业有限公司综合部厨工岗位职责.doc
- 【岗位说明】物业管理处环境部绿化工岗位职责.doc
- 龙门式6点伺服可调中频逆变电阻焊机sw19全套技术资料100%好用.zip
- 【岗位说明】陶瓷部门职能岗位职责.doc
- 【岗位说明】最新实用陶瓷企业生产规范岗位说明书.doc
- 【岗位说明】陶瓷部门职能岗位职责.docx
- 【岗位说明】电力公司岗位职责.docx
- 【岗位说明】电网公司岗位职责02.doc
- 【岗位说明】电力公司岗位职责.doc
- 【岗位说明】电力公司岗位职责说明02.doc
- 【岗位说明】电力施工项目经理岗位职责.doc
- 【岗位说明】供电公司部门职责.doc
- 【岗位说明】苏州电力公司人力资源部主任岗位职责描述.doc
- 【岗位说明】某电力公司客户经理岗位职责描述.doc
- 【岗位说明】石油开采岗位责任制.doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈