#问题分析

#问题描述

该实验的目标是编写一个图像过滤功能的代码,并使用它来创建混合图像。混合图像是静态图像,其视觉效果随观察距离的变化而变化。基本思想是人的感知对于高频率更加敏感,但是在远处只能看到信号的低频(平滑)部分。通过将一个图像的高频部分与另一个图像的低频部分混合,可以获得混合图像,从而在不同距离处产生不同的视觉效果。实验数据集在proj1.rar中。

#数据集分析

实验数据集如下所示,由十张不同的bmp图像构成。

1
2
3
4
5
6
7
8
9
10
11
data
├── bicycle.bmp
├── bird.bmp
├── cat.bmp
├── dog.bmp
├── einstein.bmp
├── fish.bmp
├── marilyn.bmp
├── motorcycle.bmp
├── plane.bmp
└── submarine.bmp

#实验方法

#实验流程

本实验的流程如图1所示。

图 1 实验流程图

#滤波器[1]

高通滤波器可以通过低通滤波器取反得到,故不再区分高/低通滤波器。
下面对比结果的输入图像如图2所示。

滤波器输入图像
图 2 输入图像

#理想的低通滤波器

$$
H(u,v)=
\begin{cases}
1,&{D(u,v) \leq D_0} \
0,&{D(u,v) > D_0}
\end{cases}
\tag{1}
$$

其中,$D_0$表示通带的半径。$D(u,v)$的计算方式也就是两点间的距离,计算公式如公式2.2所示。

$$
D(u,v)=\sqrt{\left( u-\frac{P}{2} \right)^{2} + \left( v-\frac{Q}{2} \right)^{2}}
\tag{2}
$$

低通滤波器所得到的结果如下所示。低通滤波器滤除了高频成分,所以使得图像模糊。由于理想低通滤波器的过度特性过于急峻,所以会产生了振铃现象。

理想的低通滤波器
理想的低通滤波器
图 3 理想的低通滤波器

#巴特沃斯低通滤波器

$$
H(u,v)=\frac{1}{1+\left(D(u,v) / {D_0} \right)^{2n}}
\tag{3}
$$

$D_0$表示通带的半径,$n$表示的是巴特沃斯滤波器的次数。随着次数的增加,振铃现象会越来越明显。

理想的低通滤波器
理想的低通滤波器
图 4 巴特沃斯低通滤波器

#高斯低通滤波器

$$
H(u,v)=e^
{\frac{-D^2(u,v)}
{2{D_0}^2}}
\tag{4}
$$

$D_0$表示通带的半径,高斯滤波器的过度特性非常平坦,不会产生振铃现象的。

理想的低通滤波器
理想的低通滤波器
图 5 高斯低通滤波器

#结论

综合以上分析, 我们最终选择了高斯低通滤波器.

#实验过程

#编程语言介绍

本实验所选择的编程语言为Matlab, 编程软件为Matlab 2018b.

#图像预处理

10张bmp 图像可以分成5对图像进行实验,如图6所示,大小都是225*265,故不需要进行缩放。若选取的图像大小不一,需要先对图像进行大小调整,用Matlabimresize函数。

原图以及HOG特征图原图以及HOG特征图
图 6 样例图像

#程序编写

#空域图像滤波

将模板在图像中逐像素移动,将卷积核的每个元素分别和图像矩阵对应位置元素相乘并将结果累加,累加和作为模板中心对应像素点的卷积结果。通俗的讲,卷积就是对整幅图像进行加权平均的过程,每一个像素点的值,都由其本身和邻域内的其他像素值经过加权平均后得到。在像素的处理上,是先将结果暂存在于一个副本,最后统一拷贝,故不会出现处理顺序不同而结果不同的情况。[2]

滤波结果如图7所示。

高通滤波结果图低通滤波结果图
图 7 空域图像滤波结果图

#频域图像滤波

先对图像进行傅里叶变换,转换至频率域,在频域使用滤波函数进行滤波,最后将结果反变换至空间域。

滤波结果如图8所示。

高通滤波结果图低通滤波结果图
图 8 频域图像滤波结果图

#图像融合

在 Matlab 中将两个滤波后的图像相加即可得到融合图像。

结果如图9所示。

空域图像滤波融合图频域图像滤波融合图
图 9 图像融合结果图

#实验结果

程序可视化界面图
图 10 程序可视化界面图

#实验结果分析

给定频率域滤波器,可对其进行傅里叶逆变换得到对应的空域滤波器;滤波在频域更为直观,但空域适合使用更小的滤波模板以提高滤波速度。因为相同尺寸下,频域滤波器效率高于空域滤波器,故空域滤波需要一个更小尺寸的模板近似得到需要的滤波结果。


  1. 基础与低通滤波器 ↩︎

  2. 空域高斯滤波与频域高斯滤波 ↩︎