自适应TV去噪模型.m
上传用户:adtechcn
上传日期:2022-08-11
资源大小:1k
文件大小:1k
- Img=imread('lenna.bmp');%读取图片
- PSF=fspecial('motion',3);%创建PSF
- gb=imfilter(Img,PSF,'circular');%创建退化图像
- Img=imnoise(gb,'gaussian',0,0.01);%加噪声
- figure,imshow(Img)
- Img=double(Img);
- Img0=Img;
- [nrow,ncol]=size(Img); % 获取图像尺寸大小
- lamda=0.02;
- dt=0.28;% 0.25-0.35为最佳
- G=gauss(Img,7,3);
- Ix = 0.5*(G(:,[2:ncol,ncol])-G(:,[1,1:ncol-1]));% x方向梯度
- Iy = 0.5*(G([2:nrow,nrow],:)-G([1,1:nrow-1],:));% y方向梯度
- gradG = Ix.^2+Iy.^2;% 梯度大小
- P=1+1./(1+gradG); %自适应滤波器
- deltax=zeros(nrow,ncol); %产生与图像大小相同的矩阵
- deltay=zeros(nrow,ncol);
- for M=1:200 % 设置迭代次数
- for i=2:(nrow-1)
- for j=2:(ncol-1)
- deltax(i,j)=(Img(i+1,j)-Img(i,j))./(((Img(i+1,j)-Img(i,j)).^2+(Img(i,j+1)-Img(i,j-1)).^2/4+1).^(1-0.5.*P(i,j)))-(Img(i,j)-Img(i-1,j))./(((Img(i,j)-Img(i-1,j)).^2+(Img(i-1,j+1)-Img(i-1,j-1)).^2/4+1).^(1-0.5.*P(i-1,j)));
- deltay(i,j)=(Img(i,j+1)-Img(i,j))./(((Img(i+1,j)-Img(i-1,j)).^2/4+(Img(i,j+1)-Img(i,j)).^2+1).^(1-0.5.*P(i,j)))-(Img(i,j)-Img(i,j-1))./(((Img(i+1,j-1)-Img(i-1,j-1)).^2/4+(Img(i,j)-Img(i,j-1)).^2+1).^(1-0.5.*P(i,j-1)));
- end
- end
- div=deltax+deltay;
- Img=dt.*div-dt.*lamda.*(Img-Img0)+Img;
- end
- figure,imshow(mat2gray(Img))