该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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,[]);