您的位置:首页 > 编程语言 > MATLAB

[数字图像处理]数字图像的整数倍缩小

2013-11-17 16:04 453 查看

1.理想的缩小法

           与数字图像的整数倍扩大法一样,先在理想的情况下,研究理想的缩小法。以此作为目标,对简单的缩小法的效果进行分析。所以,还是与扩大法一个思路,首先,做出两个信号。
       信号①:选择采样时间

,得到如下信号,左边为信号①在时间域的表现形式,右边为信号①的振幅谱。



        信号②:选择采样时间

,可得到如下信号,左边为信号②在时间域的表现形式,右边为信号②的振幅谱。



如上图所示,信号②发生了混淆现象。为了避免混淆现象,我们此时必须使用滤波器,将会发生混淆的部分完全削除,所得到的信号就不会混淆。此时,将不会发生混淆的缩小法,称为理想的缩小法。理想的缩小法如下所示。



       有一个地方需要注意的,在介绍数字图像的整数倍扩大法的时候,我们所使用的滤波器的振幅特性,根据扩大倍数的变化而变化。而缩小法的时候,所用的滤波器的振幅始终为1。其理由是,在降采样(Down-Sampling)的时候,已经进行了振幅调整,所以不需要在滤波处理阶段调整其振幅。
       与扩大法一致,理想的缩小法也需要理想的滤波器,因此无法实现。也就是混淆无法完全避免,只能减小混淆现象。

2.常用缩小法

        2.1直接降采样法

        使用滤波器,直接进行降采样处理的方法,称之为直接降采样法。由于直接降采样法相当于使用了全通滤波器,因此无法减小混淆现象,所以一般使用。其步骤如下所示,缩小D倍的时候,将原信号的每D个信号中,保留开始的一个,将剩余的D-1个信号直接删除即可。



        2.2平均操作法

        首先,使用平均滤波器,然后在进行降采样的方法,称之为平均操作法。此方法可以减小混淆现象,比直接降采样法要好。其步骤如下所示,缩小D倍的时候,首先先使用平均滤波器,然后将原信号的每D个信号中,保留开始的一个,将剩余的D-1个信号删除。



        2.3上述两种方法的分析

        下图为,缩小4倍的时候,以上两种方法与理想的缩小法所使用的滤波器的振幅特性。



由上图可知,平均操作法更接近理想的滤波器的振幅特性。因此,平均操作法是可以在一定程度上减小混淆现象的。

3.简单的缩小法的实现(Matlab)和性能分析

       本次所使用的图片如下所示,以下图片均是用Matlab制作的,共3枚。







        使用上述两种方法,进行4倍缩小,可以得到以下结果。左边为直接降采样法的结果,右边为平均操作法的结果。



从直接使用降采样法的结果看来,我们已经看到了明显的混淆。而使用平均操作法缩小的图像,混淆现象已经得到了改善。

close all;
clear all;
clc;

f = imread('./cheer/maru_360(cheer).tif');
f = mat2gray(f,[0 255]);

D = 4;  %縮小率

[M,N] = size(f);
g_down = zeros(ceil(M/D),ceil(N/D));
[P,Q] = size(g_down);

for x = 0:1:(P-1)
for y = 0:1:(Q-1)
g_down(x+1,y+1) = f((x*D)+1,(y*D)+1);
end
end

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(g_down,[0 1]);
xlabel('b).Ruselt of downsampled');
f = imread('./cheer/maru_360(cheer).tif');
f = mat2gray(f,[0 255]);

D = 4;  %縮小率

[M,N] = size(f);
g_aver = zeros(ceil(M/D),ceil(N/D));
[P,Q] = size(g_aver);

H_aver = ones(D)/(D*D);  %%%%%
f_aver = imfilter(f,H_aver,'conv','symmetric','same');

for x = 0:1:(P-1)
for y = 0:1:(Q-1)
g_aver(x+1,y+1) = f_aver((x*D)+1,(y*D)+1);
end
end

figure();
subplot(1,2,1);
imshow(f,[0 1]);
xlabel('a).Original Image');

subplot(1,2,2);
imshow(g_aver,[0 1]);
xlabel('a).Ruselt of average filter + downsampled');


参考文献
貴家 仁志,“ディジタル画像の解像度変換 — 任意サイズへの画像の変換,” インターフェース,CQ出版,1998年6月

貴家 仁志,“ディジタル画像の解像度変換 — 画像の拡大,” インターフェース,CQ出版,1998年4月

貴家 仁志,“ディジタル画像の表現と階調変換,色間引きの原理,” インターフェース,CQ出版,1998年2月

《Digital Image Processing》 Rafael C. Gonzalez / Richard E. Woods

原文发于博客:http://blog.csdn.net/thnh169/ 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息