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()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1159958.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

紧急收藏!2026年前端开发者必看的AI“能力陷阱“,别让AI偷走你的核心竞争力

文章警示前端开发者正陷入"把AI能力当自己能力"的陷阱,导致核心竞争力退化。AI能解决"怎么写"的问题,但无法解决"为什么这么写"、“对用户体验的影响"等问题。未来前端开发者应转型为"AI驾驭体验架构师”&#…

【必藏】构建高并发AI系统:从量化剪枝到边缘部署的完整实践指南

本文详细介绍了大规模AI系统的设计与优化技术,包括模型量化、剪枝等推理优化方法,不同平台部署策略,实时应用的延迟与吞吐量平衡,边缘AI部署,系统瓶颈诊断与性能监控,以及AI系统的CI/CD流水线和调试工具&am…

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

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

Spring Boot核心注解详解:@ResponseBody深度解析与实战

在Spring MVC/Spring Boot的开发体系中,前后端分离已是主流架构模式,而数据交互的核心离不开各类注解的支撑。其中,ResponseBody作为处理HTTP响应的关键注解,是后端返回数据给前端的“桥梁”。本文将从核心作用、工作原理、实战示…

[吾爱大神原创工具] 记账本app

[吾爱大神原创工具] 记账本app 链接:https://pan.xunlei.com/s/VOiwAoZoAkW9oy_-90W5z_FXA1?pwdiru2# 云端功能没有开发 方便随手记账 修复版本: 去掉了快速记账功能,感觉好像没有必要,还有一个更重要的 ,就是评…

python基于flask框架的留守儿童身心关爱平台的设计与开发

目录 留守儿童身心关爱平台的设计与开发(基于Flask框架) 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 留守儿童身心关爱平台的设计与开发(基于Flask框…

python基于flask框架的高校学生宿舍报修系统

目录高校学生宿舍报修系统设计与实现(基于Flask框架)开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!高校学生宿舍报修系统设计与实现(基于Flask框架&…

python基于flask框架的 蛋糕购物商城的设计

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 蛋糕购物商城基于Flask框架开发,采用Python作为后端语言,结合MySQL数据库实现数据存储与管理。系统采用…

python基于flask框架的二手手机商城管理系统的设计与开发

目录 摘要 开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式! 摘要 随着电子商务的快速发展,二手商品交易市场逐渐成为消费者关注的焦点,尤其是二手手机因其高性价比受…

python基于flask框架的健身运动比赛服务饮食推荐平台设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 健身运动比赛服务饮食推荐平台基于Flask框架设计,旨在为运动员和健身爱好者提供个性化的饮食建议与赛事服务。平台…

揭秘工业级Web可视化系统:从技术困境到智能监控的突破之路

揭秘工业级Web可视化系统:从技术困境到智能监控的突破之路 【免费下载链接】FUXA Web-based Process Visualization (SCADA/HMI/Dashboard) software 项目地址: https://gitcode.com/gh_mirrors/fu/FUXA 当工厂的监控大屏需要频繁切换系统、设备数据孤岛难以…

亲测好用8个一键生成论文工具,自考学生轻松搞定毕业论文!

亲测好用8个一键生成论文工具,自考学生轻松搞定毕业论文! AI 工具如何成为自考论文的得力助手? 对于自考学生来说,撰写毕业论文常常是一项既耗时又充满挑战的任务。从选题到资料收集,再到结构搭建和内容撰写&#xff0…

MySQL数据可视化实战指南

MySQL 数据可视化的基础概念数据可视化与MySQL的关系:MySQL作为数据存储工具,如何为可视化提供结构化数据常见可视化场景:报表、仪表盘、趋势分析等关键工具与技术栈:MySQL 可视化工具(如Tableau、Power BI、Metabase…

MySQL数据可视化实战指南

MySQL 数据可视化的基础概念数据可视化与MySQL的关系:MySQL作为数据存储工具,如何为可视化提供结构化数据常见可视化场景:报表、仪表盘、趋势分析等关键工具与技术栈:MySQL 可视化工具(如Tableau、Power BI、Metabase…

AI记忆之谜:为什么DeepSeek能记住你的规划?揭秘大模型内存管理技术,建议收藏不迷路

文章揭秘AI助手"记忆"真相:大模型本身无状态,记忆是通过上下文管理实现的。区分知识、工具和记忆概念,指出生产环境中内存管理面临经济成本、推理性能和信息忽略等挑战。优秀智能体需设计复杂记忆层,包括短期记忆&#…

RAG优化策略终极指南:17种方法全对比+选型建议,开发者必藏!

文章详细解析了RAG系统的17种优化策略,包括基础检索、语义切分、小块查大块答等方法,对比各策略的检索精度、响应速度和技术成本,并通过GPT评分评估效果。文章提供了基于应用场景和数据特征的选型建议,帮助开发者根据精度需求和预…

【珍藏】大模型开发全攻略:12个月从入门到精通,附ChatGPT、DeepSeek等实战案例

本文提供了大模型(LLM)开发的完整学习路线,分为4个阶段:0-2个月打牢基础(Python、数学、深度学习、Transformer);3-5个月掌握主流框架(Prompt工程、LangChain、RAG、Agent);6-9个月项…

【珍藏】LangGraph图模块深度剖析:构建复杂AI工作流的秘密武器,从节点到边的底层实现详解

LangGraph图模块通过节点(Node)、边(Edge)和共享状态(State)实现多智能体协作与状态机工作流。节点作为基本执行单元处理具体任务,边定义执行顺序和数据流向,支持条件分支和动态路由。状态管理采用共享白板机制,通过归约函数处理并发更新。基…

MySQL数据可视化全流程解析

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

Agent工程进入深水区!LangChain最新调研揭秘:57%企业已部署Agent,收藏这份生产级落地指南

基于LangChain 2025年调研,57%企业已在生产环境部署Agent,标志着从实验阶段进入生产阶段。企业部署难点集中于输出质量可控性、系统稳定性等工程质量问题,而非模型能力本身。可观察性成为基础设施级能力,但系统化评估仍显滞后。大…