void mitk::USCombinedModality::GenerateData()
{
  // update ultrasound image source and get current output then
  m_UltrasoundDevice->Modified();
  m_UltrasoundDevice->Update();
  mitk::Image::Pointer image = m_UltrasoundDevice->GetOutput();
  if ( image.IsNull() || ! image->IsInitialized() ) {
    return;
  }

  // get output and initialize it if it wasn't initialized before
  mitk::Image::Pointer output = this->GetOutput();
  if ( ! output->IsInitialized() ) { output->Initialize(image); }

  mitk::ImageReadAccessor inputReadAccessor(image, image->GetSliceData(0,0,0));
  output->SetSlice(inputReadAccessor.GetData());

  std::string calibrationKey = this->GetIdentifierForCurrentCalibration();
  if ( ! calibrationKey.empty() )
  {
    std::map<std::string, mitk::AffineTransform3D::Pointer>::iterator calibrationIterator
      = m_Calibrations.find(calibrationKey);
    if ( calibrationIterator != m_Calibrations.end())
    {
      // transform image according to callibration if one is set
      // for current configuration of probe and depth
      output->GetGeometry()->SetIndexToWorldTransform(calibrationIterator->second);
    }
  }
}
Beispiel #2
0
void mitk::USDevice::GenerateData()
{
  m_ImageMutex->Lock();

  if (m_Image.IsNull() || !m_Image->IsInitialized())
  {
    m_ImageMutex->Unlock();
    return;
  }

  mitk::Image::Pointer output = this->GetOutput();

  if (!output->IsInitialized() ||
    output->GetDimension(0) != m_Image->GetDimension(0) ||
    output->GetDimension(1) != m_Image->GetDimension(1))
  {
    output->Initialize(m_Image->GetPixelType(), m_Image->GetDimension(),
      m_Image->GetDimensions());
  }

  mitk::ImageReadAccessor inputReadAccessor(m_Image,
    m_Image->GetSliceData(0, 0, 0));
  output->SetSlice(inputReadAccessor.GetData());
  output->SetGeometry(m_Image->GetGeometry());
  m_ImageMutex->Unlock();
};
Beispiel #3
0
void mitk::USDevice::GenerateData()
{
  m_ImageMutex->Lock();

  for (unsigned int i = 0; i < m_ImageVector.size() && i < this->GetNumberOfIndexedOutputs(); ++i)
  {
    auto& image = m_ImageVector[i];
    if (image.IsNull() || !image->IsInitialized())
    {
      // skip image
    }
    else
    {
      mitk::Image::Pointer output = this->GetOutput(i);

      if (!output->IsInitialized() ||
        output->GetDimension(0) != image->GetDimension(0) ||
        output->GetDimension(1) != image->GetDimension(1) ||
        output->GetDimension(2) != image->GetDimension(2) ||
        output->GetPixelType() != image->GetPixelType())
      {
        output->Initialize(image->GetPixelType(), image->GetDimension(),
          image->GetDimensions());
      }

      // copy contents of the given image into the member variable
      mitk::ImageReadAccessor inputReadAccessor(image);
      output->SetImportVolume(inputReadAccessor.GetData());
      output->SetGeometry(image->GetGeometry());
    }
  }  
  m_ImageMutex->Unlock();
};
void mitk::USTelemedImageSource::GetNextRawImage( mitk::Image::Pointer& image)
{
  if ( image.IsNull() ) { image = mitk::Image::New(); }

  //get the actual resolution to check if it changed. We have to do this every time because the geometry takes a few frames to adapt
  Usgfw2Lib::tagImageResolution resolutionInMetersActual;
  m_ImageProperties->GetResolution(&resolutionInMetersActual, 0);
  if (m_OldnXPelsPerUnit != resolutionInMetersActual.nXPelsPerUnit || m_OldnYPelsPerUnit != resolutionInMetersActual.nYPelsPerUnit)
    {
      //we can only update if the image exists and has a geometry
      if (m_Image.IsNotNull() && m_Image->GetGeometry() != nullptr)
     {
        m_OldnXPelsPerUnit = resolutionInMetersActual.nXPelsPerUnit;
        m_OldnYPelsPerUnit = resolutionInMetersActual.nYPelsPerUnit;
        UpdateImageGeometry();
      }

    }
  //now update image
  if ( m_Image->IsInitialized() )
  {
    m_ImageMutex->Lock();

    // copy contents of the given image into the member variable
    image->Initialize(m_Image->GetPixelType(), m_Image->GetDimension(), m_Image->GetDimensions());
    mitk::ImageReadAccessor inputReadAccessor(m_Image, m_Image->GetSliceData(0,0,0));
    image->SetSlice(inputReadAccessor.GetData());
    image->SetGeometry(m_Image->GetGeometry());

    m_ImageMutex->Unlock();
  }

}