Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F752
Modules_MintMITKTesting_mitkLevelWindowReferenceImageTest.cpp
Public
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Authored By
•
kilgus
Nov 16 2011, 4:18 PM
2011-11-16 16:18:05 (UTC+1)
Size
8 KB
Referenced Files
None
Subscribers
None
Modules_MintMITKTesting_mitkLevelWindowReferenceImageTest.cpp
View Options
/*=========================================================================
Program: Medical Imaging & Interaction Toolkit
Language: C++
Date: $Date: 2010-07-30 14:42:32 +0200 (Fr, 30 Jul 2010) $
Version: $Revision: 24988 $
Copyright (c) German Cancer Research Center, Division of Medical and
Biological Informatics. All rights reserved.
See MITKCopyright.txt or http://www.mitk.org/copyright.html for details.
This software is distributed WITHOUT ANY WARRANTY; without even
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE. See the above copyright notices for more information.
=========================================================================*/
#include <mitkImage.h>
#include <mitkImageWriter.h>
#include <mitkTestingMacros.h>
class
mitkLevelWindowReferenceImageTestClass
{
public
:
/**
fill pixels from (startX, startY) to (endX, endY), including the endX,endY row/column
*/
static
void
fillImage
(
signed
short
startX
,
signed
short
endX
,
signed
short
startY
,
signed
short
endY
,
signed
short
value
,
signed
short
*
imagePointer
,
signed
short
column
)
{
signed
short
x
;
signed
short
y
;
for
(
x
=
startX
;
x
<=
endX
;
x
++
)
{
for
(
y
=
startY
;
y
<=
endY
;
y
++
)
imagePointer
[
y
*
column
+
x
]
=
value
;
}
}
static
void
setPoint
(
signed
short
startX
,
signed
short
endX
,
signed
short
startY
,
signed
short
endY
,
signed
short
value
,
signed
short
*
imagePointer
,
signed
short
column
)
{
//put one point with value in the middle of the rectangle
signed
short
centerX
=
(
endX
-
startX
)
/
2
+
startX
;
signed
short
centerY
=
(
endY
-
startY
)
/
2
+
startY
;
imagePointer
[
centerY
*
column
+
centerX
]
=
value
;
}
static
void
createVerticalLine
(
signed
short
startX
,
signed
short
startY
,
int
pixelnumber
,
signed
short
*
p
,
signed
short
column
)
{
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
startX
,
startX
,
startY
,
startY
+
pixelnumber
-
1
,
2000
,
p
,
column
);
}
static
void
createDiagonalLine
(
signed
short
startX
,
signed
short
startY
,
int
pixelnumber
,
signed
short
*
p
,
signed
short
column
)
{
signed
short
i
;
for
(
i
=
0
;
i
<
pixelnumber
;
i
++
)
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
startX
+
i
,
startX
+
i
,
startY
+
i
,
startY
+
i
,
2000
,
p
,
column
);
}
};
int
mitkLevelWindowReferenceImageTest
(
int
/*argc*/
,
char
*
/*argv*/
[])
{
MITK_TEST_BEGIN
(
mitkLevelWindowReferenceImageTest
);
//Create Image out of nowhere
mitk
::
Image
::
Pointer
imgMem
;
mitk
::
PixelType
pt
(
typeid
(
signed
short
));
unsigned
int
dim
[]
=
{
512
,
512
,
1
};
std
::
cout
<<
"Testing creation of Image: "
;
imgMem
=
mitk
::
Image
::
New
();
if
(
imgMem
.
IsNull
())
{
std
::
cout
<<
"[FAILED]"
<<
std
::
endl
;
return
EXIT_FAILURE
;
}
std
::
cout
<<
"[PASSED]"
<<
std
::
endl
;
std
::
cout
<<
"Testing Initialize(const mitk::PixelType& type, unsigned int dimension, unsigned int *dimensions): "
;
imgMem
->
Initialize
(
mitk
::
PixelType
(
typeid
(
signed
short
)),
3
,
dim
);
std
::
cout
<<
"[PASSED]"
<<
std
::
endl
;
mitk
::
Vector3D
spacing
=
(
0.75
,
0.5
,
0.3
);
imgMem
->
GetGeometry
()
->
SetSpacing
(
spacing
);
std
::
cout
<<
"Testing IsInitialized(): "
;
if
(
imgMem
->
IsInitialized
()
==
false
)
{
std
::
cout
<<
"[FAILED]"
<<
std
::
endl
;
return
EXIT_FAILURE
;
}
std
::
cout
<<
"[PASSED]"
<<
std
::
endl
;
std
::
cout
<<
"Testing GetData(): "
;
signed
short
*
p
=
(
signed
short
*
)
imgMem
->
GetData
();
if
(
p
==
NULL
)
{
std
::
cout
<<
"[FAILED]"
<<
std
::
endl
;
return
EXIT_FAILURE
;
}
std
::
cout
<<
"[PASSED]"
<<
std
::
endl
;
std
::
cout
<<
"Filling image: "
;
//fill background with -1000
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
0
,
dim
[
0
]
-
1
,
0
,
dim
[
1
]
-
1
,
-
1000
,
p
,
dim
[
0
]);
//create rectangles with different values
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
0
,
dim
[
1
]
/
10
,
-
800
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
/
10
)
+
3
,
(
dim
[
1
]
*
2
/
10
),
-
500
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
2
/
10
)
+
3
,
(
dim
[
1
]
*
3
/
10
),
-
100
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
3
/
10
)
+
3
,
(
dim
[
1
]
*
4
/
10
),
100
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
4
/
10
)
+
3
,
(
dim
[
1
]
*
5
/
10
),
500
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
5
/
10
)
+
3
,
(
dim
[
1
]
*
6
/
10
),
1000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
6
/
10
)
+
3
,
(
dim
[
1
]
*
7
/
10
),
1500
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
7
/
10
)
+
3
,
(
dim
[
1
]
*
8
/
10
),
2000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
8
/
10
)
+
3
,
(
dim
[
1
]
*
9
/
10
),
2500
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
9
/
10
)
+
3
,
(
dim
[
1
]
-
1
),
3000
,
p
,
dim
[
0
]);
//set one point in the middle of the rectangle
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
0
,
dim
[
1
]
/
10
,
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
/
10
)
+
3
,
(
dim
[
1
]
*
2
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
2
/
10
)
+
3
,
(
dim
[
1
]
*
3
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
3
/
10
)
+
3
,
(
dim
[
1
]
*
4
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
4
/
10
)
+
3
,
(
dim
[
1
]
*
5
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
5
/
10
)
+
3
,
(
dim
[
1
]
*
6
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
6
/
10
)
+
3
,
(
dim
[
1
]
*
7
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
7
/
10
)
+
3
,
(
dim
[
1
]
*
8
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
8
/
10
)
+
3
,
(
dim
[
1
]
*
9
/
10
),
3000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
10
,
(
dim
[
0
]
/
4
),
(
dim
[
1
]
*
9
/
10
)
+
3
,
(
dim
[
1
]
-
1
),
3000
,
p
,
dim
[
0
]);
//create one rectangle with gradient from -1000 to +3000
signed
short
r
;
signed
short
ydirectionCounter
=
0
;
float
min
=
-
1000
;
float
max
=
3000
;
float
pixelSize
=
(
float
)
dim
[
1
]
-
1
;
for
(
r
=
0
;
r
<=
pixelSize
;
r
++
)
{
signed
short
value
=
min
+
((
max
-
min
)
*
((
float
)
r
/
pixelSize
));
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
dim
[
0
]
/
3
,
dim
[
0
]
/
2
,
ydirectionCounter
,
ydirectionCounter
+
1
,
value
,
p
,
dim
[
0
]);
ydirectionCounter
++
;
}
mitkLevelWindowReferenceImageTestClass
::
setPoint
(
dim
[
0
]
/
3
,
dim
[
0
]
/
2
,
(
dim
[
1
]
*
4
/
10
)
+
3
,
(
dim
[
1
]
*
5
/
10
),
3000
,
p
,
dim
[
0
]);
//create one line with pixel number 100 vertical/ length = 0.75 * 100 = 75mm
mitkLevelWindowReferenceImageTestClass
::
createVerticalLine
(
400
,
10
,
100
,
p
,
dim
[
0
]);
//create one line with pixel number 400 vertical/ length = 0.75 * 400 = 300mm
mitkLevelWindowReferenceImageTestClass
::
createVerticalLine
(
440
,
10
,
400
,
p
,
dim
[
0
]);
//create one line with pixel number 180 diagnonal/ length = sqrt((0,75*180)^2 + (0,5*180)^2) = 162,3mm
mitkLevelWindowReferenceImageTestClass
::
createDiagonalLine
(
260
,
260
,
180
,
p
,
dim
[
0
]);
//create one line with pixel number 60 horizontal/ length = 0.5 * 60 = 30mm
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
260
,
260
+
60
-
1
,
500
,
500
,
2000
,
p
,
dim
[
0
]);
//create square - length diagonal = sqrt((90*0.75)^2 + (70*0.5)^2 = 76,0345mm
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
260
,
260
+
70
-
1
,
10
,
10
+
90
-
1
,
2000
,
p
,
dim
[
0
]);
mitkLevelWindowReferenceImageTestClass
::
fillImage
(
261
,
260
+
70
-
2
,
11
,
10
+
90
-
2
,
-
1000
,
p
,
dim
[
0
]);
std
::
cout
<<
"[PASSED]"
<<
std
::
endl
;
std
::
cout
<<
"store image "
;
std
::
string
fileName
=
"/home/maleike/mbifs/lwreference.dcm"
;
try
{
mitk
::
ImageWriter
::
Pointer
writer
=
mitk
::
ImageWriter
::
New
();
writer
->
SetFileName
(
fileName
);
writer
->
SetExtension
(
".dcm"
);
writer
->
SetInput
(
imgMem
);
writer
->
Write
();
}
catch
(
std
::
exception
&
/*e*/
)
{
std
::
cout
<<
"[FAILED]"
<<
std
::
endl
;
return
EXIT_FAILURE
;
}
std
::
cout
<<
"[PASSED]"
<<
std
::
endl
;
MITK_TEST_END
();
return
EXIT_SUCCESS
;
}
File Metadata
Details
Attached
Mime Type
text/x-c++src
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
724
Default Alt Text
Modules_MintMITKTesting_mitkLevelWindowReferenceImageTest.cpp (8 KB)
Attached To
Mode
T10161: Implement automatic tests for rendering classes
Attached
Detach File
Event Timeline
•
kilgus
added a comment.
Nov 16 2011, 4:18 PM
2011-11-16 16:18:05 (UTC+1)
Comment Actions
example of VTK testing methods
Log In to Comment