news 2026/4/23 12:26:29

IdealHighPass 傅里叶变换在频率域的图像处理效果

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
IdealHighPass 傅里叶变换在频率域的图像处理效果

一:主要的知识点

1、说明

本文只是教程内容的一小段,因博客字数限制,故进行拆分。主教程链接:vtk教程——逐行解析官网所有Python示例-CSDN博客

2、知识点纪要

本段代码主要涉及的有①图像从空间域到时间域的转换,②图像通道的提取


二:代码及注释

from vtkmodules.vtkCommonColor import vtkNamedColors from vtkmodules.vtkIOImage import vtkImageReader2Factory from vtkmodules.vtkImagingCore import vtkImageExtractComponents from vtkmodules.vtkImagingFourier import ( vtkImageButterworthHighPass, vtkImageFFT, vtkImageIdealHighPass, vtkImageRFFT ) from vtkmodules.vtkImagingColor import vtkImageMapToWindowLevelColors from vtkmodules.vtkInteractionStyle import vtkInteractorStyleImage from vtkmodules.vtkRenderingCore import ( vtkImageActor, vtkRenderWindow, vtkRenderWindowInteractor, vtkRenderer ) def main(): colors = vtkNamedColors() fileName = "Data/fullhead15.png" readerFactory = vtkImageReader2Factory() reader = readerFactory.CreateImageReader2(fileName) reader.SetFileName(fileName) reader.Update() """ vtkImageFFT 将图像从 空间域(spatial domain) 转换到 频率域 输入: vtkImageData,实数图像 输出:vtkImageData,每个像素有 2 个分量:实部 (Re) 和 虚部 (Im) """ fft = vtkImageFFT() fft.SetInputConnection(reader.GetOutputPort()) """ vtkImageIdealHighPass 主要用于 高通滤波(High-Pass Filtering),也就是让图像的高频部分(细节)通过,抑制低频部分(平滑区域) """ idealHighPass = vtkImageIdealHighPass() idealHighPass.SetInputConnection(fft.GetOutputPort()) idealHighPass.SetXCutOff(0.1) # 设置X方向的截断频率 idealHighPass.SetYCutOff(0.1) # 设置Y方向的截断频率 """ vtkImageRFFT 傅里叶变换逆变换 """ idealRfft = vtkImageRFFT() idealRfft.SetInputConnection(idealHighPass.GetOutputPort()) """ vtkImageExtractComponents 从输入图像的多分量(如 RGB、RGBA、矢量场)中,提取出指定的通道/分量,输出单分量或少数几分量的图像 例如现在有一个彩色图像,每个像素有3个分量R,G,B 如果只想看红色通道: extract = vtk.vtkImageExtractComponents() extract.SetInputConnection(reader.GetOutputPort()) extract.SetComponents(0) # 提取第 0 个分量(R 通道) """ idealReal = vtkImageExtractComponents() idealReal.SetInputConnection(idealRfft.GetOutputPort()) idealReal.SetComponents(0) """ vtkImageButterworthHighPass 巴特沃斯高通滤波,实现一种平滑的高通滤波器 与 vtkImageIdealHighPass 类似,但有更柔和的频率过渡,不会在边缘产生明显的“振铃”伪影 """ butterworthHighPass = vtkImageButterworthHighPass() butterworthHighPass.SetInputConnection(fft.GetOutputPort()) butterworthHighPass.SetXCutOff(0.1) butterworthHighPass.SetYCutOff(0.1) butterworthRfft = vtkImageRFFT() butterworthRfft.SetInputConnection(butterworthHighPass.GetOutputPort()) butterworthReal = vtkImageExtractComponents() butterworthReal.SetInputConnection(butterworthRfft.GetOutputPort()) butterworthReal.SetComponents(0) idealColor = vtkImageMapToWindowLevelColors() idealColor.SetWindow(500) idealColor.SetLevel(0) idealColor.SetInputConnection(idealReal.GetOutputPort()) idealActor = vtkImageActor() idealActor.GetMapper().SetInputConnection(idealColor.GetOutputPort()) idealActor.GetProperty().SetInterpolationTypeToNearest() butterworthColor = vtkImageMapToWindowLevelColors() butterworthColor.SetWindow(500) butterworthColor.SetLevel(0) butterworthColor.SetInputConnection(butterworthReal.GetOutputPort()) butterworthActor = vtkImageActor() butterworthActor.GetMapper().SetInputConnection(butterworthColor.GetOutputPort()) butterworthActor.GetProperty().SetInterpolationTypeToNearest() idealRenderer = vtkRenderer() idealRenderer.SetViewport(0.0, 0.0, 0.5, 1.0) idealRenderer.AddActor(idealActor) idealRenderer.ResetCamera() idealRenderer.SetBackground(colors.GetColor3d("SlateGray")) butterworthRenderer = vtkRenderer() butterworthRenderer.SetViewport(0.5, 0.0, 1.0, 1.0) butterworthRenderer.AddActor(butterworthActor) butterworthRenderer.SetActiveCamera(idealRenderer.GetActiveCamera()) butterworthRenderer.SetBackground(colors.GetColor3d("LightSlateGray")) renderWindow = vtkRenderWindow() renderWindow.SetSize(600, 300) renderWindow.SetWindowName('IdealHighPass') renderWindow.AddRenderer(idealRenderer) renderWindow.AddRenderer(butterworthRenderer) renderWindowInteractor = vtkRenderWindowInteractor() style = vtkInteractorStyleImage() renderWindowInteractor.SetInteractorStyle(style) renderWindowInteractor.SetRenderWindow(renderWindow) idealRenderer.GetActiveCamera().Dolly(1.4) idealRenderer.ResetCameraClippingRange() renderWindowInteractor.Initialize() renderWindowInteractor.Start() if __name__ == '__main__': main()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:15:40

Spring Boot @GetMapping注解:从应用到原理深度解析

在Spring Boot Web开发中,GetMapping是我们最常用的注解之一,它简洁高效地实现了HTTP GET请求与处理器方法的绑定。本文将从「应用实践」和「底层原理」两个核心维度,带你全面掌握这个注解——既会教你如何灵活运用,也会拆解其背后…

作者头像 李华
网站建设 2026/4/23 12:22:22

.NET微服务架构:从WebAPI到Docker实战

你列出的这些技术栈(.NET Core、RabbitMQ、EF Core、Web API、TCP、Swagger、Linux、Docker)构成了一个典型的现代化微服务或分布式系统开发环境。下面我为你简要梳理它们各自的角色,并提供一些整合建议和最佳实践:1. .NET Core&a…

作者头像 李华
网站建设 2026/4/23 8:25:03

MySQL数据可视化全流程解析

MySQL 数据可视化的核心流程数据准备与清洗 确保数据质量是可视化的基础,通过 SQL 查询筛选、聚合和转换数据。例如使用 WHERE 过滤无效值,GROUP BY 进行分组统计,JOIN 合并多表数据。连接可视化工具 主流工具如 Tableau、Power BI 或 Python…

作者头像 李华
网站建设 2026/4/18 2:08:55

VMware数据恢复收费情况亲测分享

数据恢复行业分析:金海境科技的卓越表现 行业痛点分析 在数据恢复领域,面临着诸多技术挑战。随着数字化进程加速,数据量爆发式增长,存储设备故障、软件系统崩溃、人为误删除等情况频繁出现,导致数据丢失风险大增。据…

作者头像 李华
网站建设 2026/4/23 12:10:11

哈希(Hash)算法与系统安全:从概念到实战的完整指南

📺 B站视频讲解(Bilibili):博主个人介绍 📘 《Yocto项目实战教程》京东购买链接:Yocto项目实战教程 哈希(Hash)算法与系统安全:从概念到实战的完整指南 读完目标: 你能清晰区分:哈希 vs 加密 vs 编码 vs 校验和 你能说清哈希的核心性质与“安全性三件套”(抗原像…

作者头像 李华
网站建设 2026/4/23 12:20:34

【开题答辩全过程】以 台球俱乐部管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华