1.彩色图像RGB成分提取

VTK中利用vtkImageExtractComponents可以方便的提取出彩色图像的各个颜色分量,该类的使用比较简单,只需要设置要提取的分量序号即可。下面代码说明了怎样提取彩色图像的某个颜色分量。
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL);#include <vtkSmartPointer.h>
#include <vtkBMPReader.h>
#include <vtkImageExtractComponents.h>
#include <vtkImageActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkInteractorStyleImage.h>int main()
{vtkSmartPointer<vtkBMPReader> reader =vtkSmartPointer<vtkBMPReader>::New();reader->SetFileName("lena.bmp");vtkSmartPointer<vtkImageExtractComponents> redComponent =vtkSmartPointer<vtkImageExtractComponents>::New();redComponent->SetInputConnection(reader->GetOutputPort());redComponent->SetComponents(0);redComponent->Update();vtkSmartPointer<vtkImageExtractComponents> greenComponent =vtkSmartPointer<vtkImageExtractComponents>::New();greenComponent->SetInputConnection(reader->GetOutputPort());greenComponent->SetComponents(1);greenComponent->Update();vtkSmartPointer<vtkImageExtractComponents> blueComponent =vtkSmartPointer<vtkImageExtractComponents>::New();blueComponent->SetInputConnection(reader->GetOutputPort());blueComponent->SetComponents(2);blueComponent->Update();//创建演员vtkSmartPointer<vtkImageActor> origActor =vtkSmartPointer<vtkImageActor>::New();origActor->SetInputData(reader->GetOutput());vtkSmartPointer<vtkImageActor> redActor =vtkSmartPointer<vtkImageActor>::New();redActor->SetInputData(redComponent->GetOutput());vtkSmartPointer<vtkImageActor> greenActor =vtkSmartPointer<vtkImageActor>::New();greenActor->SetInputData(greenComponent->GetOutput());vtkSmartPointer<vtkImageActor> blueActor =vtkSmartPointer<vtkImageActor>::New();blueActor->SetInputData(blueComponent->GetOutput());//定义窗口 并化妆double origView[4] = { 0.0, 0.0, 0.25, 1.0 };double redView[4] = { 0.25, 0.0, 0.5, 1.0 };double greenView[4] = { 0.5, 0.0, 0.75, 1.0 };double blueView[4] = { 0.75, 0.0, 1.0, 1.0 };vtkSmartPointer<vtkRenderer> origRender =vtkSmartPointer<vtkRenderer>::New();origRender->SetViewport(origView);origRender->AddActor(origActor);origRender->ResetCamera();origRender->SetBackground(1.0, 1.0, 1.0);vtkSmartPointer<vtkRenderer> redRender =vtkSmartPointer<vtkRenderer>::New();redRender->SetViewport(redView);redRender->AddActor(redActor);redRender->ResetCamera();redRender->SetBackground(1.0, 1.0, 1.0);vtkSmartPointer<vtkRenderer> greenRender =vtkSmartPointer<vtkRenderer>::New();greenRender->SetViewport(greenView);greenRender->AddActor(greenActor);greenRender->ResetCamera();greenRender->SetBackground(1.0, 1.0, 1.0);vtkSmartPointer<vtkRenderer> blueRender =vtkSmartPointer<vtkRenderer>::New();blueRender->SetViewport(blueView);blueRender->AddActor(blueActor);blueRender->ResetCamera();blueRender->SetBackground(1.0, 1.0, 1.0);//上舞台vtkSmartPointer<vtkRenderWindow> renderwindow =vtkSmartPointer<vtkRenderWindow>::New();renderwindow->AddRenderer(origRender);renderwindow->AddRenderer(redRender);renderwindow->AddRenderer(greenRender);renderwindow->AddRenderer(blueRender);renderwindow->SetSize(960, 320);renderwindow->Render();renderwindow->SetWindowName("ExtraImageColorComponents");//设置交互vtkSmartPointer<vtkRenderWindowInteractor> rwi =vtkSmartPointer<vtkRenderWindowInteractor>::New();vtkSmartPointer<vtkInteractorStyleImage> style =vtkSmartPointer<vtkInteractorStyleImage>::New();rwi->SetInteractorStyle(style);rwi->SetRenderWindow(renderwindow);rwi->Initialize();rwi->Start(); return 0;
}

2.参看资料

1.《C++ primer》
2.《The VTK User’s Guide – 11thEdition》
3.《The Visualization Toolkit – AnObject-Oriented Approach To 3D Graphics (4th Edition)》
4.  张晓东, 罗火灵. VTK图形图像开发进阶[M]. 机械工业出版社, 2015.

VTK修炼之道22:图像基本操作_彩色图像成分提取相关推荐

  1. VTK修炼之道14:图像处理_创建

    1.引言:图像数据结构 数字图像文件内容由两个部分组成:图像头信息和数据.图像头信息定义了图像的基本信息,主要包括起点位置(Origin),像素间隔(space)和维数(dimension).通过这三 ...

  2. VTK修炼之道32:边缘检测_梯度算子

    1.梯度算子提取图像边缘 图像中不连续的灰度值会产生边缘,图像的边缘检测是基于边界的图像分割方法,如分水岭算法,通常是分割原图的梯度图像,梯度实际上也是反应的图像边缘信息.图像边缘一般常用图像一阶导数 ...

  3. VTK修炼之道21:图像基本操作_彩色图像生成灰度图像

    1.灰度图像映射 vtkImageLuminance负责将一个RGB彩色图像转换为一个单组分的灰度图像.映射公式如下: luminance = 0.3*R + 0.59*G + 0.11*B 该公式中 ...

  4. VTK修炼之道16:图像处理_窗口分割和图像融合(ViewportvtkImageBlend)

    1.前言 前面演示的例子都是在一个窗口中显示一个图像.但是在常见的图像处理软件中,经常会遇到在一个窗口中显示多个图像,这就会用到图像融合技术.图像融合利用图像的alpha通道和不透明度来实现.VTK中 ...

  5. VTK修炼之道62:体绘制_固定点光线投影体绘制与GPU加速光线投影体绘制

    1.固定点光线投影算法 vtkFixedPointVolumeRayCastMapper是一个较好的vtkVolumeRayCastMapper的替代者.该类能够实现基于Alpha合成的体绘制方法和最 ...

  6. VTK修炼之道61:体绘制_光线投影+最大密度投影+等值面法

    1.vtkVolumeMapper vtkVolumeMapper是所有体绘制Mapper类的虚基类,提供接口函数,并由其子类实现具体功能.该类的继承关系如下图所示: 应该掌握一些常用的体绘制类. 2 ...

  7. VTK修炼之道60:体绘制_体绘制管线图形渲染管线

    1.几何渲染与体绘制 1.1 几何渲染 前面练习的渲染技术都是几何渲染技术.所谓的几何渲染技术,就是通过绘制几何图元(顶点.线段.面片等)来渲染数据,例如:绘制图像需要在空间中建立一个四边形图元,然后 ...

  8. VTK修炼之道39:图像平滑_各向异性滤波

    1.各向异性扩散滤波 高斯平滑方法在平滑噪声的同时,模糊了图像的重要边缘图像. 各向异性滤波是一种基于偏微分方程的滤波技术,建立于热量的各向异性扩散理论. 各向异性滤波在图像的平坦区域选择大尺度平滑, ...

  9. VTK修炼之道38:图像平滑_中值滤波器

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

最新文章

  1. 万万没想到! logger.info() 还能导致线上故障?
  2. Rep Loss笔记
  3. JAVA面试题解惑系列(四)——final、finally和finalize的区别
  4. eeprom 数据偶尔变成ff_关于水电站冗余配置下监控系统下发调节令偶尔不动作的案例分析...
  5. 在Spring MVC Web应用程序中添加社交登录:单元测试
  6. ubuntu18.04系统ros melodic 安装orbslam2,Astra相机的ROS环境
  7. java1乘到10000_你如何制作一个10000的数组,只有1-1000的值?
  8. [Java]HashMap的两种排序方式
  9. C++入门系列博客四 const define static关键字
  10. C语言开发环境搭建过程
  11. Python pandas库的简单使用
  12. python+OpenCV jpg图片的压缩
  13. 有哪些办法可以将ip地址更换?
  14. mysql水果表查询_最全MySQL数据库表的查询操作
  15. Java工程师只要掌握这些知识点,就能给面试官一个满意的答案,挑战高薪
  16. EXCEL VB简单使用
  17. Linux—文件系统与磁盘管理(后)
  18. 【向StoneDB迁移数据】数据迁移同步工具-Gravity
  19. 果园机器人的课文_《果园机器人》课文原文
  20. 什么是RNN?一文看懂强大的循环神经网络(Recurrent Neural Network, RNN)

热门文章

  1. Effective C# 原则1:尽可能的使用属性(property),而不是数据成员(field)。
  2. 组件开发之ASP.NET中集成资源文件的服务器端控件开发
  3. Ubuntu中文输入法崩溃问题(候选框乱码)
  4. NYOJ 139 我排第几个?
  5. 2019牛客暑期多校训练营(第九场)-E All men are brothers
  6. 2017-2018-2 20155228 《网络对抗技术》 实验四:恶意代码分析
  7. [bzoj1187][HNOI2007]神奇游乐园
  8. ASP.NET MVC API 接口验证
  9. html5元素拖动 (转载黑桐)
  10. SQL Server 2008 允许远程链接 解决方法