MITK Tutorial (三)

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::informationNULL"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[01// radius along x 

      indexRadius[11// radius along y 

      indexRadius[21;//  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); 

    }
						

  }
						

 

 

转载于:https://www.cnblogs.com/taopanpan/p/3672428.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值