资源简介

TV模型图像修复 ;matlab语言;去除人脸上的杂字;运算不断迭代就可以了,迭代次数可自定义,或是不断迭代直到某条件成立都是可以的。

资源截图

代码片段和文件信息

clc;clear;close all;

img=double(imread(‘lena.jpg‘));
mask=rgb2gray(imread(‘ma.jpg‘))>160;
[m n]=size(img);
for i=1:m
    for j=1:n
        if mask(ij)==0
           img(ij)=0; 
        end
    end
end
imshow(img[]);     %合成的需要修复的图像

lambda=0.2;
a=0.5;
imgn=img;
for l=1:300         %迭代次数
    for i=2:m-1
        for j=2:n-1
            if mask(ij)==0     %如果当前像素是被污染的像素,则进行处理
                                            
                Un=sqrt((img(ij)-img(i-1j))^2+((img(i-1j-1)-img(i-1j+1))/2)^2);
                Ue=sqrt((img(ij)-img(ij+1))^2+((img(i-1j+1)-img(i+1j+1))/2)^2);
                Uw=sqrt((img(ij)-img(ij-1))^2+((img(i-1j-1)-img(i+1j-1))/2)^2);
                Us=sqrt((img(ij)-img(i+1j))^2+((img(i+1j-1)-img(i+1j+1))/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);

                imgn(ij)=Hon*img(i-1j)+Hoe*img(ij+1)+How*img(ij-1)+Hos*img(i+1j)+Hoo*img(ij);
            
            end
        end
    end
    img=imgn;
    
end

figure;
imshow(img[])

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        1430  2018-10-21 09:21  tuxiangxiufu1\Untitled20181021.m
     文件       10555  2018-10-21 09:23  tuxiangxiufu1\lena.jpg
     文件       38118  2018-10-21 09:27  tuxiangxiufu1\ma.jpg
     目录           0  2018-10-21 09:27  tuxiangxiufu1\

评论

共有 条评论