cdd matlab 算法,求翻译 CDD修复算法

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

CDD图像修复算法,运行时有些问题还望给以解答

ImgOriginal=imread('C:\Users\dell\Desktop\B1-4,3.jpg');

figure(1);imshow(ImgOriginal);

[width,height] = size(ImgOriginal);

Img = double(ImgOriginal);

U = Img;

V = Img;

n = 1;

a=0.0001;

IterTimes=150;

MASK=~(Img>=251); %人为选择阈值

figure(2);imshow(MASK);

while n <= IterTimes

%更新修复区域内每点值

for i = 2:width-1

for j = 2:height-1

%              if (MASK(i,j+1) == 255)|(MASK(i,j-1) == 255)|(MASK(i+1,j) == 255)|(MASK(i-1,j) == 255)

if MASK(i,j) == 0

if MASK(i,j) == 0

%计算w1,w2,w3,w4

gridw2 = (V(i,j)-V(i-1,j))^2+((V(i-1,j-1)-V(i-1,j+1))/2)^2;

gride2 = (V(i,j)-V(i+1,j))^2+((V(i+1,j-1)-V(i+1,j+1))/2)^2;

grids2 = (V(i,j)-V(i,j-1))^2+((V(i-1,j-1)-V(i+1,j-1))/2)^2;

gridn2 = (V(i,j)-V(i,j+1))^2+((V(i-1,j+1)-V(i+1,j+1))/2)^2;

a1 = 1/sqrt(gridw2+a);

a2 = 1/sqrt(gride2+a);

a3 = 1/sqrt(grids2+a);

a4 = 1/sqrt(gridn2+a);

k =(a1*V(i-1,j)+a2*V(i+1,j)+a3*V(i,j+1)+a4*V(i,j-1))/(a1+a2+a3+a4);

end

%计算w1,w2,w3,w4

gridUw2 = (V(i,j)-V(i-1,j))^2+((V(i-1,j-1)-V(i-1,j+1))/2)^2;

gridUe2 = (V(i,j)-V(i+1,j))^2+((V(i+1,j-1)-V(i+1,j+1))/2)^2;

gridUs2 = (V(i,j)-V(i,j-1))^2+((V(i-1,j-1)-V(i+1,j-1))/2)^2;

gridUn2 = (V(i,j)-V(i,j+1))^2+((V(i-1,j+1)-V(i+1,j+1))/2)^2;

w1 = k/sqrt(gridUw2+a);

w2 = k/sqrt(gridUe2+a);

w3 = k/sqrt(gridUs2+a);

w4 = k/sqrt(gridUn2+a);

U(i,j) =(w1*V(i-1,j)+w2*V(i+1,j)+w3*V(i,j+1)+w4*V(i,j-1))/(w1+w2+w3+w4);

end

end

end

n = n+1;

V = U;

end

D = floor(V);

figure(3);imshow(D,[]);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值