Step 2: Use the template with the plugins to read a image

在exampleplugin插件中QmitkAwesomeView.cpp中添加头文件

//Mitk

#include "mitkImageCast.h"

//Itk

#include "itkImage.h"

#include "itkImageFileReader.h"

#include "itkImageFileWriter.h"

#include "itkMeanImageFilter.h"

在DoImageProcessing函数中 修改如下:用ITK::image 从文件中读图 经过中值滤波器处理并转成mitk::image加到DATA note 中

void QmitkAwesomeView::DoImageProcessing()

{

    const unsigned int Dimension = 3;

    typedef unsigned char                           InputPixelType;

    typedef unsigned char                            OutputPixelType;

    typedef itk::Image< InputPixelType,  Dimension >   InputImageType;

    typedef itk::Image< OutputPixelType, Dimension >   OutputImageType;

  QList<mitk::DataNode::Pointer> nodes = this->GetDataManagerSelection();

  if (nodes.empty()) return;

 

  mitk::DataNode::Pointer node = nodes.front();

 

  if (!node)

  {

    // Nothing selected. Inform the user and return

    QMessageBox::information( NULL, "Template", "Please load and select an image before starting image processing.");

    return;

  }

 

  // here we have a valid mitk::DataNode

 

  // a node itself is not very useful, we need its data item (the image)

  mitk::BaseData* data = node->GetData();

  if (data)

  {

    // test if this data item is an image or not (could also be a surface or something totally different)

    mitk::Image* image = dynamic_cast<mitk::Image*>( data );

    if (image)

    {

      std::stringstream message;

      std::string name;

      message << "Performing image processing for image ";

      if (node->GetName(name))

      {

        // a property called "name" was found for this DataNode

        message << "'" << name << "'";

      }

      message << ".";

      MITK_INFO << message.str();

 

      // actually do something here...

      InputImageType::Pointer inputItkImage = InputImageType::New();

 

      if(image)

      {

          CastToItkImage( image, inputItkImage );//OK, now you can use inputItkImage whereever you want 

          cout<<"this is normal itk image!"<<endl;

      }

 

      typedef itk::MeanImageFilter<

          InputImageType, OutputImageType >  FilterType;

      FilterType::Pointer filter = FilterType::New();

 

      InputImageType::SizeType indexRadius;

      indexRadius[0] = 1; // radius along x

      indexRadius[1] = 1; // radius along y

      indexRadius[2] = 1;//  radius along z

      filter->SetRadius( indexRadius );

      filter->SetInput( inputItkImage);

      filter->Update();

      // use the AwesomeImageFilter class from the MyAwesomeLib module

      /*AwesomeImageFilter::Pointer awesomeFilter = AwesomeImageFilter::New();

      awesomeFilter->SetInput(image);

      awesomeFilter->SetOffset(m_Controls.spinboxOffset->value());

      awesomeFilter->Update();

 

      std::stringstream outputNodeName;

      outputNodeName << node->GetName() << " offset by " << m_Controls.spinboxOffset->value();*/

      mitk::Image::Pointer outputImage = mitk::Image::New();

      mitk::CastToMitkImage(filter->GetOutput(), outputImage);

 

      mitk::DataNode::Pointer outputNode = mitk::DataNode::New();

      outputNode->SetData(outputImage);

      outputNode->SetName("1");

 

      this->GetDataStorage()->Add(outputNode);

    }

  }

 

 

MITK Tutorial (三)的更多相关文章

  1. MITK Tutorial(二)

    目标: 生成MITK 插件包括一个新用户交互的视图,并调用一些ITK filters. Step 1: How to create a new MITK Plugin 可以选择用Plugin Gene ...

  2. MITK Tutorial

      MITK 设计来使用模块化和高度的代码重用,既能作为 pure software library或complete application framework.它的结构概览图如下: ITK:提供分 ...

  3. docker开发实践

    一:docker的定义和使用场景: Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的.可移植的.自给自足的容器.开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VM ...

  4. scrapy学习笔记一

    以前写爬虫都是直接手写获取response然后用正则匹配,被大佬鄙视之后现在决定开始学习scrapy 一.安装 pip install scrapy 二.创建项目 scrapy startprojec ...

  5. 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形 【转】

    http://blog.csdn.net/xiajun07061225/article/details/7628146 以前都是用Cg的,现在改用GLSL,又要重新学,不过两种语言很多都是相通的. 下 ...

  6. 2.3 Hive的数据类型讲解及实际项目中如何使用python脚本对数据进行ETL

    一.hive Data Types https://cwiki. apache. org/confluence/display/HiveLanguageManual+Types Numeric Typ ...

  7. JAVA BIO至NIO演进

    主要阐述点: 1.同步/异步 or  阻塞/非阻塞 2.网络模型演进 3.NIO代码示例 一.同步/异步 or  阻塞/非阻塞 同步/异步:核心点在于是否等待结果返回.同步即调用者必须等到结果才返回, ...

  8. Python Tutorial 学习(三)--An Informal Introduction to Python

    3.1. 将Python用作计算器 3.1.1. Numbers 数 作为一个计算器,python支持简单的操作, '+','-','*','/'地球人都知道的加减乘除. ()可以用来改变优先级,同数 ...

  9. Octave Tutorial(《Machine Learning》)之第三课《数据计算》

    第三课 Culculating Data 数据计算 矩阵计算 1.简单的四则运算 2.相乘除,乘方运算(元素位运算) ".*"为对应元素的相乘计算 "./"为对 ...

随机推荐

  1. [CAMCOCO][C#]我的系统架构 总图

    之前写的感觉有点乱,把架构的设计图先放上来吧,对照着说. CAMCOCO架构能够支持的模型: 1.B/S程序,比如CRM什么的,和访问普通网站没什么区别,都是从WEB服务器上进行操作: 2.APP的服 ...

  2. Intent.ACTION_PICK

    在常见的Activity Action Intent常量中,ACTION_PICK  android.intent.action.PICK 是“选择数据”的意思,来简单的分享一下我知道的Intent. ...

  3. 安装ie10慢的解决办法

    下面是win7安装ie10的先决条件: http://support.microsoft.com/kb/2818833

  4. Lambda表达式的本质是匿名函数

    1.委托的简介: 委托可以简单的理解为方法的列表,添加的方法的参数类型,个数,顺序必须和委托一致, 也就是说委托起到了托管方法的作用,并且约束了要调用的方法. //1声明委托 public deleg ...

  5. jqure获取单选按钮的值(比如性别)

    使用jquery获取radio的值,最重要的是掌握jquery选择器的使用,在一个表单中我们通常是要获取被选中的那个radio项的值,所以要加checked来筛选,比如有以下的一些radio项: 1. ...

  6. Linux基本服务命令

    启动Httpd服务:service httpd start 停止Httpd服务:service httpd stop 重启Httpd服务:service httpd restart 关闭httpd所有 ...

  7. 一个线程间的通讯小程序__(Java_Thread_Inout.Output)

    //多线程通讯 //多个线程处理同一资源,但是任务不同 //等待唤醒方法: //wait():将线程变成为冻结状态,线程会被存储在线程池中; //notify():唤醒线程中的一个线程(任意的) // ...

  8. eclipse优化(部分)

    1. 增强Eclipse(MyEclipse)输入代码提示功能 一般设置: (1). 打开Eclipse,选择打开" Window -- Preferences". (2). 在目 ...

  9. HDU 5024 Wang Xifeng's Little Plot(枚举)

    题意:求一个图中只有一个90°拐点的路的最大长度. 分析:枚举每一个为'.'的点,求出以该点为拐点的八种路中的最大长度,再比较所有点,得出最大长度即可. 如上样例,这样是个90°的角... 注意:最多 ...

  10. Template_16_模板与继承

    1,名称模板参数template <typename PolicySetter1 = DefaultPolicy1,    typename PolicySetter2 = DefaultPol ...