05-VTK在图像处理中的应用(9)

本文介绍了VTK库在图像频域处理中的应用,包括快速傅里叶变换(FFT)、低通滤波和高通滤波。通过VTK的vtkImageFFT和vtkImageRFFT类进行图像的FFT和IFFT变换,使用理想滤波器和巴特沃斯滤波器进行低通和高通滤波,以实现图像平滑、去噪和边缘增强等效果。
摘要由CSDN通过智能技术生成

5.14 图像频域处理

在图像处理和分析中,经常会将图像从图像空间转换到其他空间中,并利用这些空间的特点进行对转换后图像进行分析处理,然后再将处理后的图像转换到图像空间中,这称之为图像变换。在一些图像处理和分析中通过空间变换往往会取得更有效的结果。图像频域处理是指将图像从图像空间转换到频域空间进行处理的过程。最常用的频域转换是傅里叶变换。对于傅里叶变换的理论内容不是这里讨论的重点,读者可以从网上找到大量的资料。傅里叶变换的计算量较大,人们为了提高速度,提出了快速傅里叶变换,并得到了广泛的应用。下面我们首先来学习一下VTK中的快速傅里叶变换。

5.14.1 快速傅里叶变换

快速傅里叶变换(Fast Fourier Transform),简称做FFT。它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。傅里叶变换是可逆的,其逆变换为RFFT。FFT在数字图像处理中有着广泛的应用,例如数字图像频域滤波,去噪,增强等等。 目前VTK中两变换都已经实现,对应的类分别为vtkImageFFT和vtkImageRFFT。下面代码演示了怎样对图像进行傅里叶变换,以及将傅里叶变换结果进行逆变换。

vtkImageFFT和vtkImageRFFT的输入为实数或者复数数据,输出都为复数数据。因此,vtkImageFFT与vtkImageRFFT的输出结果不能直接显示,因为VTK会将其当做彩色图像显示,需要通过vtkImageExtractComponents提取某一组分图像显示。

VTK频率域的图像处理步骤如下:

 

图5.35VTK频率域的图像处理步骤

下面代码说明了怎样对一副图像进行快速傅里叶变换和逆变换。

 

1:      vtkSmartPointer<vtkJPEGReader>reader =

   2:         vtkSmartPointer<vtkJPEGReader>::New();

   3:     reader->SetFileName ( " lena2.jpg" );

   4:     reader->Update();

   5:  

   6:     vtkSmartPointer<vtkImageFFT> fftFilter =

   7:         vtkSmartPointer<vtkImageFFT>::New();

   8:     fftFilter->SetInputConnection(reader->GetOutputPort());

   9:     fftFilter->Update();

  10:  

  11:     vtkSmartPointer<vtkImageExtractComponents> fftExtractReal =

  12:         vtkSmartPointer<vtkImageExtractComponents>::New();

  13:     fftExtractReal->SetInputConnection(fftFilter->GetOutputPort());

  14:     fftExtractReal->SetComponents(0);

  15:  

  16:     vtkSmartPointer<vtkImageCast> fftCastFilter =

  17:         vtkSmartPointer<vtkImageCast>::New();

  18:     fftCastFilter->SetInputConnection(fftExtractReal->GetOutputPort());

  19:     fftCastFilter->SetOutputScalarTypeToUnsignedChar();

  20:     fftCastFilter->Update();

  21:  

  22:     vtkSmartPointer<vtkImageRFFT> rfftFilter =

  23:         vtkSmartPointer<vtkImageRFFT>::New();

  24:     rfftFilter->SetInputConnection(fftFilter->GetOutputPort());

  25:     rfftFilter->Update();

  26:  

  27:     vtkSmartPointer<vtkImageExtractComponents> ifftExtractReal =

  28:         vtkSmartPointer<vtkImageExtractComponents>::New();

  29:     ifftExtract

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值