python VTK(十六) ----图像频域处理

本文介绍了Python使用VTK库进行图像频域处理,包括快速傅里叶变换,并详细讲解了不同类型的滤波器,如理想低通滤波、巴斯沃特低通滤波、理想高通滤波和巴特沃斯高通滤波在图像处理中的应用。
摘要由CSDN通过智能技术生成

快速傅里叶变换

import vtk
reader = vtk.vtkJPEGReader()   # 读入灰度图
reader.SetFileName(r'E:\lena-gray.jpg')
reader.Update()
# 1 频域处理
# 1.1快速傅里叶变换
fftFilter = vtk.vtkImageFFT()   # 进行二维快速傅里叶变换
fftFilter.SetInputConnection(reader.GetOutputPort())
fftFilter.SetDimensionality(2)
fftFilter.Update()

fftExtractReal = vtk.vtkImageExtractComponents()  # 需要显示频域图像,提取某一个组分图像再进行显示
fftExtractReal.SetInputConnection(fftFilter.GetOutputPort())
fftExtractReal.SetComponents(0)

range = fftExtractReal.GetOutput().GetScalarRange()
ShiftScale = vtk.vtkImageShiftScale()
ShiftScale.SetOutputScalarTypeToUnsignedChar()  # 转类型
ShiftScale.SetScale(255.0 / (range[1] - range[0]))
ShiftScale.SetShift(-range[0])
ShiftScale.SetInputConnection(fftExtractReal.GetOutputPort())
ShiftScale.Update()

rfftFilter = vtk.vtkImageRFFT()  # 快速傅里叶逆变换
rfftFilter.SetInputConnection(fftFilter.GetOutputPort())
rfftFilter.SetDimensionality(2)
rfftFilter.Update()

ifftExtractReal = vtk.vtkImageExtractComponents()
ifftExtractReal.SetInputConnection(rfftFilter.GetOutputPort())
ifftExtractReal.SetComponents(0)

rfftCastFilter = vtk.vtkImageCast()
rfftCastFilter.SetInputConnection(ifftExtractReal.GetOutputPort())
rfftCastFilter.SetOutputScalarTypeToUnsignedChar()
rfftCastFilter.Update()

'''
ImageData --> vtkImageFFT--> Filter --> vtkImageRFFT --> vtkImageExtractComponents
'''

originalActor = vtk.vtkImageActor()
originalActor.SetInputData(reader.GetOutput())
fftActor = vtk.vtkImageActor()
fftActor.SetInputData(ShiftScale.GetOutput())
rfftActor = vtk.vtkImageActor()
rfftActor.SetInputData(rfftCastFilter.GetOutput())

originalViewport = [0.0, 0.0, 0.33, 1.0]
fftViewport = [0.33, 0.0, 0.66, 1.0]
rfftViewport = [0.66, 0.0, 1.0, 1.0]

originalRenderer = vtk.vtkRenderer()
originalRenderer.SetViewport(originalViewport)
originalRenderer.AddActor(originalActor)
originalRenderer.ResetCamera()
originalRenderer.SetBackground(1.0, 1.0, 1.0)

fftRenderer = vtk.vtkRenderer()
fftRenderer.SetViewport(fftViewport)
fftRenderer.AddActor(fftActor)
fftRenderer.ResetCamera()
fftRenderer.SetBackground(1.0, 1.0, 1.0)

rfftRenderer = vtk.vtkRenderer(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值