tvinpaint.m

来自「tv inpainting」· M 代码 · 共 54 行

M
54
字号
function g=TVInpaint(f,mask,liter_num,a)%TVINPAINT inpainting a image using The TV model%reference from the <Modles for Local Non-texture Inpaintings> by Chan and%Shen%date: 2007\11\13%clear all%f1=imread('3ch_original.png');%imshow(f1);%f=im2double(f1);fr=f(:,:,1);fg=f(:,:,2);fb=f(:,:,3);[p,q]=size(fr);f=im2double(f);%g1=imread('3ch_mask.png');%g=mat2gray(im2double(g1));if ~islogical(mask)    mask=im2bw(mask);end[r,s]=find(mask);m=sum(sum(mask));%a is a lifting parameter%a=0.01;%A=['e','s','w','n'];%for n=1:liter_num        for i=1:m                 x=r(i);         y=s(i);         if x==1  x=2;         elseif x==p   x=p-1;         end         if y==1  y=2;         elseif y==q y=q-1;         end         We=1/sqrt((f(x,y+1)-f(x,y))^2+((f(x-1,y)+f(x-1,y+1)-f(x+1,y)-f(x+1,y+1))/4)^2+a^2);         Ws=1/sqrt((f(x+1,y)-f(x,y))^2+((f(x,y+1)+f(x+1,y+1)-f(x,y-1)-f(x+1,y-1))/4)^2+a^2);         Ww=1/sqrt((f(x,y-1)-f(x,y))^2+((f(x-1,y-1)+f(x-1,y)-f(x+1,y-1)-f(x+1,y))/4)^2+a^2);         Wn=1/sqrt((f(x-1,y)-f(x,y))^2+((f(x-1,y+1)+f(x,y+1)-f(x-1,y-1)-f(x,y-1))/4)^2+a^2);         Hop=sum([We,Ws,Ww,Wn]);         Hp=sum([We*f(x,y+1),Ws*f(x+1,y),Ww*f(x,y-1),Wn*f(x-1,y)]);         f(r(i),s(i))=Hp/Hop;                 endend      g=f;     %g=mat2gray(f);     %imwrite(h,'result1.tif');     figure,imshow(g);                                    

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?