コード例 #1
0
void QmitkToFVisualisationSettingsWidget::InitializeTransferFunction(mitk::Image* distanceImage, mitk::Image* amplitudeImage, mitk::Image* intensityImage)
{
  this->m_MitkDistanceImage = distanceImage;
  this->m_MitkAmplitudeImage = amplitudeImage;
  this->m_MitkIntensityImage = intensityImage;

  if (distanceImage && distanceImage && intensityImage)
  {
    m_RangeSliderMin = distanceImage->GetScalarValueMin();
    m_RangeSliderMax = distanceImage->GetScalarValueMax();

    //m_Widget1ColorTransferFunction = vtkColorTransferFunction::New();
    ////m_Widget1ColorTransferFunction->RemoveAllPoints();
    ////m_Widget1ColorTransferFunction->AddRGBPoint(m_RangeSliderMin, 1, 0, 0);
    ////m_Widget1ColorTransferFunction->AddRGBPoint((m_RangeSliderMin+(m_RangeSliderMax-m_RangeSliderMin)/2, 0, 1, 0);  
    ////m_Widget1ColorTransferFunction->AddRGBPoint(m_RangeSliderMax, 0, 0, 1);  
    ////m_Widget1ColorTransferFunction->SetColorSpaceToHSV();
    //this->m_Widget1TransferFunctionType = 1;
    //ResetTransferFunction(this->m_Widget1ColorTransferFunction, this->m_Widget1TransferFunctionType ,distanceImage->GetScalarValueMin(), distanceImage->GetScalarValueMax());

    //m_Widget2ColorTransferFunction = vtkColorTransferFunction::New();
    ////m_Widget2ColorTransferFunction->RemoveAllPoints();
    ////m_Widget2ColorTransferFunction->AddRGBPoint(amplitudeImage->GetScalarValueMin(), 1, 1, 1);
    ////m_Widget2ColorTransferFunction->AddRGBPoint(amplitudeImage->GetScalarValueMax(), 0, 0, 0);  
    ////m_Widget2ColorTransferFunction->SetColorSpaceToHSV();
    //this->m_Widget2TransferFunctionType = 0;
    //ResetTransferFunction(this->m_Widget2ColorTransferFunction, this->m_Widget2TransferFunctionType, amplitudeImage->GetScalarValueMin(), amplitudeImage->GetScalarValueMax());

    //m_Widget3ColorTransferFunction = vtkColorTransferFunction::New();
    ////m_Widget3ColorTransferFunction->RemoveAllPoints();
    ////m_Widget3ColorTransferFunction->AddRGBPoint(intensityImage->GetScalarValueMin(), 1, 1, 1);
    ////m_Widget3ColorTransferFunction->AddRGBPoint(intensityImage->GetScalarValueMax(), 0, 0, 0);  
    ////m_Widget3ColorTransferFunction->SetColorSpaceToHSV();
    //this->m_Widget3TransferFunctionType = 0;
    //ResetTransferFunction(this->m_Widget3ColorTransferFunction, this->m_Widget3TransferFunctionType, intensityImage->GetScalarValueMin(), intensityImage->GetScalarValueMax());

    OnUpdateCanvas();

    int border = (m_RangeSliderMax - m_RangeSliderMin) * 0.1;
    m_Controls->m_RangeSlider->setMinimum(m_RangeSliderMin - border);
    m_Controls->m_RangeSlider->setMaximum(m_RangeSliderMax + border);
    m_Controls->m_RangeSliderMinEdit->setText(QString("").setNum(m_RangeSliderMin - border));
    m_Controls->m_RangeSliderMaxEdit->setText(QString("").setNum(m_RangeSliderMax + border));
    m_Controls->m_RangeSlider->setSpan( m_RangeSliderMin, m_RangeSliderMax);

    UpdateRanges();

  }
  else
  {
    m_Controls->m_ColorTransferFunctionCanvas->setEnabled(false);
  }
}
コード例 #2
0
void QmitkTransferFunctionWidget::SetDataNode(mitk::DataNode *node, const mitk::BaseRenderer *renderer)
{
  if (node)
  {
    tfpToChange = dynamic_cast<mitk::TransferFunctionProperty *>(node->GetProperty("TransferFunction", renderer));

    if (!tfpToChange)
    {
      if (!dynamic_cast<mitk::Image *>(node->GetData()))
      {
        MITK_WARN << "QmitkTransferFunctionWidget::SetDataNode called with non-image node";
        goto turnOff;
      }

      node->SetProperty("TransferFunction", tfpToChange = mitk::TransferFunctionProperty::New());
    }

    mitk::TransferFunction::Pointer tf = tfpToChange->GetValue();

    if (mitk::BaseData *data = node->GetData())
    {
      mitk::SimpleHistogram *h = histogramCache[data];

      m_RangeSliderMin = h->GetMin();
      m_RangeSliderMax = h->GetMax();

      m_RangeSlider->blockSignals(true);
      m_RangeSlider->setMinimum(m_RangeSliderMin);
      m_RangeSlider->setMaximum(m_RangeSliderMax);
      m_RangeSlider->setMinimumValue(m_RangeSliderMin);
      m_RangeSlider->setMaximumValue(m_RangeSliderMax);
      m_RangeSlider->blockSignals(false);

      m_ScalarOpacityFunctionCanvas->SetHistogram(h);
      m_GradientOpacityCanvas->SetHistogram(h);
      m_ColorTransferFunctionCanvas->SetHistogram(h);
    }

    OnUpdateCanvas();

    return;
  }

turnOff:

  m_ScalarOpacityFunctionCanvas->setEnabled(false);
  m_ScalarOpacityFunctionCanvas->SetHistogram(nullptr);
  m_GradientOpacityCanvas->setEnabled(false);
  m_GradientOpacityCanvas->SetHistogram(nullptr);
  m_ColorTransferFunctionCanvas->setEnabled(false);
  m_ColorTransferFunctionCanvas->SetHistogram(nullptr);
  tfpToChange = nullptr;
}
コード例 #3
0
void QmitkToFVisualisationSettingsWidget::SetDataNode(mitk::DataNode* node)
{
  if (node)
  {
    m_TfpToChange = dynamic_cast<mitk::TransferFunctionProperty*>(node->GetProperty("TransferFunction"));
    
    if(!m_TfpToChange)
    {
      if (! dynamic_cast<mitk::Image*>(node->GetData()))
      {
        MITK_WARN << "QmitkTransferFunctionWidget::SetDataNode called with non-image node";
        goto turnOff;
      }
      
      m_TfpToChange = mitk::TransferFunctionProperty::New();
      mitk::TransferFunction::Pointer ctf = mitk::TransferFunction::New();
      ctf->InitializeByMitkImage(dynamic_cast<mitk::Image*>(node->GetData()));
      m_TfpToChange->SetValue(ctf);
      node->SetProperty("TransferFunction", m_TfpToChange );
    }

    mitk::TransferFunction::Pointer tf = m_TfpToChange->GetValue();

    if( mitk::Image* image = dynamic_cast<mitk::Image*>( node->GetData() ) )
    {
      mitk::SimpleHistogram *h = histogramCache[image];

      m_RangeSliderMin= h->GetMin();
      m_RangeSliderMax= h->GetMax();
         
    }

    OnUpdateCanvas();

    m_Controls->m_RangeSlider->setSpan( m_RangeSliderMin, m_RangeSliderMax);

    UpdateRanges();

    return; 
  }

  turnOff:

  m_Controls->m_ColorTransferFunctionCanvas->setEnabled(false);
  m_TfpToChange = 0;
}
コード例 #4
0
void QmlMitkTransferFunctionItem::SetDataNode(mitk::DataNode* node, const mitk::BaseRenderer* renderer)
{
    if (node)
    {
        tfpToChange = dynamic_cast<mitk::TransferFunctionProperty*>(node->GetProperty("TransferFunction", renderer));

        if(!tfpToChange)
        {
            if (! dynamic_cast<mitk::Image*>(node->GetData()))
            {
                MITK_WARN << "QmlMitkTransferFunctionItem::SetDataNode called with non-image node";
                //  goto turnOff;
            }

            node->SetProperty("TransferFunction", tfpToChange = mitk::TransferFunctionProperty::New() );
        }

        mitk::TransferFunction::Pointer tf = tfpToChange->GetValue();

        if( mitk::BaseData* data = node->GetData() )
        {
            mitk::SimpleHistogram *h = histogramCache[data];

            this->setMin(h->GetMin());
            this->setMax(h->GetMax());

            this->m_CurrentMin = h->GetMin();
            this->m_CurrentMax = h->GetMax();

            this->m_ColorItem->SetHistogram( h );
            this->m_OpacityItem->SetHistogram( h );
            //    m_ColorTransferFunctionCanvas->SetHistogram( h );

            emit this->sync();
        }

        OnUpdateCanvas();

        return;
    }
}
コード例 #5
0
void QmitkVolumeVisualizationView::CreateQtPartControl(QWidget* parent)
{

  if (!m_Controls)
  {
    m_Controls = new Ui::QmitkVolumeVisualizationViewControls;
    m_Controls->setupUi(parent);

    m_Controls->m_TransferFunctionWidget->SetIntegerMode(true);

    // Fill the tf presets in the generator widget
    std::vector<std::string> names;
    mitk::TransferFunctionInitializer::GetPresetNames(names);
    for (std::vector<std::string>::const_iterator it = names.begin();
         it != names.end(); ++it)
    {
      m_Controls->m_TransferFunctionGeneratorWidget->AddPreset(QString::fromStdString(*it));
    }

    m_Controls->m_RenderMode->addItem("CPU raycast");
    m_Controls->m_RenderMode->addItem("CPU MIP raycast");
    m_Controls->m_RenderMode->addItem("GPU slicing");
// Only with VTK 5.6 or above
#if ((VTK_MAJOR_VERSION > 5) || ((VTK_MAJOR_VERSION==5) && (VTK_MINOR_VERSION>=6) ))
    m_Controls->m_RenderMode->addItem("GPU raycast");
    m_Controls->m_RenderMode->addItem("GPU MIP raycast");
#endif

    connect( m_Controls->m_EnableRenderingCB, SIGNAL( toggled(bool) ),this, SLOT( OnEnableRendering(bool) ));
    connect( m_Controls->m_EnableLOD, SIGNAL( toggled(bool) ),this, SLOT( OnEnableLOD(bool) ));
    connect( m_Controls->m_RenderMode, SIGNAL( activated(int) ),this, SLOT( OnRenderMode(int) ));

    connect( m_Controls->m_TransferFunctionGeneratorWidget, SIGNAL( SignalUpdateCanvas( ) ),   m_Controls->m_TransferFunctionWidget, SLOT( OnUpdateCanvas( ) ) );
    connect( m_Controls->m_TransferFunctionGeneratorWidget, SIGNAL(SignalTransferFunctionModeChanged(int)), SLOT(OnMitkInternalPreset(int)));

    m_Controls->m_EnableRenderingCB->setEnabled(false);
    m_Controls->m_EnableLOD->setEnabled(false);
    m_Controls->m_RenderMode->setEnabled(false);
    m_Controls->m_TransferFunctionWidget->setEnabled(false);
    m_Controls->m_TransferFunctionGeneratorWidget->setEnabled(false);

    m_Controls->m_SelectedImageLabel->hide();
    m_Controls->m_ErrorImageLabel->hide();

  }