多媒体技术与应用之图像修复Tv算法

图像修复Tv算法:

I = (imread('color.bmp'));% 读原始修复图
grey = rgb2gray(I);
[row,col,k] = size(I);% 得到图像长度与宽度
subplot(121);imshow('color.bmp');title('原图');
flag=10000;%迭代次数
lambda=0.2;
a=0.2;
I1=I;


for l=1:flag
    I1 = tvdeal(I1,row,col,grey);
end



subplot(122);imshow(I1,[]);title('TV算法修复');

函数
tvdeal

function [ I1 ] = tvdeal( I1,row,col,grey_I )
lambda=0.2;
a=0.5;
for k=1:3
    for i=2:row-1
        for j=2:col-1
            if grey_I(i,j)<4      %如果当前像素是被污染的像素,则进行处理

                Un=sqrt(double(((I1(i,j,k)-I1(i-1,j,k))^2+((I1(i-1,j-1,k)-I1(i-1,j+1,k))/2)^2)));
                Ue=sqrt(double(((I1(i,j,k)-I1(i,j+1,k))^2+((I1(i-1,j+1,k)-I1(i+1,j+1,k))/2)^2)));
                Uw=sqrt(double(((I1(i,j,k)-I1(i,j-1,k))^2+((I1(i-1,j-1,k)-I1(i+1,j-1,k))/2)^2)));
                Us=sqrt(double(((I1(i,j,k)-I1(i+1,j,k))^2+((I1(i+1,j-1,k)-I1(i+1,j+1,k))/2)^2)));

                Wn=1/sqrt(Un^2+a^2);
                We=1/sqrt(Ue^2+a^2);
                Ww=1/sqrt(Uw^2+a^2);
                Ws=1/sqrt(Us^2+a^2);

                Hon=Wn/((Wn+We+Ww+Ws)+lambda);
                Hoe=We/((Wn+We+Ww+Ws)+lambda);
                How=Ww/((Wn+We+Ww+Ws)+lambda);
                Hos=Ws/((Wn+We+Ww+Ws)+lambda);

                Hoo=lambda/((Wn+We+Ww+Ws)+lambda);

                I1(i,j,k)=Hon*I1(i-1,j,k)+Hoe*I1(i,j+1,k)+How*I1(i,j-1,k)+Hos*I1(i+1,j,k)+Hoo*I1(i,j,k);
            end
        end
    end
end

end



所需要的时间和循环次数成正比,修复效果也和循环次数成正比

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值