NorMIT-nav  2023.01.05-dev+develop.0da12
An IGT application
cxCreateProbeDefinitionFromConfiguration.cpp
Go to the documentation of this file.
1 /*=========================================================================
2 This file is part of CustusX, an Image Guided Therapy Application.
3 
4 Copyright (c) SINTEF Department of Medical Technology.
5 All rights reserved.
6 
7 CustusX is released under a BSD 3-Clause license.
8 
9 See Lisence.txt (https://github.com/SINTEFMedtek/CustusX/blob/master/License.txt) for details.
10 =========================================================================*/
11 
13 #include "cxTypeConversions.h"
14 #include <iostream>
15 
16 namespace cx
17 {
18 
20 {
22 
23  QSize storedSize(basis.mImageWidth, basis.mImageHeight);
24  if (storedSize!=data.getSize())
25  {
26  // wrong size: resample
27  data.resample(storedSize);
28  }
29 
30  config.mLeftEdge = data.getClipRect_p()[0];
31  config.mRightEdge = data.getClipRect_p()[1];
32  config.mTopEdge = data.getClipRect_p()[2];
33  config.mBottomEdge = data.getClipRect_p()[3];
34 
35  config.mOriginCol = data.getOrigin_p()[0];
36  config.mOriginRow = data.getOrigin_p()[1];
37 
38  config.mPixelWidth = data.getSpacing()[0];
39  config.mPixelHeight = data.getSpacing()[1];
40 
41  config.mImageWidth = data.getSize().width();
42  config.mImageHeight = data.getSize().height();
43 
45  {
46  config.mWidthDeg = data.getWidth() / M_PI*180.0;
47  config.mOffset = data.getDepthStart() / data.getSpacing()[1];
48  config.mDepth = (data.getDepthEnd() - data.getDepthStart()) / data.getSpacing()[1];
49  }
50  else
51  {
52  // derived values
53  config.mWidthDeg = 0.0;
54  config.mOffset = 0;
55  config.mDepth = 0;
56  }
57 
59 
60  return config;
61 }
62 
64 {
65  if(config.isEmpty())
66  return ProbeDefinition();
67 
68  ProbeDefinition probeDefinition;
69 
70  if (config.mWidthDeg > 0.1) // Sector probe
71  {
72  double depthStart = config.mOffset * config.mPixelHeight;
73  double depthEnd = config.mDepth * config.mPixelHeight + depthStart;
74 
75  double width = config.mWidthDeg * M_PI / 180.0;//width in radians
76  probeDefinition = ProbeDefinition(ProbeDefinition::tSECTOR);
77  probeDefinition.setSector(depthStart, depthEnd, width);
78  }
79  else //Linear probe
80  {
81  int widtInPixels = config.mRightEdge - config.mLeftEdge;
82  double width = config.mPixelWidth * double(widtInPixels); //width in mm
83  // correct for top/bottom edges if applicable
84  double depthStart = double(config.mTopEdge-config.mOriginRow) * config.mPixelHeight;
85  double depthEnd = double(config.mBottomEdge-config.mOriginRow) * config.mPixelHeight;
86 
87  probeDefinition = ProbeDefinition(ProbeDefinition::tLINEAR);
88  probeDefinition.setSector(depthStart, depthEnd, width);
89  }
90 
91  probeDefinition.setSpacing(Vector3D(config.mPixelWidth, config.mPixelHeight, 1));
92  probeDefinition.setSize(QSize(config.mImageWidth, config.mImageHeight));
93  probeDefinition.setOrigin_p(Vector3D(config.mOriginCol, config.mOriginRow, 0));
94  probeDefinition.setClipRect_p(DoubleBoundingBox3D(config.mLeftEdge,config.mRightEdge,config.mTopEdge,config.mBottomEdge,0,0));
95  probeDefinition.setTemporalCalibration(config.mTemporalCalibration);
96 
97  return probeDefinition;
98 }
99 
100 } // namespace cx
ProbeXmlConfigParser::Configuration::mDepth
double mDepth
depth
Definition: ProbeXmlConfigParser.h:45
cx::ProbeDefinition::getOrigin_p
Vector3D getOrigin_p() const
Definition: cxProbeDefinition.cpp:241
cx::ProbeDefinition
Definition of characteristics for an Ultrasound Probe Sector.
Definition: cxProbeDefinition.h:101
ProbeXmlConfigParser::Configuration::mLeftEdge
int mLeftEdge
LeftEdge.
Definition: ProbeXmlConfigParser.h:51
ProbeXmlConfigParser::Configuration::isEmpty
bool isEmpty()
Definition: ProbeXmlConfigParser.h:85
ProbeXmlConfigParser::Configuration::mImageHeight
int mImageHeight
Height of the used image format (y dim)
Definition: ProbeXmlConfigParser.h:43
cx::DoubleBoundingBox3D
Representation of a floating-point bounding box in 3D. The data are stored as {xmin,...
Definition: cxBoundingBox3D.h:63
cx::ProbeDefinition::tLINEAR
@ tLINEAR
US beam is emitted straight forward.
Definition: cxProbeDefinition.h:106
cx::ProbeDefinition::getWidth
double getWidth() const
Definition: cxProbeDefinition.cpp:139
cx::createProbeDefinitionFromConfiguration
ProbeDefinition createProbeDefinitionFromConfiguration(ProbeXmlConfigParser::Configuration config)
Definition: cxCreateProbeDefinitionFromConfiguration.cpp:63
cx::ProbeDefinition::getDepthEnd
double getDepthEnd() const
Definition: cxProbeDefinition.cpp:134
cx
Namespace for all CustusX production code.
Definition: cx_dev_group_definitions.h:13
ProbeXmlConfigParser::Configuration::mRightEdge
int mRightEdge
RightEdge.
Definition: ProbeXmlConfigParser.h:52
cxCreateProbeDefinitionFromConfiguration.h
cx::ProbeDefinition::getSize
QSize getSize() const
Definition: cxProbeDefinition.cpp:256
ProbeXmlConfigParser::Configuration::mWidthDeg
double mWidthDeg
width in degrees
Definition: ProbeXmlConfigParser.h:44
cx::ProbeDefinition::setSector
void setSector(double depthStart, double depthEnd, double width, double centerOffset=0)
Definition: cxProbeDefinition.cpp:116
cx::createConfigurationFromProbeDefinition
ProbeXmlConfigParser::Configuration createConfigurationFromProbeDefinition(ProbeXmlConfigParser::Configuration basis, ProbeDefinition data)
Definition: cxCreateProbeDefinitionFromConfiguration.cpp:19
cx::ProbeDefinition::setSpacing
void setSpacing(Vector3D spacing)
Definition: cxProbeDefinition.cpp:266
ProbeXmlConfigParser::Configuration::mOffset
double mOffset
Offset.
Definition: ProbeXmlConfigParser.h:46
ProbeXmlConfigParser::Configuration::mImageWidth
int mImageWidth
Width of the used image format (x dim)
Definition: ProbeXmlConfigParser.h:42
cx::ProbeDefinition::tSECTOR
@ tSECTOR
US beam is emitted radially in a flat cone.
Definition: cxProbeDefinition.h:105
cx::ProbeDefinition::getDepthStart
double getDepthStart() const
Definition: cxProbeDefinition.cpp:129
cx::ProbeDefinition::setOrigin_p
void setOrigin_p(Vector3D origin_p)
Definition: cxProbeDefinition.cpp:261
cx::ProbeDefinition::resample
void resample(QSize mSize)
Set a new image size. Resample all other parameters to match this new image size, keeping sizes in mi...
Definition: cxProbeDefinition.cpp:154
ProbeXmlConfigParser::Configuration::mTemporalCalibration
double mTemporalCalibration
delay in timestamping in grabber source relative to master clock.
Definition: ProbeXmlConfigParser.h:59
cxTypeConversions.h
cx::ProbeDefinition::setClipRect_p
void setClipRect_p(DoubleBoundingBox3D clipRect_p)
Definition: cxProbeDefinition.cpp:271
cx::ProbeDefinition::getType
TYPE getType() const
Definition: cxProbeDefinition.cpp:124
cx::ProbeDefinition::setTemporalCalibration
void setTemporalCalibration(double value)
Definition: cxProbeDefinition.cpp:106
cx::ProbeDefinition::getSpacing
Vector3D getSpacing() const
Definition: cxProbeDefinition.cpp:246
ProbeXmlConfigParser::Configuration::mPixelWidth
double mPixelWidth
Pixel width.
Definition: ProbeXmlConfigParser.h:55
M_PI
#define M_PI
Definition: cxReconstructParams.cpp:25
cx::ProbeDefinition::getClipRect_p
DoubleBoundingBox3D getClipRect_p() const
Definition: cxProbeDefinition.cpp:251
cx::ProbeDefinition::getTemporalCalibration
double getTemporalCalibration() const
Definition: cxProbeDefinition.cpp:144
ProbeXmlConfigParser::Configuration
< a easy-to-work-with struct for a specific xml configuration
Definition: ProbeXmlConfigParser.h:35
ProbeXmlConfigParser::Configuration::mPixelHeight
double mPixelHeight
Pixel height.
Definition: ProbeXmlConfigParser.h:56
cx::Vector3D
Eigen::Vector3d Vector3D
Vector3D is a representation of a point or vector in 3D.
Definition: cxVector3D.h:42
ProbeXmlConfigParser::Configuration::mTopEdge
int mTopEdge
TopEdge.
Definition: ProbeXmlConfigParser.h:53
ProbeXmlConfigParser::Configuration::mBottomEdge
int mBottomEdge
BottomEdge.
Definition: ProbeXmlConfigParser.h:54
cx::ProbeDefinition::setSize
void setSize(QSize size)
Definition: cxProbeDefinition.cpp:276
ProbeXmlConfigParser::Configuration::mOriginCol
double mOriginCol
Origin.Col.
Definition: ProbeXmlConfigParser.h:47
ProbeXmlConfigParser::Configuration::mOriginRow
double mOriginRow
Origin.Row.
Definition: ProbeXmlConfigParser.h:48