1.function [L1,L2] = imagesharpening(I,lambda,lb,hb,alpha)%去除浓雾
2.if ~exist('I0','var') %工作区中是否存在变量I0 %第三个参数有无输入,代码为没有输入
3. L1_0 = I;% L1_0是论文里的J(1)
4.end
5.[N,M,D] = size(I);%I是图像的话,则m:图像的宽度 n:图像的高度 第三个参数为图像的颜色分量个数 彩色图像为3 黑白图像为1
6.f1 = [1, -1]; %一阶水平导数滤波器
7.f2 = [1; -1]; %一阶垂直导数滤波器
8.f3 = [0, -1, 0; -1, 4, -1; 0, -1, 0]; %二阶拉普拉斯滤波器
9.sizeI2D = [N,M];%图片变矩阵
10.otfFx = psf2otf(f1,sizeI2D);%psf2otf类似于fft2变换
11.otfFy = psf2otf(f2,sizeI2D);%OTF=psf2otf(PSF,OUTSIZE)将PSF数组转换为OTF数组,其中OUTSIZE指定OTF数组的大小
12.otfL = psf2otf(f3,sizeI2D);%注意,当操作涉及FFT时,该函数用于图像卷积/反卷积。
13.Normin1 = repmat(abs(otfL),[1,1,D]).^2.*fft2(I);%B = repmat(A,n) 返回一个数组,该数组在其行维度和列维度包含 A 的 n 个副本。A 为矩阵时,B 大小为 size(A)*n。
14.Denormin1 = abs(otfL).^2 ;
15.Denormin2 = abs(otfFx).^2 + abs(otfFy ).^2; %F-范数是矩阵的每个元素的平方和的开方,Denormin2表示otfFx和otfFy的模的平方和。矩阵绝对值的平方相加赋给Denormin2
16.if D>1
17. Denormin1 = repmat(Denormin1,[1,1,D]);
18. Denormin2 = repmat(Denormin2,[1,1,D]);%如果D>1,对该矩阵重新复制平铺成高维的矩阵
19.end
查相关论文