VTK:图像平滑——中值滤波器

1.中值滤波

vtkImageHybridMedian2D实现了对二维图像的中值滤波。其实实现原理是,采用一个5*5的模板,逐次将模板中心对应图像的每个像素上,将模板图像覆盖的像素的中值作为当前的像素的输出值。

2.代码

#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);
 
#include <vtkSmartPointer.h>
#include <vtkJPEGReader.h>
#include <vtkImageData.h>
#include <vtkImageCast.h>
#include <vtkImageHybridMedian2D.h>
#include <vtkImageActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleImage.h>
 
int main(int argc, char* argv[])
{
	vtkSmartPointer<vtkJPEGReader> reader =
		vtkSmartPointer<vtkJPEGReader>::New();
	reader->SetFileName("lena.jpg");
	reader->Update();
 
	vtkSmartPointer<vtkImageHybridMedian2D> hybridMedian =
		vtkSmartPointer<vtkImageHybridMedian2D>::New();
	hybridMedian->SetInputData(reader->GetOutput());
	hybridMedian->Update();
	///
	vtkSmartPointer<vtkImageActor> originalActor =
		vtkSmartPointer<vtkImageActor>::New();
	originalActor->SetInputData(reader->GetOutput());
 
	vtkSmartPointer<vtkImageActor> hybridMedianActor =
		vtkSmartPointer<vtkImageActor>::New();
	hybridMedianActor->SetInputData(hybridMedian->GetOutput());
	
	double originalViewport[4] = { 0.0, 0.0, 0.5, 1.0 };
	double hybridMedianViewport[4] = { 0.5, 0.0, 1.0, 1.0 };
 
	vtkSmartPointer<vtkRenderer> originalRenderer =
		vtkSmartPointer<vtkRenderer>::New();
	originalRenderer->SetViewport(originalViewport);
	originalRenderer->AddActor(originalActor);
	originalRenderer->ResetCamera();
	originalRenderer->SetBackground(1.0,0,0);
 
	vtkSmartPointer<vtkRenderer> hybridMedianRenderer =
		vtkSmartPointer<vtkRenderer>::New();
	hybridMedianRenderer->SetViewport(hybridMedianViewport);
	hybridMedianRenderer->AddActor(hybridMedianActor);
	hybridMedianRenderer->ResetCamera();
	hybridMedianRenderer->SetBackground(1.0, 1.0, 1.0);
	
	vtkSmartPointer<vtkRenderWindow> rw =
		vtkSmartPointer<vtkRenderWindow>::New();
	rw->AddRenderer(originalRenderer);
	rw->AddRenderer(hybridMedianRenderer);
	rw->SetSize(640, 320);
	rw->Render();
	rw->SetWindowName("MedianFilterExample");
 
	vtkSmartPointer<vtkRenderWindowInteractor> rwi =
		vtkSmartPointer<vtkRenderWindowInteractor>::New();
	vtkSmartPointer<vtkInteractorStyleImage> style =
		vtkSmartPointer<vtkInteractorStyleImage>::New();
	rwi->SetInteractorStyle(style);
	rwi->SetRenderWindow(rw);
	rwi->Initialize();
	rwi->Start();
 
	return 0;
}

3.运行截图

在这里插入图片描述
##:只需要调用这个类即可,不需要用户设置任何参数。该方法能够有效的保持图像边缘,并对于噪声有较少的抑制作用。对于三维图像,则使用vtkImageHybridMedian3D

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: VTK(Visualization Toolkit)是一个强大的开源图形图像处理库,具有丰富的功能和广泛的应用领域。它可以用于创建和处理3D图形、可视化数据、图像处理以及各种科学和医学可视化等。 要进行VTK图形图像开发进阶,首先需要从官方网站(vtk.org)上下载VTK的源码。在网站上可以找到最新版本的VTK库以及其他相关文档和示例代码。下载源码后,需要解压缩并按照VTK的安装指南进行配置和编译。 配置和编译VTK需要一定的技术能力和基础知识,建议先阅读一些相关的教程和指南,以便理解和掌握整个过程。配置完成后,可以使用C++或Python等编程语言进行开发。 VTK的源码是由多个模块组成的,每个模块负责不同的功能。在进阶开发中,可以根据自己的需求选择相应的模块进行二次开发。常用的模块包括Rendering、Visualization、Image Processing、Volume Rendering等。可以根据需求选择相应的模块,并阅读源码进行学习和理解。 在开发过程中,可以利用VTK提供的丰富的类和函数,实现各种图形图像处理操作。可以通过创建数据对象、应用滤波、设置渲染参数等方式,实现数据的可视化和图形图像处理。同时,也可以根据实际需求自定义类和函数,扩展VTK的功能。 总之,VTK图形图像开发进阶需要下载VTK的源码,并进行配置和编译。然后,可以根据需求选择相应的模块进行开发,并利用VTK提供的类和函数实现各种图形图像处理操作。通过阅读源码和实践,不断深入学习和理解VTK的原理和应用,提高自己在图形图像领域的开发能力。 ### 回答2: 要下载vtk图形图像开发进阶的源码,首先需要明确vtk是一个开源的图像图形库,可以用于图像、三维可视化、数据处理等领域。 1. 首先,可以在vtk官方网站(https://www.vtk.org/)上查找vtk的最新版本。 2. 进入vtk官方网站后,在网站的顶部菜单中找到“Downloads”(下载)选项,并点击进入。 3. 在“Downloads”页面中,可以选择不同的vtk版本及操作系统。根据自己的需要,选择合适的版本并点击下载。 4. 下载完成后,解压缩源码文件。源码文件通常是一个压缩包(通常为.tar.gz或.zip格式)。解压缩后,可以得到包含vtk图形图像开发进阶的源码文件夹。 5. 打开源码文件夹后,可以看到各种vtk相关的源代码文件,包括头文件、源文件等。这些源代码文件可以用于自定义vtk的功能和特性。 需要注意的是,vtk是一个强大的图形图像开发库,使用它进行开发需要一定的编程基础和相关的开发环境配置。如果对vtk不熟悉的话,建议先学习vtk的基础知识和使用方法,可以参考相关教程、文档或书籍。此外,vtk官方网站上也提供了丰富的示例代码和文档,可以帮助更好地理解和使用vtk。 总之,通过以上步骤可以下载到vtk图形图像开发进阶的源码,然后可以在相应的开发环境中进行使用和扩展。 ### 回答3: vtk(Visualization Toolkit)是一个开源的跨平台的图形图像开发工具包,被广泛应用于科学计算、数据可视化和医学影像等领域。vtk提供了丰富的图形图像处理算法和可视化功能,可以用于创建交互式的3D图形和2D图像。 想要进阶vtk图形图像开发,首先需要下载vtk的源码。vtk的源码可以在其官方网站(www.vtk.org)上找到。在网站的首页中,可以找到“Download VTK”按钮,并点击进入下载页面。 在下载页面中,可以选择不同的版本和操作系统的源码进行下载。vtk支持多种操作系统,如Windows、Linux、Mac等。选择符合自己操作系统的版本,并点击下载,即可开始下载vtk的源码。 下载完成后,可以将源码解压到本地的目录中。源码包含了所有vtk的代码和库文件,可以用于自定义vtk的功能和进行二次开发。 进行vtk图形图像开发时,可以使用C++等编程语言来使用vtk的功能。编写代码前,需要先将vtk的库文件添加到项目中,并确保编译环境可以正确链接vtk的库文件。在编写代码时,可以参考vtk的官方文档和示例代码,了解vtk的各种功能和使用方法。 在vtk开发中,可以根据需求使用vtk提供的各种算法和类库,如创建几何体、进行体素化、渲染和交互等。同时,vtk支持各种图形图像格式的读取和保存,方便进行数据的导入和输出。 总之,vtk图形图像开发进阶需要下载vtk的源码,并熟悉vtk的功能和使用方法。通过学习和实践,可以掌握vtk的高级功能,实现各种图形图像处理和可视化的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

简 。单

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值