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. .Net简单上传与下载

    上传: 首先上传我们需要一个控件-FileUpLoad: 再加上一个上传按钮: 在上传按钮的Click事件中添加如下代码: FileUpload1.SaveAs(Server.MapPath(&quo ...

  2. MVC 使用Jquery实现AJax

    View <script type="text/javascript"> function GetTime() { $.get("Home/GetTime&q ...

  3. Kettle 连接 oracle

    问题1:加载不了驱动 Kettle 不包含jdbc的驱程 所以需要把Ojdbc6.jar 放到 Kettle目录下 4.X: \libext\JDBC 5.x: \lib   问题2:没打开监听 症状 ...

  4. apache windowns 下wamp配置多站点的问题

    1.多站点配置找到apache下面的 conf/httpd.conf # Virtual hostsInclude conf/extra/httpd-vhosts.conf  //将这句前面的#号注释 ...

  5. Cocos2d-JS中JavaScript继承

    JavaScript语言本身没有提供类,没有其它语言的类继承机制,它的继承是通过对象的原型实现的,但这不能满足Cocos2d-JS引擎的要求.由于Cocos2d-JS引擎是从Cocos2d-x演变而来 ...

  6. 密码强度的js插件(完成)

    效果如下图: 低:

  7. Typical sentences in SCI papers

       Beginning  1. In this paper, we focus on the need for   2. This paper proceeds as follow.   3. Th ...

  8. OpenGL1-6讲小结

    首先是第一讲,GL窗体的搭建,依葫芦画瓢,很多代码虽然解释了,最后看起来还是比较生涩.一开始按照上一篇的链接去敲的代码,结果最后while死循环了,我也不知道问题出哪儿,后来去找了个源码,还附带了更加 ...

  9. 学习CentOS7笔记(一)

    说明: 1.这是我第一次接触CentOS7,从基础学起. 2.最终目的是为了在CentOS上面部ngix+php+mysql+naxsi环境,进行安全测试. 第一部分 认识CentOS 7 有时候我在 ...

  10. Materialized Views 物化视图 -基础篇

    Materialized Views 物化视图 -基础篇 http://blog.csdn.net/elimago/article/details/5404019