5.6.3 高通滤波
1.理想高通滤波器
高通滤波与低通滤波正好相反,是让频域图像的高频部分通过而抑制低频部分。图像的边缘对应高频分量,因此高通滤波的效果是图像锐化。同样,最简单的高通滤波器是理想高通滤波器。其基本思想是通过设置一个频率阈值,让高于该阈值的频率部分通过,而低于阈值的低频部分设置为0。下述代码演示了VTK 中理想高通滤波vtkImageIdealHighPass 的应用:
- vtkSmartPointer<vtkImageIdealHighPass> highPassFilter =
- vtkSmartPointer<vtkImageIdealHighPass>::New();
- highPassFilter->SetInputConnection(fftFilter->GetOutputPort());
- highPassFilter->SetXCutOff(0.1);
- highPassFilter->SetYCutOff(0.1);
- highPassFilter->Update();
同低通滤波一样,通过SetXCutOff()和SetYCutOff()设置X 和Y 方向的截止频率。图 5-42 是理想高通滤波的运行结果。从结果可以看出,理想高通滤波后图像得到锐化处理,图像仅剩下边缘。
2.巴特沃斯高通滤波器
理想高通滤波器不能通过电子元器件来实现,而且存在振铃现象。在实际应用中,最常使用的高通滤波器是巴特沃斯高通滤波器。该滤波器的转移函数为
D(u,v)表示频域中点到频域平面的距离,D0 是截止频率。当D(u,v)大于D0 时,对应的H(u,v)逐渐接近1,从而使得高频部分得以通过;而当D(u,v)小于D0 时,H(u,v)逐渐接近0,实现低频部分过滤。巴特沃斯高通滤波器在VTK 中对应的类是vtkImageButterworthHighPass类,代码如下:
- vtkSmartPointer<vtkImageButterworthLowPass> lowPassFilter =
- vtkSmartPointer<vtkImageButterworthLowPass>::New();
- lowPassFilter->SetInputConnection(fftFilter->GetOutputPort());
- lowPassFilter->SetXCutOff(0.05);
- lowPassFilter->SetYCutOff(0.05);
- lowPassFilter->Update();
vtkImageButterworthHighPass 的使用方法与理想高通滤波一致。这里也需要设置X 和Y轴的截止频率,为了便于比较,其截止频域与理想高通滤波设置一致。图5-43 为其运行结果。