2010_4_Images_3d.pdf
(
819 KB
)
Pobierz
TechnicalUniversityof
Šó
d„
InstituteofElectronics
MedicalElectronicsDivision
ImageProcessingandComputer
Graphics
3D
images
Author:MarekKoci«ski
March2010
1Purpose
To get acquainted with basic manipulation on
3D
raw image data. The
matplotlib
module will be used to create publication quality
gures.
Time
3
45
minutes
2Tasks
1. Open Python interpreter window (Start! Programy! EPD32-6.0.2 ! IDLE)
2. Open new Editor Window (File ! New Window) and write your code into it.
3. Import needed modules, e.g.Image,array. Use construction:
import scipy as sc
frompylab import
import array
import Image
4. Read data from the
ie. Each voxel is 8-bit unsigned integr. The size of the image
(
3D
matrix) is
256
256
256
voxels.
tmpfile = "qinp01_3000_036_3_256 . raw"
f i l e o b j = open ( tmpfile , mode=’ rb ’ )
binvalues = array . array ( ’B’ )
binvalues . read ( f i l e o b j , 256256256)
5. Convert loaded data to
SciPy
array structure:
data = sc . array ( binvalues , dtype=sc . uint8 )
data = sc . reshape ( data , (256 ,256 ,256))
f i l e o b j . close ()
6. Print basic information abou array
print data . s i z e
print data . shape
7. It is possoble toconnectSciPy array structure with Image object of the PIL module.
Select
127
slice in each direction
1
,
2
,
3
, convert to Image structure and show it.
8. Print maximum, minimum and mean of the data:
1
(a)dir.
1
(b)dir
2
(c)dir
3
Figure 1: Selected slice from
3D
image
print data .max()
print data . min ()
print data . mean()
9. Create MIP (Maximum Intensity Projection) of the image in each direction. The
idea of MIP is presented in the Figure 2.
mip1 = Image . fromarray ( data .max(0))
mip2 = Image . fromarray ( data .max(1))
mip3 = Image . fromarray ( data .max(2))
10. Present
4
images on one
gure. It is possible to write this
gue in di
erent
le
formats, like: pdf, eps, png, ps, emf, raw or even vecor graphics svg.
f i g = figure ()
subplot (221)
imshow(im2 , cmap=cm. gray )
colorbar ()
subplot (222)
imshow(im1)
subplot (223)
imshow(mip2 , cmap=cm. gray )
subplot (224)
imshow(mip3)
colorbar ()
show ()
11. Create new Python script. Load
3D
data as in the previous example. Create one
MIP image:
im1 = Image . fromarray ( data .max(0))
2
Figure 2: Four images on one
gure
12. Invert
3D
image and create mIP (minimum Intensity Projection)
im4 = Image . fromarray (d . min (0))
Hint
1
: It is not good idea to use three for loops ;-). But if you decide so, the
Ctrl+zkey sequence may occur to be helpful...
Hint
2
: Change data precision toint16, do invertion, and back touint8.
a = sc . int16 ( data )
. . .
. . . here invert image . . .
(a)dir.
1
(b)dir
2
(c)dir
3
Figure 3: MIP images of
3D
data
3
0
0
240
210
50
50
180
100
100
150
120
150
150
90
60
200
200
30
250
250
0
0
50
100 150 200 250
0
50
100 150 200 250
0
0
240
210
50
50
180
100
100
150
120
150
150
90
60
200
200
30
250
250
0
0
50
100 150 200 250
0
50
100 150 200 250
Figure 4: Four images on one
gure
. . .
d = sc . uint8 ( c )
13. By pressing ’t’ letter toogle between two images showed on one
ugure.
print "Press t . . . :)"
extent = (0 ,1 ,0 ,1)
img1 = imshow(im1 , extent=extent , cmap=cm. gray )
img2 = imshow(im4 , extent=extent , hold=True , cmap=cm. gray )
img2 . set_visible ( False )
def toggle_images ( event ) :
’ toggle the v i s i b l e state of the two images ’
if event . key != ’ t ’ : return
b1 = img1 . get_visible ()
b2 = img2 . get_visible ()
img1 . set_visible (notb1)
img2 . set_visible (notb2)
4
Plik z chomika:
xyzgeo
Inne pliki z tego folderu:
PYTHON.rar
(44230 KB)
Zero to Hero with Python.mp4
(5010186 KB)
Creating Web Sites using Python and Flask.mp4
(1662808 KB)
python_tutorial.pdf
(304 KB)
Google Python Class Day 1 Part 1.mp4
(287659 KB)
Inne foldery tego chomika:
0
algorytmika
artykuly
bioinformatyka (biotech06)
Bioinformatyka (patryska89)
Zgłoś jeśli
naruszono regulamin