空域锐化滤波与高频增强滤波

任务

在空域进行系列实验后,形成一个灵活性较强的函数,能够传递3*3的卷积核进行卷积,若采用拉普拉斯算子,则为锐化滤波;同期进行频域增强的实验,比较二者的区别。

(另:想要实现对模糊图像的增强处理,目前没有方法)

空域锐化

代码

%% 空域锐化滤波-线性高通
% Function:将灰度图grayImg按照3*3模板(可传入)进行空域滤波
% convCore:卷积核,默认为拉普拉斯算子
% Date:2020/10/8
% Author:leezeeyee
function meanImg=spaceG3(grayImg,convCore)
%  输入容错
if nargin<2
% 默认卷积核
convCore=int16([-1,-1,-1;
                -1,8,-1;
                -1,-1,-1]);
end
% 边缘保留
meanImg=int16(grayImg);
[M,N]=size(grayImg);
meanImg(2:M-1,2:N-1)=0;
% 进行线性高通滤波
for row=2:M-1
    for col=2:N-1
        %  模板
        module=int16(grayImg(row-1:row+1,col-1:col+1));
        % 将模板与卷积核对应相乘
        replace=sum(module.*convCore,'all');
        % 遍历过程
        meanImg(row,col)=replace;
    end
end
end

效果展示

不同算子

高频增强

采取理想高通滤波器,且进行近似简化——把圆形转化为矩形域,方便矩阵操作。可以快速一窥效果如何

代码

%% 空域锐化滤波-高通
% Function:将傅里叶变换过的频谱图freqImg高通滤波
% D0:阈值
% Date:2020/10/8
% Author:leezeeyee
function result = highPass(freqImg,D0)
% freqImg=randi(10,3,3)
% D0=4;
% 左上角为0
% freqImg(freqImg<=D0)=0;
[M,N]=size(freqImg);
freqImg(1:D0,1:D0)=0;
freqImg(1:D0,N-D0:N)=0;
freqImg(M-D0:M,1:D0)=0;
freqImg(M-D0:M,M-D0:M)=0;
result=freqImg;
end

效果展示

显示的反变换图像为截去至原图大小后的结果(边缘被扩充),可以验证FFT算法的有效性。此外,可以看到,随着阈值的提高,图像的边缘处得到增强,大量细节丢失。直到最后损失所有信息。

参考文章

Leave a comment

Your email address will not be published. Required fields are marked *