使用高斯模糊和下采样缩小图像

信息处理 图像处理 matlab 过滤 下采样 模糊
2022-01-27 04:19:45

我正在尝试使用两个步骤实现一个简单的缩小算法:

  1. 正如我们在课堂上看到的那样,的高斯卷积对图像进行了模糊处理。0.8zoomfactor21
  2. 然后使用 zoom_factor 步骤的简单下采样对图像进行下采样以下代码应该可以解决问题。

在课堂上,我们看到仅使用下采样进行缩小的结果比结合高斯模糊的缩小结果更差。然而,就我而言,情况恰恰相反,这真的很奇怪。

 close all;
 clear all;
 I = double(imread('put an image path here'))/255;


 zoom_factor=2;
 %I=rgb2gray(I);
 sigma=0.8*sqrt(zoom_factor*zoom_factor-1);
 [M,N,s]=size(I);
 f1=-fix(M/2):ceil(M/2)-1;
 f2=-fix(N/2):ceil(N/2)-1;

 [f2,f1]=meshgrid(f2,f1);
 Y=exp(-2*pi*pi*sigma*sigma*((f1/M).^2+(f2/N).^2));
 If=fft2(I);
 If=fftshift(If);
 for i=1:3
   If(:,:,i)=If(:,:,i).*Y;
 end
 newI=ifftshift(If);
 newI=ifft2(newI);

 newI=newI(1:zoom_factor:end,1:zoom_factor:end,:)

 imshow(newI)
1个回答

我从您的帖子中了解到的是,您不喜欢下采样图像上发生的过度模糊。

信号处理理论指出,当您将数字信号下采样倍时,如果信号未将带宽限制为,则可能会发生混叠。 ;M|w|<π/M

下采样的频谱效应使得原始信号频谱的非零部分高于可以重叠范围内的假频率位置,以便它们会创建不属于原始信号的视觉伪影。|w|>π/Mπ<w<π

为了避免这种重叠(以避免混叠),正式的方法是应用一个截止频率为且通带增益为 1的低通滤波器。wc=π/M

该过滤器的效果是将图像模糊到在下采样时不会与图像的高频部分有任何显着重叠的程度。另一方面,这最终是一个模糊操作,它会丢弃信号内容(图像的细节)。因此,您的下采样图像会损失质量(就高频细节而言)。

但是,由于将高斯滤波器半径设置为不合适的值,您的代码中的问题是模糊过多。理论上,您需要的是一个在截止频率处具有急剧过渡的理想滤波器,但您的代码中设计的滤波器不仅会产生温和的过渡区域,而且会产生比必要的更低的截止频率。wc=π/M

因此,您可以修改低通滤波器半径,直到获得可接受的下采样图像。

下面是显示高斯滤波器频谱的修改代码,您可以使用它来推断滤波器截止是否太多。

close all; clear all; clc;
I = double(imread('Cameraman.tif'))/255; % Black and Whit eimage in [0-255] range 
figure,imshow(I);title('Original Image');

zoom_factor=2;

sigma=0.8*sqrt(zoom_factor-1);   % I modified the radius here ???
[M,N,s]=size(I);
f1=-fix(M/2):ceil(M/2)-1;
f2=-fix(N/2):ceil(N/2)-1;
[f2,f1]=meshgrid(f2,f1);
Y=exp(-2*pi*pi*sigma*sigma*((f1/M).^2+(f2/N).^2));  % The BLUR filter
figure,imshow(abs(Y));title('Spectrum of the filter')


If=fft2(I);
If=fftshift(If);
for i=1:1
  If(:,:,i)=If(:,:,i).*Y;
end
newI=ifftshift(If);
newI=real(ifft2(newI));
figure,imshow(newI);title('Gaussian Filtered Image')

newI=newI(1:zoom_factor:end,1:zoom_factor:end,:);
figure,imshow(newI);title('filtered and downsampled')

figure, imshow(newI);title('filtered and downsampled image')

figure, imshow(I(1:zoom_factor:end,1:zoom_factor:end));
title('downsampled without filtering')

另一种解决方案是在下采样操作之后使用高通滤波器,通过稍微强调高频细节来改善图像。