Project_A_presentation
-
Upload
gleb-orlikov -
Category
Documents
-
view
62 -
download
0
Transcript of Project_A_presentation
Software Engineering Department
Department of Nuclear Medicine Rambam Health Care Campus
Analysis of PHANTOM images in order to determine the reliability of PET/SPECT
cameras
Students: Archil Pirmisashvili, 317881407 Gleb Orlikov, 317478014
Supervisor: Dr. Miri Cohen WeissDate: 13/06/13
Nuclear Medicine
Nuclear medicine is a branch of medical imaging that uses small amounts of radioactive material to diagnose and determine the severity of treat or a variety of diseases.
Nuclear Medicine – PET/CT camera
PET/CT camera QA Test
QA testing of PET camera
The Nuclear Medicine Accreditation Committee Standards
PET Phantom
Phantom image
QA testing of PET camera
Testing Result:
Image including calculated
values such as:minValuemaxValueMeanRatios
The goal
The project goal is to automate PET/SPECT cameras QA procedure in order to reduce time.
Possible Problems
Bad slice: Good slice:
Our application
Application does the following steps:
• Define template (mask).• Choose the “best” slice.• Fit the template to the PET image slice.• Calculate values and generate report.
Find the “best” sliceProblem: Choose “best” slice from all slices, given by the camera
Solution: Walk through all PET Dicom images, adjust contrasts (leave only HOT rods) and find circles using HOUGH algorithm.
Template definition
Problem: Find ROIs on Best PET slice.
Solution: Apply the PHANTOM MASK on the Best PET slice to get ROIs.
Fit the MASK
Problem: Fit the PHANTOM MASK to the PET image slice.
Solution: Scale the MASK and apply (move/rotate) on the image.
Use case diagram
Class diagramPETCameraQA
AcquisitionFOV
«C# class»
Attributes
+ AcquisitionDelayMinutes : Integer
+ AcqusitionTimeMinutes : Integer
+ ActualDoseTime : DateTime
+ ArtefactsComment : String
+ ArtefactsExist : Boolean
+ ColdRod11Visible : Boolean
+ ColdRod12Visible : Boolean
+ ColdRod4Visible : Boolean
+ ColdRod6Visible : Boolean
+ ColdRod7Visible : Boolean
+ ColdRod9Visible : Boolean
+ ContactServiceComments : String
+ ContrastHotVial12MM : Double
+ ContrastHotVial16MM : Double
+ ContrastHotVial25MM : Double
+ ContrastHotVial8MM : Double
+ Cylinder25mmPassed : Boolean
+ DecayFactor : Double
+ EquivalentAcquisitionTime : TimeSpan
+ HotVial12Visible : Boolean
+ HotVial16Visible : Boolean
+ HotVial25Visible : Boolean
+ HotVial8Visible : Boolean
+ Image : Bitmap
+ MeanBackgroundPassed : Boolean
+ MeanSUVAir : Double+ MeanSUVBackground : Double
+ MeanSUVBone : Double
+ MeanSUVWater : Double+ MinSUVAir : Double
+ MinSUVBone : Double
+ MinSUVWater : Double
+ Misregistration : Misregistration
+ MisregistrationComment : String
+ Ratio12mm25mm : Double
+ Ratio12mmBackground : Double+ Ratio16mm25mm : Double
+ Ratio16mmBackground : Double
+ Ratio16to25Passed : Boolean+ Ratio25mmBackground : Double
+ Ratio8mm25mm : Double
+ Ratio8mmBackground : Double
+ RatioAirBone : Double+ RatioWaterBone : Double
+ RemoveFromOperation : Boolean
+ SliceFileName : String+ SliceNumber : Integer
+ StartTime : DateTime
- acqusitionTimeMinutes : Integer
- actualDoseTime : DateTime
- image : Bitmap
- misregistration : Misregistration
- startTime : DateTime
Operations
+ AcquisitionFOV(camera : Cameras, actualDoseTime : DateTime, acquisitionTimeMin : Integer)
Algorithm
«C# class»
Attributes
Operations
+ Algorithm()
+ AngleBetween2Points(pnt1 : PointF, pnt2 : PointF) : Single
+ ArrayToBitmap(slice : Integer[*]) : Bitmap
+ ArrayToImage(slice : Integer[*]) : Image + CenterClosingCT(img : Image<Gray, Byte>) : Image<Gray, Byt...
+ CirclesIntercepting(c1 : CircleF, c2 : CircleF) : Boolean + ClosingImage(img : Image<Gray, Byte>, erodeElement : IntPtr,... + ConvertFromImageCoordinates(img : Image<Gray, Byte>, pnt ...
+ FindAngle(pnt : PointF) : Single + FindBestSlice(slices : List<DicomFile>, mask : CircleMask) : Dico...
+ FindHoughCircles(slice : DicomFile, WindowCenter : Double) : CircleF[*] + FitCircleMask(img : Image<Gray, Byte>, msk : CircleMask) : Circ... + MakeBinaryImage(img : Image<Gray, Byte>, intensityThreshol...
+ PointInCircle(pnt : PointF, center : PointF, radius : Single) : Boolean + SearchPhantomCenter(image : Image<Gray, Byte>, cannyThre... + SearchPhantomRadius(image : Image<Gray, Byte>, cannyThre...
Cameras
«C# enum»«enumeration»
Literals
D690
LS
None
Circle
«C# class»
Attributes
+ Radius : Single
- radius : Single
Operations
+ Circle()
+ Circle(type : ShapeTypes, roiType : ROITypes)
+ Circle(center : PointF, type : ShapeTypes, roiType : ROITypes)
+ Circle(center : PointF)
+ Circle(radius : Single, type : ShapeTypes, roiType : ROITypes)
+ Circle(radius : Single, center : PointF, type : ShapeTypes, roiType : ROITypes)
+ Circle(radius : Single, center : PointF)
+ Circle(radius : Single)
+ Clone() : Shape
+ Rotate(angle : Single)
+ Scale(scaleFactor : Single)
+ Translate(position : PointF)
CircleMask
«C# class»
Attributes
+ MaskName : String
+ Shapes : Shape[*]
Operations
+ AddShape(shape : Shape)
+ CircleMask()
+ CircleMask(fileName : String) + CircleMask(shapes : List<Shape>)
+ CircleMask(stream : Stream) + CircleMask(center : PointF, radius : Single, shapes :...
+ CircleMask(center : PointF, radius : Single)
+ CircleMask(center : PointF)
+ CircleMask(radius : Single)
+ Clone() : Shape
+ LoadFromFile(fileName : String) : CircleMask
+ RemoveShape(shape : Shape)
+ Rotate(angle : Single)+ Save(fileName : String) : Boolean
+ Save(stream : Stream)
+ Scale(scaleFactor : Single)+ ToString() : String
+ Translate(position : PointF)- Load(stream : Stream)
Misregistration
«C# enum»«enumeration»
Literals
Moderate
NoneSevere
QATest
«C# class»
Attributes
+ ActualDifference : Double
+ ActualDoseA : Double
+ ActualDoseB : Double
+ ActualDoseTime : DateTime
+ ActualRatio : Double
+ Camera : Cameras
+ FOV1 : AcquisitionFOV
+ FOV2 : AcquisitionFOV
+ TargetTime : DateTime
+ TestDifference : Double
+ TestDose1 : Double
+ TestDose2 : Double
+ TestDoseTime : DateTime
+ TestRatio : Double
- actualDoseA : Double
- actualDoseB : Double
- actualDoseTime : DateTime
- camera : Cameras
- testDose1 : Double
- testDose2 : Double
- testDoseTime : DateTime
- _FOV1 : AcquisitionFOV
- _FOV2 : AcquisitionFOV
Operations
+ QATest(camera : Cameras)
ROITypes
«C# enum»«enumeration»
Literals
AirBackground
HotA
HotBHotC
HotD
None
Teflon
Water
Shape
«C# class»
Attributes
+ Center : PointF
+ Name : String
+ ROIType : ROITypes
+ Type : ShapeTypes
- center : PointF
- roiType : ROITypes
- type : ShapeTypes
Operations
+ Clone() : Shape
+ Rotate(angle : Single)
+ Scale(scaleFactor : Single)
+ Shape(center : PointF)
+ Shape(type : ShapeTypes, roiType : ROITypes)
+ Shape(center : PointF, type : ShapeTypes, roiType : ROITypes)
+ Shape()
+ ToString() : String
+ Translate(position : PointF)
ShapeTypes
«C# enum»«enumeration»
Literals
OrientationLocation
OrientationRotation
ROI
SliceCircles
«C# class»
Attributes
+ Circles : CircleF[*]
+ Slice : DicomFile
Operations
+ SliceCircles()
+ SliceCircles(slice : DicomFile, circles : CircleF[*])
CircleMask
*
Shapes
*
QATest
*
Camera
1
QATest
*
FOV1
1
QATest
*
FOV2
1
Shape
*
Type
1
Shape *
ROIType
1
AcquisitionFOV
*
Misregistration
1
Class diagram cont.PETCameraQAApplication
Options
«C# struct»
Attributes
+ MasksPath : String
+ Organization : String+ TestsPath : String
Operations
+ Options()
Solution
«C# struct»
Attributes
+ max : Double+ mean : Double+ min : Double
Operations
+ Solution()
About
«C# class»
Attributes
+ AssemblyCompany : String+ AssemblyCopyright : String+ AssemblyDescription : String+ AssemblyProduct : String
+ AssemblyTitle : String+ AssemblyVersion : String- components : IContainer- labelCopyright : Label- labelProductName : Label- labelVersion : Label- logoPictureBox : PictureBox- okButton : Button- tableLayoutPanel : TableLayoutPanel- textBoxDescription : TextBox
Operations
+ About()- InitializeComponent()- logoPictureBox_Click(sender : Object, e : EventArgs)# Dispose(disposing : Boolean)
ChooseSeries
«C# class»
Attributes
+ cancelFlag : Boolean+ lstReturn : List<Di...- allList : List<DicomF...
- btnCancel : Button
- btnOk : Button- comboBox : ComboBox- components : IContainer- groupBox1 : GroupBox- modality : String- pictureBox : PictureBox- trackBar : TrackBar
Operations
+ ChooseSeries(strLi...
- btnCancel_Click(sender : Object, e : EventArgs)- btnOk_Click(sender : Object, e : EventArgs)- comboBox_SelectedIndexChanged(sender : Object, e : EventArgs)- InitializeComponent()- ShowSlice(index : Integer) - SortList(list : List<D...
- trackBar_Scroll(sender : Object, e : EventArgs)# Dispose(disposing : Boolean)
Form1
«C# class»
Attributes
- aboutToolStripMenuItem : ToolStripMenuItem- bestPETSlice : Integer- bestPETSlice3D : Integer- btnCancelTest : Button
- btnCorect1 : Button- btnCorect2 : Button- btnRunTest : Button- components : IContainer- exitToolStripMenuItem : ToolStripMenuItem- fileToolStripMenuItem : ToolStripMenuItem- fittedMask1 : CircleMask- fittedMask2 : CircleMask- generateMaskToolStripMenuItem : ToolStripMenuItem- groupBox1 : GroupBox- groupBox2 : GroupBox
- groupBox3 : GroupBox- helpToolStripMenuItem : ToolStripMenuItem- hToolStripMenuItem : ToolStripMenuItem- imagesPathBox1 : GroupBox- imagesPathTextBox : TextBox- imagesPathTextBox2 : TextBox- label10 : Label- label11 : Label- label2 : Label- label3 : Label- label4 : Label
- label5 : Label- label6 : Label- label7 : Label- label8 : Label- label9 : Label- maskBox : GroupBox
- maskSelectionComboBox : ComboBox- maskToolStripMenuItem : ToolStripMenuItem- menuStrip1 : MenuStrip- pathImagesButton : Button
- pathImagesButton2 : Button- pbMask : PictureBox- pbPETwithMASK : PictureBox- pbPETwithMASK2 : PictureBox
- programOptionsToolStripMenuItem : ToolStripMenuItem- progressBar1 : ProgressBar- settings : Options- sourcePathDialog : FolderBrowserDialog- startTestButton : Button
- tbActDose1 : TextBox- tbActDose2 : TextBox- tbActDoseTime1 : TextBox- tbTestDose1 : TextBox- tbTestDose2 : TextBox- tbTestDoseTime1 : TextBox- testLogGroupBox : GroupBox- testLogListBox : ListBox- testProgressGroupBox : GroupBox- toolStripSeparator1 : ToolStripSeparator
Operations
+ Form1()- aboutToolStripMenuItem_Click(sender : Object, e : EventArgs)- btnCancelTest_Click(sender : Object, e : EventArgs)- btnCorect1_Click(sender : Object, e : EventArgs)- btnCorect2_Click(sender : Object, e : EventArgs)- btnRunTest_Click(sender : Object, e : EventArgs)- DrawMask(img : Bitmap, mask : Shape) : Bitmap- DrawShape(img : Bitmap, shape : Shape) : Bitmap- EnableCorrect1Button(enabled : Boolean)
- EnableCorrect2Button(enabled : Boolean)- EnableLoadImagesButton(enabled : Boolean)- EnableStartTestButton(enabled : Boolean)- FillMasksComboBox()- FitMasks()- Form1_Load(sender : Object, e : EventArgs)- generateMaskToolStripMenuItem_Click(sender : Object, e : EventArgs)- GenerateReport() : Boolean- GetSelectedMask() : CircleMask- hToolStripMenuItem_Click(sender : Object, e : EventArgs)- InitializeComponent()
- LoadImages(path : String, path2 : String)- LoadMask(FileName : String) : Shape- LoadOptions() : Boolean- maskSelectionComboBox_SelectedIndexChanged(sender : Object, e : EventArgs)- OpenSeriesForm(fr : Form, chSer : ChooseSeries) : DialogResult- pathImagesButton2_Click(sender : Object, e : EventArgs)- pathImagesButton_Click(sender : Object, e : EventArgs)- programOptionsToolStripMenuItem_Click(sender : Object, e : EventArgs)- SaveOptions() : Boolean- SetProgressMax(max : Integer)- SetProgressValue(val : Integer)
- ShowPETSlice(index : Integer, mask : CircleMask)- ShowPETSlice2(index : Integer, mask : CircleMask)- SliceSelection() - SortList(list : List<D...
- SortSlices()- startTestButton_Click(sender : Object, e : EventArgs)- ToConsole(message : String)# Dispose(disposing : Boolean)
GenerateResults
«C# class»
Attributes
+ ImageAxial : Bitmap+ ImageAxial3D : Bitmap+ MaxSUV12mm : Double
+ MaxSUV12mm3D : Double+ MaxSUV16mm : Double+ MaxSUV16mm3D : Double+ MaxSUV25mm : Double+ MaxSUV25mm3D : Double+ MaxSUV8mm : Double+ MaxSUV8mm3D : Double+ MeanSUVAir : Double+ MeanSUVAir3D : Double+ MeanSUVBackground : Double+ MeanSUVBackground3D : Double
+ MeanSUVBone : Double+ MeanSUVBone3D : Double+ MeanSUVWater : Double+ MeanSUVWater3D : Double+ MinAir : Double+ MinAir3D : Double+ MinBone : Double+ MinBone3D : Double+ MinWater : Double+ MinWater3D : Double+ SUV12Visible : Boolean
+ SUV12Visible3D : Boolean+ SUV16Visible : Boolean+ SUV16Visible3D : Boolean+ SUV25Visible : Boolean+ SUV25Visible3D : Boolean+ SUV8Visible : Boolean+ SUV8Visible3D : Boolean- maxSUV12mm : Double- maxSUV12mm3D : Double- maxSUV16mm : Double- maxSUV16mm3D : Double
- maxSUV25mm : Double- maxSUV25mm3D : Double- maxSUV8mm : Double- maxSUV8mm3D : Double- meanSUVAir : Double- meanSUVAir3D : Double- meanSUVBackground : Double- meanSUVBackground3D : Double- meanSUVBone : Double- meanSUVBone3D : Double- meanSUVWater : Double
- meanSUVWater3D : Double- minAir : Double- minAir3D : Double- minBone : Double- minBone3D : Double- minWater : Double- minWater3D : Double
Operations
+ GenerateResults(mask : CircleMask, mask3D : CircleMask, img : DicomFile, img3D : DicomFile)
- CalculationPerCircle(circle : Circle, img : DicomFile) : Solution- DrawShape(img : Bitmap, shape : Shape) : Bitmap
Help
«C# class»
Attributes
- components : IContainer- groupBox1 : GroupBox- vScrollBar1 : VScrollBar
Operations
+ Help()- InitializeComponent()# Dispose(disposing : Boolean)
OptionsForm
«C# class»
Attributes
+ MasksPath : String+ Organization : String+ TestsPath : String- cancelButton : Button
- components : IContainer- GeneralGroupBox : GroupBox- MasksFolderBrowserDialog : FolderBrowserDialog- masksGroupBox : GroupBox- masksPathButton : Button- masksPathTextBox : TextBox- organizationLabel : Label- organizationTextBox : TextBox- saveOptionsButton : Button- TestsFolderBrowserDialog : FolderBrowserDialog- testsGroupBox : GroupBox
- testsPathButton : Button- testsPathTextBox : TextBox
Operations
+ OptionsForm()- cancelButton_Click(sender : Object, e : EventArgs)- InitializeComponent()- masksPathButton_Click(sender : Object, e : EventArgs)- OptionsForm_Load(sender : Object, e : EventArgs)- saveOptionsButton_Click(sender : Object, e : EventArgs)
- testsPathButton_Click(sender : Object, e : EventArgs)# Dispose(disposing : Boolean)
Program
«C# class»
Attributes
Operations
- Main()
ReportPDFExporter
«C# class»
Attributes
+ Test : QATest- test : QATest
Operations
+ CreateDocument(test : QATest) : Document+ DefineStyles(document : Document)+ Export(filename : String, showResult : Boolean)
+ ReportPDFExporter(test : QATest)- DefineContentSection(document : Document, test : QATest)
Resources
«C# class»
Attributes
- resourceCulture : CultureInfo- resourceMan : ResourceManager~ browse : Bitmap~ Culture : CultureInfo~ ResourceManager : ResourceManager
Operations
~ Resources()
Settings
«C# class»
Attributes
+ Default : Settings- defaultInstance : Settings
Operations
+ Settings()
SliceFitForm
«C# class»
Attributes
+ bestSlice : Integer+ mask : CircleMask
- btnCancel : Button- btnSave : Button
- components : IContainer- currScaleFac : Single- downBtn : Button- groupBox3 : GroupBox- label1 : Label- label2 : Label- label3 : Label- label4 : Label- lblSliceNum : Label- leftBtn : Button- leftRotateBtn : Button
- pbSliceAndMask : PictureBox- rightBtn : Button- rightRotateBtn : Button- scaleFactor : NumericUpDown- title : String- trackBar : TrackBar- upBtn : Button
Operations
+ SliceFitForm(allList ...
- button1_Click(sender : Object, e : EventArgs)- button2_Click(sender : Object, e : EventArgs)- downBtn_Click_1(sender : Object, e : EventArgs)- DrawMask(img : Bitmap, mask : Shape) : Bitmap- DrawShape(img : Bitmap, shape : Shape) : Bitmap- EnableTrackBar(val : Boolean)- InitializeComponent()- leftBtn_Click(sender : Object, e : EventArgs)- leftRotateBtn_Click(sender : Object, e : EventArgs)- rightBtn_Click_1(sender : Object, e : EventArgs)- rightRotateBtn_Click(sender : Object, e : EventArgs)
- scaleFactor_ValueChanged_1(sender : Object, e : EventArgs)- SetSliceNumberLabel(val : Integer)- SetTrackBarValue(val : Integer)- ShowSlice(index : Integer, mask : CircleMask)- SliceFitForm_Load(sender : Object, e : EventArgs)- trackBar_Scroll(sender : Object, e : EventArgs)- upBtn_Click(sender : Object, e : EventArgs)# Dispose(disposing : Boolean)
TestForm
«C# class»
Attributes
- btnLoadFile : Button- button1 : Button- components : IContainer- i : Integer- label1 : Label- ofdSource : OpenFileDialog- pbImage : PictureBox
Operations
+ TestForm()- btnLoadFile_Click(sender : Object, e : EventArgs)- button1_Click(sender : Object, e : EventArgs)- DrawMask(img : Bitmap, mask : Shape) : Bitmap- DrawShape(img : Bitmap, shape : Shape) : Bitmap- InitializeComponent()- LoadImage()- LoadMask(FileName : String) : Shape - SortList(list : List<D...
# Dispose(disposing : Boolean)
MaskGenerator
DrawStatuses
«C# enum»«enumeration»
Literals
MoveNoneRotateScale
AboutMaskGenerator
«C# class»
Attributes
+ AssemblyCompany : String+ AssemblyCopyright : String+ AssemblyDescription : String+ AssemblyProduct : String+ AssemblyTitle : String+ AssemblyVersion : String
- components : IContainer- labelCompanyName : Label- labelCopyright : Label- labelProductName : Label- labelVersion : Label- logoPictureBox : PictureBox- okButton : Button- tableLayoutPanel : TableLayoutPanel- textBoxDescription : TextBox
Operations
+ AboutMaskGenerator()- InitializeComponent()# Dispose(disposing : Boolean)
Form1
«C# class»
Attributes
- aboutToolStripMenuItem : ToolStripMenuItem- backgroundAngle : Single- backgroundImage : Bitmap- backgroundPos : PointF- backgroundScale : Single- chkOrientation : CheckBox
- chkRoi : CheckBox- cmImage : ContextMenuStrip- components : IContainer- count : Integer- drawStatus : DrawStatuses- exitToolStripMenuItem : ToolStripMenuItem- fileToolStripMenuItem : ToolStripMenuItem- groupBox1 : GroupBox- groupBox2 : GroupBox- helpToolStripMenuItem : ToolStripMenuItem- lastPos : Point
- leftButtonDown : Boolean- loadBackgroundToolStripMenuItem : ToolStripMenuItem- lstShapes : ListBox- MaskShapeName : String- menuStrip1 : MenuStrip- moveToolStripMenuItem : ToolStripMenuItem- ofdBackground : OpenFileDialog- ofdMask : OpenFileDialog- pbImage : ExtendedPictureBox- rotateToolStripMenuItem : ToolStripMenuItem- scaleToolStripMenuItem : ToolStripMenuItem
- sfdMask : SaveFileDialog
- splitContainer1 : SplitContainer- statusStrip1 : StatusStrip- toolStripMenuItem1 : ToolStripMenuItem- toolStripMenuItem2 : ToolStripMenuItem- toolStripMenuItem3 : ToolStripMenuItem- toolStripSeparator1 : ToolStripSeparator- toolStripSeparator2 : ToolStripSeparator- toolStripSeparator4 : ToolStripSeparator
Operations
+ ConvertFromScreenCoordinated(point : PointF) : PointF+ ConvertToScreenCoordinated(point : PointF) : PointF+ Form1()- aboutToolStripMenuItem_Click(sender : Object, e : EventArgs)- chkOrientation_CheckedChanged(sender : Object, e : EventArgs)- chkRoi_CheckedChanged(sender : Object, e : EventArgs)- DrawShape(shape : Shape, color : Color, g : Graphics)- DrawShapes(g : Graphics)- exitToolStripMenuItem_Click(sender : Object, e : EventArgs)
- Form1_KeyDown(sender : Object, e : KeyEventArgs)- Form1_Load(sender : Object, e : EventArgs)- InitializeComponent()- loadBackgroundToolStripMenuItem_Click(sender : Object, e : EventArgs)- LoadShapes(shapes : Shape[*])- LoadShapes()- lstShapes_KeyDown(sender : Object, e : KeyEventArgs)- lstShapes_SelectedIndexChanged(sender : Object, e : EventArgs)- MoveMask(position : PointF, relative : Boolean)- moveToolStripMenuItem_Click(sender : Object, e : EventArgs)- pbImage_MouseDown(sender : Object, e : MouseEventArgs)
- pbImage_MouseMove(sender : Object, e : MouseEventArgs)- pbImage_MouseUp(sender : Object, e : MouseEventArgs)- pbImage_Paint(sender : Object, e : PaintEventArgs)- pbImage_Resize(sender : Object, e : EventArgs)- resetDrawStatuses(status : DrawStatuses)- RotateMask(angle : Single)- rotateToolStripMenuItem_Click(sender : Object, e : EventArgs)- ScaleMask(scaleFactor : Single)- scaleToolStripMenuItem_Click(sender : Object, e : EventArgs)- splitContainer1_KeyDown(sender : Object, e : KeyEventArgs)- toolStripMenuItem1_Click(sender : Object, e : EventArgs)
- toolStripMenuItem2_Click(sender : Object, e : EventArgs)- toolStripMenuItem3_Click(sender : Object, e : EventArgs)# Dispose(disposing : Boolean)
Program
«C# class»
Attributes
Operations
- Main()
Resources
«C# class»
Attributes
- resourceCulture : CultureInfo- resourceMan : ResourceManager~ Culture : CultureInfo~ ResourceManager : ResourceManager
Operations
~ Resources()
Settings
«C# class»
Attributes
+ Default : Settings- defaultInstance : Settings
Operations
+ Settings()
Settings *Default 1
Settings *Default 1
GUI – Main window
GUI – Select series
GUI – Manual MASK adjustment
GUI – Options
GUI – MASK generator
GUI – Help
Testing
• GUI Testing.
• QA Test results testing (comparing received results from the system with the test result made by physicians).
Final Conclusions
• In a work with image processing, you need to pay attention that the image processing result generally are not accurate, and if there is a need in precision you need to try additional techniques in order to double check your results.
• If there are similar images but with different quality you need to adjust the contrast in order to improve your image.
• Our work was based only on two kinds of GE cameras, so the project is oriented for them. Any additions may cause additional changes in algorithms and calculations.
References
[1] J. P. Pluim, J. B. Maintz, and M. A. Viergever, ‘‘Image registration by maximization of combined mutual information and gradient information,’’IEEE Trans. Med. Imaging 19, 809–814 ~2000.
[2] W. M. Wells III, P. Viola, H. Atsumi, S. Nakajima, and R. Kikinis, ‘‘Multi-modal volume registration by maximization of mutual information,’’ Med. Image Anal 1, 35–51 ~1996.
[3] Matthew Y. Wang, Calvin R. Maurer, Jr., J. Michael Fitzpatrick,* Member, IEEE, and Robert J. Maciunas, “IEEE TRANSACTIONS ON BIOMEDICAL ENGINEERING, VOL. 43, NO. 6, JUNE 1996.”
[4] Use of the Hough transformation to detect lines and curves in pictures. Technical note 36. April 1971. By: Richard O.Duda and Peter E. Hart. Artificial intelligence center.
Questions ???