Skip to content

Commit 3b264bb

Browse files
committedMay 14, 2017
dicom brain
1 parent 0d9f73d commit 3b264bb

File tree

2 files changed

+292
-0
lines changed

2 files changed

+292
-0
lines changed
 

‎README.md

+1
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,4 @@ Currently we have the Python examples:
1414

1515
Jupyter notebooks:
1616
- *ReadImage.ipynb*: An example on how to read an image using SimpleITK.
17+
- *ReadDicomBrain.ipynb*: An example how to read a DICOM series using SimpleITK.

‎notebooks/ReadDicomBrain.ipynb

+291
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,291 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "markdown",
5+
"metadata": {},
6+
"source": [
7+
"In this notebook we will read and display a CT scan of the brain, of the publically available MIDAS database."
8+
]
9+
},
10+
{
11+
"cell_type": "code",
12+
"execution_count": 30,
13+
"metadata": {
14+
"collapsed": true
15+
},
16+
"outputs": [],
17+
"source": [
18+
"import urllib\n",
19+
"import SimpleITK as sitk\n",
20+
"import tarfile\n",
21+
"import os\n",
22+
"import matplotlib.pyplot as plt\n",
23+
"%matplotlib inline"
24+
]
25+
},
26+
{
27+
"cell_type": "markdown",
28+
"metadata": {},
29+
"source": [
30+
"First, we download the brain scan. This can take a while, the file is about 56MB."
31+
]
32+
},
33+
{
34+
"cell_type": "code",
35+
"execution_count": 6,
36+
"metadata": {
37+
"collapsed": true
38+
},
39+
"outputs": [],
40+
"source": [
41+
"# Can take a while, the file is about 56MB\n",
42+
"if not os.path.exists('PublicBrain001.anonymized.dcm.tgz'):\n",
43+
" publicbrain = urllib.URLopener()\n",
44+
" publicbrain.retrieve('http://www.insight-journal.org/midas/bitstream/view/375', \n",
45+
" 'PublicBrain001.anonymized.dcm.tgz')"
46+
]
47+
},
48+
{
49+
"cell_type": "markdown",
50+
"metadata": {},
51+
"source": [
52+
"Then we unpack the file, the folder is extracted to `anonymized`."
53+
]
54+
},
55+
{
56+
"cell_type": "code",
57+
"execution_count": 10,
58+
"metadata": {},
59+
"outputs": [],
60+
"source": [
61+
"if not os.path.exists('./anonymized'):\n",
62+
" tar = tarfile.open('PublicBrain001.anonymized.dcm.tgz')\n",
63+
" tar.extractall()\n",
64+
" tar.close()"
65+
]
66+
},
67+
{
68+
"cell_type": "markdown",
69+
"metadata": {},
70+
"source": [
71+
"The collection of files we get are DICOM files, each one of those represents a slice in the final 3D volume. In the examples folder there is a `dicom_wrapper.py` which provides a wrapper to SimpleITK, which we repeat here for convenience."
72+
]
73+
},
74+
{
75+
"cell_type": "code",
76+
"execution_count": 22,
77+
"metadata": {
78+
"collapsed": true
79+
},
80+
"outputs": [],
81+
"source": [
82+
"def read_dicom_series(folder):\n",
83+
" \"\"\"Read a folder with DICOM files and outputs a SimpleITK image.\n",
84+
" Assumes that there is only one DICOM series in the folder.\n",
85+
"\n",
86+
" Parameters\n",
87+
" ----------\n",
88+
" folder : string\n",
89+
" Full path to folder with dicom files.\n",
90+
"\n",
91+
" Returns\n",
92+
" -------\n",
93+
" SimpleITK image.\n",
94+
" \"\"\"\n",
95+
" reader = sitk.ImageSeriesReader()\n",
96+
" series_ids = reader.GetGDCMSeriesIDs(folder.encode('ascii'))\n",
97+
" # There are multiple series_ids in the folder, but after experimenting a bit, \n",
98+
" # we pick the second one, this is [1] below.\n",
99+
" filenames = reader.GetGDCMSeriesFileNames(folder, series_ids[1],\n",
100+
" False, # useSeriesDetails\n",
101+
" False, # recursive\n",
102+
" True) # load sequences\n",
103+
" reader.SetFileNames(filenames)\n",
104+
" image = reader.Execute()\n",
105+
"\n",
106+
" return image\n"
107+
]
108+
},
109+
{
110+
"cell_type": "code",
111+
"execution_count": 25,
112+
"metadata": {},
113+
"outputs": [],
114+
"source": [
115+
"image = read_dicom_series('./anonymized/')"
116+
]
117+
},
118+
{
119+
"cell_type": "markdown",
120+
"metadata": {},
121+
"source": [
122+
"So, let us see what we have loaded."
123+
]
124+
},
125+
{
126+
"cell_type": "code",
127+
"execution_count": 26,
128+
"metadata": {},
129+
"outputs": [
130+
{
131+
"data": {
132+
"text/plain": [
133+
"(512, 512, 91)"
134+
]
135+
},
136+
"execution_count": 26,
137+
"metadata": {},
138+
"output_type": "execute_result"
139+
}
140+
],
141+
"source": [
142+
"image.GetSize()"
143+
]
144+
},
145+
{
146+
"cell_type": "markdown",
147+
"metadata": {},
148+
"source": [
149+
"An image with an in-plane resolution of 512 x 512 with 91 slices. What about the 'real' spacing? What is the size one pixel, or voxel, represents?\n"
150+
]
151+
},
152+
{
153+
"cell_type": "code",
154+
"execution_count": 27,
155+
"metadata": {},
156+
"outputs": [
157+
{
158+
"data": {
159+
"text/plain": [
160+
"(0.4199219, 0.4199219, 1.25)"
161+
]
162+
},
163+
"execution_count": 27,
164+
"metadata": {},
165+
"output_type": "execute_result"
166+
}
167+
],
168+
"source": [
169+
"image.GetSpacing()"
170+
]
171+
},
172+
{
173+
"cell_type": "markdown",
174+
"metadata": {},
175+
"source": [
176+
"So about 0.42x0.42mm in-plane and a slice thichness of 1.25mm."
177+
]
178+
},
179+
{
180+
"cell_type": "markdown",
181+
"metadata": {},
182+
"source": [
183+
"To be able to plot the image with `matplotlib`, we convert it to a `numpy` array, for which we can use SimpleITK's `GetArrayFromImage` function."
184+
]
185+
},
186+
{
187+
"cell_type": "code",
188+
"execution_count": 28,
189+
"metadata": {
190+
"collapsed": true
191+
},
192+
"outputs": [],
193+
"source": [
194+
"array = sitk.GetArrayFromImage(image)"
195+
]
196+
},
197+
{
198+
"cell_type": "markdown",
199+
"metadata": {},
200+
"source": [
201+
"Be careful, SimpleITK represents the axis in world-order, where the last axis represents depth, in image-order, this is depth first."
202+
]
203+
},
204+
{
205+
"cell_type": "code",
206+
"execution_count": 29,
207+
"metadata": {},
208+
"outputs": [
209+
{
210+
"data": {
211+
"text/plain": [
212+
"(91, 512, 512)"
213+
]
214+
},
215+
"execution_count": 29,
216+
"metadata": {},
217+
"output_type": "execute_result"
218+
}
219+
],
220+
"source": [
221+
"array.shape"
222+
]
223+
},
224+
{
225+
"cell_type": "code",
226+
"execution_count": 41,
227+
"metadata": {},
228+
"outputs": [
229+
{
230+
"ename": "AttributeError",
231+
"evalue": "'numpy.ndarray' object has no attribute 'imshow'",
232+
"output_type": "error",
233+
"traceback": [
234+
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
235+
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
236+
"\u001b[0;32m<ipython-input-41-f4b5bc37d95f>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mfig\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0maxs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msubplots\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m4\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m5\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m15\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m12\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrange\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m20\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0maxs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mimshow\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcmap\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'gray'\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0maxs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_title\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'slice {}'\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
237+
"\u001b[0;31mAttributeError\u001b[0m: 'numpy.ndarray' object has no attribute 'imshow'"
238+
]
239+
},
240+
{
241+
"data": {
242+
"image/png": "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\nHQAAwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1\nAAAAA7PUAQAADGyppa6qzlbVs1W1UVX37nDej1dVV9XadCPC7mmW0WiW0WiWEemWVbVwqauqa5Lc\nn+TWJGeS3FlVZ65y3vcl+VdJPjP1kLAbmmU0mmU0mmVEumWVLfNO3S1JNrr7Yne/mOTBJOeuct6/\nSfILSf50wvlgLzTLaDTLaDTLiHTLylpmqbs+yXNz1y/Njn1bVb01yQ3d/T8mnA32SrOMRrOMRrOM\nSLesrH3/opSq+p4k/yHJzyxx7t1VtV5V61euXNnvQ8OeaJbRaJbR7KbZ2fm65ch5rWVkyyx1l5Pc\nMHf91OzYy74vyd9I8ttV9YdJ3p7kwtU+WNrd57t7rbvXTp48ufepYWeaZTSaZTSTNZvolkPjtZaV\ntcxS90SS01V1U1Vdm+SOJBdevrG7v9nd13X3jd19Y5LHk9ze3esHMjEspllGo1lGo1lGpFtW1sKl\nrrtfSnJPkkeTfDHJQ939dFXdV1W3H/SAsFuaZTSaZTSaZUS6ZZWdWOak7n4kySNbjn1om3Pfsf+x\nYH80y2g0y2g0y4h0y6ra9y9KAQAA4OhY6gAAAAZmqQMAABiYpQ4AAGBgljoAAICBWeoAAAAGZqkD\nAAAYmKUOAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAAYGCWOgAAgIFZ6gAAAAZmqQMAABiYpQ4A\nAGBgljoAAICBWeoAAAAGZqkDAAAYmKUOAABgYEstdVV1tqqeraqNqrr3Krf/dFU9U1VPVdVvVdWb\nph8VlqdZRqNZRqNZRqRbVtXCpa6qrklyf5Jbk5xJcmdVndly2meTrHX330zycJJ/P/WgsCzNMhrN\nMhrNMiLdssqWeafuliQb3X2xu19M8mCSc/MndPdj3f2t2dXHk5yadkzYFc0yGs0yGs0yIt2yspZZ\n6q5P8tzc9UuzY9u5K8lvXO2Gqrq7qtarav3KlSvLTwm7o1lGo1lGM1mziW45NF5rWVmT/qKUqnp3\nkrUkv3i127v7fHevdffayZMnp3xo2BPNMhrNMppFzSa65fjxWstoTixxzuUkN8xdPzU79gpV9a4k\nH0zyo939wjTjwZ5oltFoltFolhHplpW1zDt1TyQ5XVU3VdW1Se5IcmH+hKp6S5L/lOT27v7q9GPC\nrmiW0WiW0WiWEemWlbVwqevul5Lck+TRJF9M8lB3P11V91XV7bPTfjHJX07y61X1uaq6sM3dwYHT\nLKPRLKPRLCPSLatsmR+/THc/kuSRLcc+NHf5XRPPBfuiWUajWUajWUakW1bVpL8oBQAAgMNlqQMA\nABiYpQ4AAGBgljoAAICBWeoAAAAGZqkDAAAYmKUOAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAA\nYGCWOgAAgIFZ6gAAAAZmqQMAABiYpQ4AAGBgljoAAICBWeoAAAAGZqkDAAAYmKUOAABgYEstdVV1\ntqqeraqNqrr3Kre/qqo+Obv9M1V149SDwm5oltFoltFolhHpllW1cKmrqmuS3J/k1iRnktxZVWe2\nnHZXkm90919N8ktJfmHqQWFZmmU0mmU0mmVEumWVLfNO3S1JNrr7Yne/mOTBJOe2nHMuya/OLj+c\n5J1VVdONCbuiWUajWUajWUakW1bWiSXOuT7Jc3PXLyX5W9ud090vVdU3k/xgkq/Nn1RVdye5e3b1\nhar6wl6GPiDXZcu8R8w8O/trO9ym2aNhnsW261azR+e4zXTc5jnwZhPd7pJ5dub/Hxy//03Ms7Od\nml3aMkvdZLr7fJLzSVJV6929dpiPvxPz7Ow4znMYj6PZ5ZlnscPoVrO7c9xmOo7zHMbj6HZ55tmZ\nZs2zyHGcZ4r7WebHLy8nuWHu+qnZsaueU1Unkrw2yfNTDAh7oFlGo1lGo1lGpFtW1jJL3RNJTlfV\nTVV1bZI7klzYcs6FJO+ZXf7HST7V3T3dmLArmmU0mmU0mmVEumVlLfzxy9nPE9+T5NEk1yT5WHc/\nXVX3JVnv7gtJ/kuSX6uqjSRfz+YfkkXO72Pug2CenQ0zj2aPjHkWu+pMmj1Sx22mIeY5wGa3fcwj\nZJ6dDTOP19ojY56dTTJP+csHAACAcS31j48DAABwPFnqAAAABnYgS11Vna2qZ6tqo6ruvcrtr6qq\nT85u/0xV3Th328/Ojj9bVT92SPP8dFU9U1VPVdVvVdWb5m7786r63Oxr64dpD2qe91bVlbnH/Wdz\nt72nqn5/9vWerd97QPP80twsX6qqP5m7bdLnp6o+VlVf3e7fe6lNH5nN+lRVvXXutj0/N5rd9zzf\ntc3O7vPQu9XsvufRrGY1u795NKtZze48z+E2292TfmXzg6d/kOTNSa5N8ntJzmw5518m+ejs8h1J\nPjm7fGZ2/quS3DS7n2sOYZ6/m+QvzS7/i5fnmV3/v0fw/Lw3yX+8yvf+QJKLs/++fnb59Qc9z5bz\nP5DNDxYf1PPzd5K8NckXtrn9tiS/kaSSvD3JZ/b73GhWs6N1q1nNalazmtWsZjU7/3UQ79TdkmSj\nuy9294tJHkxybss555L86uzyw0neWVU1O/5gd7/Q3V9OsjG7vwOdp7sf6+5vza4+ns1/t+SgLPP8\nbOfHkvxmd3+9u7+R5DeTnD3kee5M8ol9Pua2uvvT2fxtU9s5l+TjvenxJK+rqjdkf8+NZvc5zw5W\nvtnkSLrV7D7n2YFmN2lWs5rV7L7m2YFmN03a7EEsddcneW7u+qXZsaue090vJflmkh9c8nsPYp55\nd2Vza37Zq6tqvaoer6p/uM9ZdjPPj8/ein24ql7+hzKP9PmZvY1/U5JPzR2e+vlZZLt59/PcaHaa\neTS7vam71ew082h2e5p9Jc1qVrN7m0ez25u02YX/Tt13k6p6d5K1JD86d/hN3X25qt6c5FNV9fnu\n/oMDHuW/J/lEd79QVf88m38L9PcO+DGXcUeSh7v7z+eOHcXzw4xmF9LsMaPZhTR7zGh2Ic0eM5pd\naCWbPYh36i4nuWHu+qnZsaueU1Unkrw2yfNLfu9BzJOqeleSDya5vbtfePl4d1+e/fdikt9O8paD\nnqe7n5+b4T8neduy33sQ88y5I1veqj6A52eR7ebdz3Oj2X3Oo9mFpu5Ws/ucR7MLaTaaXfI+NRvN\nXm0ezS40bbM9/YcCT2TzA3035S8+qPjDW855f175wdKHZpd/OK/8YOnF7P+DpcvM85Zsfrjy9Jbj\nr0/yqtnl65L8fnb40OWE87xh7vI/SvJ4/8UHJ788m+v1s8s/cNDzzM67OckfZvYP1h/U8zO7rxuz\n/YdK/0Fe+aHS393vc6NZze632cPuVrOa1axmNatZzWr2Ffc3xcBXGfK2JF+ahfXB2bH7svm3Bkny\n6iS/ns0Pjv5ukjfPfe8HZ9/3bJJbD2me/5nk/yT53Ozrwuz4307y+VkYn09y1yHN82+TPD173MeS\n3Dz3vf909rxtJHnfYcwzu/7hJP9uy/dN/vxk829OvpLkz7L5M8R3JfmpJD81u72S3D+b9fNJ1qZ4\nbjSr2dG61axmNatZzWpWs5p9+atm3wgAAMCADuQfHwcAAOBwWOoAAAAGZqkDAAAYmKUOAABgYJY6\nAACAgVnqAAAABmapAwAAGJilDgAAYGALl7qq+lhVfbWqvrDN7VVVH6mqjap6qqreOv2YsDzNMiLd\nMhrNMhrNssqWeafugSRnd7j91iSnZ193J/mV/Y8F+/JANMt4HohuGcsD0SxjeSCaZUUtXOq6+9NJ\nvr7DKeeSfLw3PZ7kdVX1hqkGhN3SLCPSLaPRLKPRLKtsis/UXZ/kubnrl2bH4LjSLCPSLaPRLKPR\nLMM6cZgPVlV3Z/Pt7LzmNa95280333yYD88KefLJJ7/W3ScP+nE0y5QOo1vNMiWvtYxGs4xmqman\nWOouJ7lh7vqp2bHv0N3nk5xPkrW1tV5fX5/g4fluVFV/tI9v1yxH4jC61SxT8lrLaDTLaPbZ7LdN\n8eOXF5L8xOw3Br09yTe7+ysT3C8cFM0yIt0yGs0yGs0yrIXv1FXVJ5K8I8l1VXUpyc8n+d4k6e6P\nJnkkyW1JNpJ8K8n7DmpYWIZmGZFuGY1mGY1mWWULl7ruvnPB7Z3k/ZNNBPukWUakW0ajWUajWVbZ\nFD9+CQAAwBGx1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAA\nA7PUAQAADMxSBwAAMDBLHQAAwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAM\nzFIHAAAwMEsdAADAwJZa6qrqbFU9W1UbVXXvVW5/Y1U9VlWfraqnquq26UeF5WmW0WiW0WiWEemW\nVbVwqauqa5Lcn+TWJGeS3FlVZ7ac9nNJHurutyS5I8kvTz0oLEuzjEazjEazjEi3rLJl3qm7JclG\nd1/s7heTPJjk3JZzOsn3zy6/NskfTzci7JpmGY1mGY1mGZFuWVnLLHXXJ3lu7vql2bF5H07y7qq6\nlOSRJB+42h1V1d1VtV5V61euXNnDuLAUzTIazTKayZpNdMuh8VrLyprqF6XcmeSB7j6V5LYkv1ZV\n33Hf3X2+u9e6e+3kyZMTPTTsiWYZjWYZzVLNJrrlWPFay5CWWeouJ7lh7vqp2bF5dyV5KEm6+3eS\nvDrJdVMMCHugWUajWUajWUakW1bWMkvdE0lOV9VNVXVtNj80emHLOf87yTuTpKr+ejb/AHgvmqOi\nWUajWUajWUakW1bWwqWuu19Kck+SR5N8MZu/Eejpqrqvqm6fnfYzSX6yqn4vySeSvLe7+6CGhp1o\nltFoltFolhHpllV2YpmTuvuRbH5YdP7Yh+YuP5PkR6YdDfZOs4xGs4xGs4xIt6yqqX5RCgAAAEfA\nUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAAA7PUAQAADMxSBwAAMDBL\nHQAAwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwJZa\n6qrqbFU9W1UbVXXvNuf8k6p6pqqerqr/Ou2YsDuaZTSaZTSaZUS6ZVWdWHRCVV2T5P4kfz/JpSRP\nVNWF7n5m7pzTSX42yY909zeq6q8c1MCwiGYZjWYZjWYZkW5ZZcu8U3dLko3uvtjdLyZ5MMm5Lef8\nZJL7u/sbSdLdX512TNgVzTIazTIazTIi3bKyllnqrk/y3Nz1S7Nj834oyQ9V1f+qqser6uzV7qiq\n7q6q9apav3Llyt4mhsU0y2g0y2gmazbRLYfGay0ra6pflHIiyekk70hyZ5L/r6pet/Wk7j7f3Wvd\nvXby5MmJHhr2RLOMRrOMZqlmE91yrHitZUjLLHWXk9wwd/3U7Ni8S0kudPefdfeXk3wpm38g4Cho\nltFoltFolhHplpW1zFL3RJLTVXVTVV2b5I4kF7ac89+y+TcaqarrsvnW9cUJ54Td0Cyj0Syj0Swj\n0i0ra+FS190vJbknyaNJvpjkoe5+uqruq6rbZ6c9muT5qnomyWNJ/nV3P39QQ8NONMtoNMtoNMuI\ndMsqq+4+kgdeW1vr9fX1I3lsxldVT3b32mE+pmbZr8PuVrPsl9daRqNZRjNVs1P9ohQAAACOgKUO\nAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAAYGCWOgAAgIFZ6gAAAAZmqQMAABiYpQ4AAGBgljoA\nAICBWeoAAAAGZqkDAAAYmKUOAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAAYGCWOgAAgIEttdRV\n1dmqeraqNqrq3h3O+/Gq6qpam25E2D3NMhrNMhrNMiLdsqoWLnVVdU2S+5PcmuRMkjur6sxVzvu+\nJP8qyWemHhJ2Q7OMRrOMRrOMSLessmXeqbslyUZ3X+zuF5M8mOTcVc77N0l+IcmfTjgf7IVmGY1m\nGY1mGZFuWVnLLHXXJ3lu7vql2bFvq6q3Jrmhu//HhLPBXmmW0WiW0WiWEemWlbXvX5RSVd+T5D8k\n+Zklzr27qtarav3KlSv7fWjYE80yGs0ymt00Oztftxw5r7WMbJml7nKSG+aun5ode9n3JfkbSX67\nqv4wyduTXLjaB0u7+3x3r3X32smTJ/c+NexMs4xGs4xmsmYT3XJovNayspZZ6p5Icrqqbqqqa5Pc\nkeTCyzd29ze7+7ruvrG7b0zyeJLbu3v9QCaGxTTLaDTLaDTLiHTLylq41HX3S0nuSfJoki8meai7\nn66q+6rq9oMeEHZLs4xGs4xGs4xIt6yyE8uc1N2PJHlky7EPbXPuO/Y/FuyPZhmNZhmNZhmRbllV\n+/5FKQAAABwdSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAAA7PUAQAADMxSBwAA\nMDBLHQAAwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADA\nwCx1AAAAA7PUAQAADGyppa6qzlbVs1W1UVX3XuX2n66qZ6rqqar6rap60/SjwvI0y2g0y2g0y4h0\ny6pauNRV1TVJ7k9ya5IzSe6sqjNbTvtskrXu/ptJHk7y76ceFJalWUajWUajWUakW1bZMu/U3ZJk\no7svdveLSR5Mcm7+hO5+rLu/Nbv6eJJT044Ju6JZRqNZRqNZRqRbVtYyS931SZ6bu35pdmw7dyX5\njavdUFV3V9V6Va1fuXJl+SlhdzTLaDTLaCZrNtEth8ZrLStr0l+UUlXvTrKW5Bevdnt3n+/ute5e\nO3ny5JQPDXuiWUajWUazqNlEtxw/XmsZzYklzrmc5Ia566dmx16hqt6V5INJfrS7X5hmPNgTzTIa\nzTIazTIi3bKylnmn7okkp6vqpqq6NskdSS7Mn1BVb0nyn5Lc3t1fnX5M2BXNMhrNMhrNMiLdsrIW\nLnXd/VKSe5I8muSLSR7q7qer6r6qun122i8m+ctJfr2qPldVF7a5OzhwmmU0mmU0mmVEumWVLfPj\nl+nuR5I8suXYh+Yuv2viuWBfNMtoNMtoNMuIdMuqmvQXpQAAAHC4LHUAAAADs9QBAAAMzFIHAAAw\nMEsdAADAwCx1AAAAA7PUAQAADMxSBwAAMDBLHQAAwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDA\nLHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAAA7PUAQAADGyppa6qzlbVs1W1UVX3XuX2V1XV\nJ2e3f6aqbpx6UNgNzTIazTIazTIi3bKqFi51VXVNkvuT3JrkTJI7q+rMltPuSvKN7v6rSX4pyS9M\nPSgsS7OMRrOMRrOMSLessmXeqbslyUZ3X+zuF5M8mOTclnPOJfnV2eWHk7yzqmq6MWFXNMtoNMto\nNMuIdMvKOrHEOdcneW7u+qUkf2u7c7r7par6ZpIfTPK1+ZOq6u4kd8+uvlBVX9jL0AfkumyZ94iZ\nZ2d/bYfbNHs0zLPYdt1q9ugct5mO2zwH3myi210yz878/4Pj97+JeXa2U7NLW2apm0x3n09yPkmq\nar271w7z8Xdinp0dx3kO43E0uzzzLHYY3Wp2d47bTMdxnsN4HN0uzzw706x5FjmO80xxP8v8+OXl\nJDfMXT81O3bVc6rqRJLXJnl+igFhDzTLaDTLaDTLiHTLylpmqXsiyemquqmqrk1yR5ILW865kOQ9\ns8v/OMmnurunGxN2RbOMRrOMRrOMSLesrIU/fjn7eeJ7kjya5JokH+vup6vqviTr3X0hyX9J8mtV\ntZHk69n8Q7LI+X3MfRDMs7Nh5tHskTHPYledSbNH6rjNNMQ8B9jsto95hMyzs2Hm8Vp7ZMyzs0nm\nKX/5AAAAMK6l/vFxAAAAjidLHQAAwMAOZKmrqrNV9WxVbVTVvVe5/VVV9cnZ7Z+pqhvnbvvZ2fFn\nq+rHDmmen66qZ6rqqar6rap609xtf15Vn5t9bf0w7UHN896qujL3uP9s7rb3VNXvz77es/V7D2ie\nX5qb5UtV9Sdzt036/FTVx6rqq9v9ey+16SOzWZ+qqrfO3bbn50az+57nu7bZ2X0eerea3fc8mtWs\nZvc3j2Y1q9md5zncZrt70q9sfvD0D5K8Ocm1SX4vyZkt5/zLJB+dXb4jySdnl8/Mzn9Vkptm93PN\nIczzd5P8pdnlf/HyPLPr//cInp/3JvmPV/neH0hycfbf188uv/6g59ly/gey+cHig3p+/k6Styb5\nwja335bkN5JUkrcn+cx+nxvNana0bjWrWc1qVrOa1axm578O4p26W5JsdPfF7n4xyYNJzm0551yS\nX51dfjjJO6uqZscf7O4XuvvLSTZm93eg83T3Y939rdnVx7P575YclGWen+38WJLf7O6vd/c3kvxm\nkrOHPM+dST6xz8fcVnd/Opu/bWo755J8vDc9nuR1VfWG7O+50ew+59nByjebHEm3mt3nPDvQ7CbN\nalazmt3XPDvQ7KZJmz2Ipe76JM/NXb80O3bVc7r7pSTfTPKDS37vQcwz765sbs0ve3VVrVfV41X1\nD/c5y26OqhaKAAAgAElEQVTm+fHZW7EPV9XL/1DmkT4/s7fxb0ryqbnDUz8/i2w3736eG81OM49m\ntzd1t5qdZh7Nbk+zr6RZzWp2b/NodnuTNrvw36n7blJV706yluRH5w6/qbsvV9Wbk3yqqj7f3X9w\nwKP89ySf6O4XquqfZ/Nvgf7eAT/mMu5I8nB3//ncsaN4fpjR7EKaPWY0u5BmjxnNLqTZY0azC61k\nswfxTt3lJDfMXT81O3bVc6rqRJLXJnl+ye89iHlSVe9K8sEkt3f3Cy8f7+7Ls/9eTPLbSd5y0PN0\n9/NzM/znJG9b9nsPYp45d2TLW9UH8Pwsst28+3luNLvPeTS70NTdanaf82h2Ic1Gs0vep2aj2avN\no9mFpm22p/9Q4IlsfqDvpvzFBxV/eMs5788rP1j60OzyD+eVHyy9mP1/sHSZed6SzQ9Xnt5y/PVJ\nXjW7fF2S388OH7qccJ43zF3+R0ke77/44OSXZ3O9fnb5Bw56ntl5Nyf5w8z+wfqDen5m93Vjtv9Q\n6T/IKz9U+rv7fW40q9n9NnvY3WpWs5rVrGY1q1nNvuL+phj4KkPeluRLs7A+ODt2Xzb/1iBJXp3k\n17P5wdHfTfLmue/94Oz7nk1y6yHN8z+T/J8kn5t9XZgd/9tJPj8L4/NJ7jqkef5tkqdnj/tYkpvn\nvvefzp63jSTvO4x5Ztc/nOTfbfm+yZ+fbP7NyVeS/Fk2f4b4riQ/leSnZrdXkvtns34+ydoUz41m\nNTtat5rVrGY1q1nNalazL3/V7BsBAAAY0IH84+MAAAAcDksdAADAwCx1AAAAA7PUAQAADMxSBwAA\nMDBLHQAAwMAsdQAAAAOz1AEAAAzMUgcAADCwhUtdVX2sqr5aVV/Y5vaqqo9U1UZVPVVVb51+TFie\nZhmRbhmNZhmNZllly7xT90CSszvcfmuS07Ovu5P8yv7Hgn15IJplPA9Et4zlgWiWsTwQzbKiFi51\n3f3pJF/f4ZRzST7emx5P8rqqesNUA8JuaZYR6ZbRaJbRaJZVdmKC+7g+yXNz1y/Njn1l64lVdXc2\n/+Yjr3nNa9528803T/DwfDd68sknv9bdJ/f47ZrlSBxGt5plSl5rGY1mGc0+m/22KZa6pXX3+STn\nk2Rtba3X19cP8+FZIVX1R4fxOJplSofRrWaZktdaRqNZRjNVs1P89svLSW6Yu35qdgyOK80yIt0y\nGs0yGs0yrCmWugtJfmL2G4PenuSb3f0db1PDMaJZRqRbRqNZRqNZhrXwxy+r6hNJ3pHkuqq6lOTn\nk3xvknT3R5M8kuS2JBtJvpXkfQc1LCxDs4xIt4xGs4xGs6yyhUtdd9+54PZO8v7JJoJ90iwj0i2j\n0Syj0SyrbIofvwQAAOCIWOoAAAAGZqkDAAAYmKUOAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAA\nYGCWOgAAgIFZ6gAAAAZmqQMAABiYpQ4AAGBgljoAAICBWeoAAAAGZqkDAAAYmKUOAABgYJY6AACA\ngVnqAAAABmapAwAAGNhSS11Vna2qZ6tqo6ruvcrtb6yqx6rqs1X1VFXdNv2osDzNMhrNMhrNMiLd\nsqoWLnVVdU2S+5PcmuRMkjur6syW034uyUPd/ZYkdyT55akHhWVpltFoltFolhHpllW2zDt1tyTZ\n6O6L3f1ikgeTnNtyTif5/tnl1yb54+lGhF3TLKPRLKPRLCPSLStrmaXu+iTPzV2/NDs278NJ3l1V\nl5I8kuQDV7ujqrq7qtarav3KlSt7GBeWollGo1lGM1mziW45NF5rWVlT/aKUO5M80N2nktyW5Neq\n6jvuu7vPd/dad6+dPHlyooeGPdEso9Eso1mq2US3HCteaxnSMkvd5SQ3zF0/NTs2764kDyVJd/9O\nklcnuW6KAWEPNMtoNMtoNMuIdMvKWmapeyLJ6aq6qaquzeaHRi9sOed/J3lnklTVX8/mHwDvRXNU\nNMtoNMtoNMuIdMvKWrjUdfdLSe5J8miSL2bzNwI9XVX3VdXts9N+JslPVtXvJflEkvd2dx/U0LAT\nzTIazTIazTIi3bLKTixzUnc/ks0Pi84f+9Dc5WeS/Mi0o8HeaZbRaJbRaJYR6ZZVNdUvSgEAAOAI\nWOoAAAAGZqkDAAAYmKUOAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAAYGCWOgAAgIFZ6gAAAAZm\nqQMAABiYpQ4AAGBgljoAAICBWeoAAAAGZqkDAAAYmKUOAABgYJY6AACAgVnqAAAABmapAwAAGNhS\nS11Vna2qZ6tqo6ru3eacf1JVz1TV01X1X6cdE3ZHs4xGs4xGs4xIt6yqE4tOqKprktyf5O8nuZTk\niaq60N3PzJ1zOsnPJvmR7v5GVf2VgxoYFtEso9Eso9EsI9Itq2yZd+puSbLR3Re7+8UkDyY5t+Wc\nn0xyf3d/I0m6+6vTjgm7ollGo1lGo1lGpFtW1jJL3fVJnpu7fml2bN4PJfmhqvpfVfV4VZ2dakDY\nA80yGs0yGs0yIt2yshb++OUu7ud0knckOZXk01X1/3T3n8yfVFV3J7k7Sd74xjdO9NCwJ5plNJpl\nNEs1m+iWY8VrLUNa5p26y0lumLt+anZs3qUkF7r7z7r7y0m+lM0/EK/Q3ee7e627106ePLnXmWER\nzTIazTKayZpNdMuh8VrLylpmqXsiyemquqmqrk1yR5ILW875b9n8G41U1XXZfOv64oRzwm5oltFo\nltFolhHplpW1cKnr7peS3JPk0SRfTPJQdz9dVfdV1e2z0x5N8nxVPZPksST/urufP6ihYSeaZTSa\nZTSaZUS6ZZVVdx/JA6+trfX6+vqRPDbjq6onu3vtMB9Ts+zXYXerWfbLay2j0SyjmarZpf7xcQAA\nAI4nSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAAA7PUAQAADMxSBwAAMDBLHQAA\nwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAA\nA7PUAQAADGyppa6qzlbVs1W1UVX37nDej1dVV9XadCPC7mmW0WiW0WiWEemWVbVwqauqa5Lcn+TW\nJGeS3FlVZ65y3vcl+VdJPjP1kLAbmmU0mmU0mmVEumWVLfNO3S1JNrr7Yne/mOTBJOeuct6/SfIL\nSf50wvlgLzTLaDTLaDTLiHTLylpmqbs+yXNz1y/Njn1bVb01yQ3d/T92uqOquruq1qtq/cqVK7se\nFpakWUajWUYzWbOzc3XLYfBay8ra9y9KqarvSfIfkvzMonO7+3x3r3X32smTJ/f70LAnmmU0mmU0\nu2k20S3Hg9daRrbMUnc5yQ1z10/Njr3s+5L8jSS/XVV/mOTtSS74YClHSLOMRrOMRrOMSLesrGWW\nuieSnK6qm6rq2iR3JLnw8o3d/c3uvq67b+zuG5M8nuT27l4/kIlhMc0yGs0yGs0yIt2yshYudd39\nUpJ7kjya5ItJHurup6vqvqq6/aAHhN3SLKPRLKPRLCPSLavsxDIndfcjSR7ZcuxD25z7jv2PBfuj\nWUajWUajWUakW1bVvn9RCgAAAEfHUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADA\nwCx1AAAAA7PUAQAADMxSBwAAMDBLHQAAwMAsdQAAAAOz1AEAAAzMUgcAADAwSx0AAMDALHUAAAAD\ns9QBAAAMzFIHAAAwMEsdAADAwJZa6qrqbFU9W1UbVXXvVW7/6ap6pqqeqqrfqqo3TT8qLE+zjEaz\njEazjEi3rKqFS11VXZPk/iS3JjmT5M6qOrPltM8mWevuv5nk4ST/fupBYVmaZTSaZTSaZUS6ZZUt\n807dLUk2uvtid7+Y5MEk5+ZP6O7Huvtbs6uPJzk17ZiwK5plNJplNJplRLplZS2z1F2f5Lm565dm\nx7ZzV5LfuNoNVXV3Va1X1fqVK1eWnxJ2R7OMRrOMZrJmE91yaLzWsrIm/UUpVfXuJGtJfvFqt3f3\n+e5e6+61kydPTvnQsCeaZTSaZTSLmk10y/HjtZbRnFjinMtJbpi7fmp27BWq6l1JPpjkR7v7hWnG\ngz3RLKPRLKPRLCPSLStrmXfqnkhyuqpuqqprk9yR5ML8CVX1liT/Kcnt3f3V6ceEXdEso9Eso9Es\nI9ItK2vhUtfdLyW5J8mjSb6Y5KHufrqq7quq22en/WKSv5zk16vqc1V1YZu7gwOnWUajWUajWUak\nW1bZMj9+me5+JMkjW459aO7yuyaeC/ZFs4xGs4xGs4xIt6yqSX9RCgAAAIfLUgcAADAwSx0AAMDA\nLHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwCx1AAAAA7PUAQAADMxSBwAAMDBLHQAAwMAsdQAAAAOz\n1AEAAAzMUgcAADAwSx0AAMDALHUAAAADs9QBAAAMzFIHAAAwMEsdAADAwJZa6qrqbFU9W1UbVXXv\nVW5/VVV9cnb7Z6rqxqkHhd3QLKPRLKPRLCPSLatq4VJXVdckuT/JrUnOJLmzqs5sOe2uJN/o7r+a\n5JeS/MLUg8KyNMtoNMtoNMuIdMsqW+aduluSbHT3xe5+McmDSc5tOedckl+dXX44yTurqqYbE3ZF\ns4xGs4xGs4xIt6ysZZa665M8N3f90uzYVc/p7peSfDPJD04xIOyBZhmNZhmNZhmRbllZJw7zwarq\n7iR3z66+UFVfOMzHX+C6JF876iHmmGdnf+0wHkSzu2KexQ68W83u2nGb6bjN47X2+P1vYp6dafb4\n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\nOpLkRUmeXMaAcB40y2g0y2g0y4h0y9paZKl7MMlVVXVlVV2Y5PokJ7accyLJ26fLv5bkU93dyxsT\ndo7WkJwAAATVSURBVEWzjEazjEazjEi3rK25P345/TzxzUnuTXJBkg9198NVdVuSk919IsnfJvn7\nqjqV5BvZ/Ecyzx17mHsVzLOzYebR7IExz3znnEmzB+qwzTTEPCtsdtvHPEDm2dkw8/hae2DMs7Ol\nzFO++QAAADCuhf74OAAAAIeTpQ4AAGBgK1nqquqaqnqsqk5V1S3nuP2iqvrodPsDVXXFzG3vnY4/\nVlVv3qd53l1Vj1TVF6rqk1X1spnbvltVn5s+tr6ZdlXzvKOqnph53N+aue3tVfXl6ePtW++7onk+\nODPLl6rqmzO3LfX5qaoPVdXXt/t7L7XpL6ZZv1BVr5m57byfG83ueZ7v22anz7nv3Wp2z/NoVrOa\n3ds8mtWsZneeZ3+b7e6lfmTzjadfSfLyJBcm+XySY1vO+d0kfzVdvj7JR6fLx6bzL0py5fR5LtiH\neX4hyQ9Ol3/nuXmm6/9zAM/PO5L85Tnu+yNJTk//vXi6fPGq59ly/u9n843Fq3p+fj7Ja5J8cZvb\n35Lk40kqyWuTPLDX50azmh2tW81qVrOa1axmNavZ2Y9VvFJ3dZJT3X26u59JcmeS41vOOZ7kw9Pl\nu5O8sapqOn5ndz/d3V9Ncmr6fCudp7vv6+5vT1fvz+bfLVmVRZ6f7bw5ySe6+xvd/VSSTyS5Zp/n\nuSHJR/b4mNvq7s9k87dNbed4kr/rTfcn+eGqekn29txodo/z7GDtm00OpFvN7nGeHWh2k2Y1q1nN\n7mmeHWh201KbXcVSd2mSx2eun5mOnfOc7n42ybeSvHjB+65inlk3ZnNrfs4LqupkVd1fVb+yx1l2\nM89bp5di766q5/5Q5oE+P9PL+Fcm+dTM4WU/P/NsN+9enhvNLmcezW5v2d1qdjnzaHZ7mn0+zWpW\ns+c3j2a3t9Rm5/6duu8nVfW2JBtJXj9z+GXdfbaqXp7kU1X1UHd/ZcWj/FOSj3T301X129n8LtAv\nrvgxF3F9kru7+7szxw7i+WGi2bk0e8hodi7NHjKanUuzh4xm51rLZlfxSt3ZJJfPXL9sOnbOc6rq\nSJIXJXlywfuuYp5U1ZuS3Jrkuu5++rnj3X12+u/pJJ9O8upVz9PdT87M8DdJfmbR+65inhnXZ8tL\n1St4fubZbt69PDea3eM8mp1r2d1qdo/zaHYuzUazC35OzUaz55pHs3Mtt9le/psCj2TzDX1X5ntv\nVHzVlnN+L89/Y+ld0+VX5flvLD2dvb+xdJF5Xp3NN1deteX4xUkumi5fkuTL2eFNl0uc5yUzl381\nyf39vTdOfnWa6+Lp8o+sep7pvFcm+VqmP1i/qudn+lxXZPs3lf5ynv+m0s/u9bnRrGb32ux+d6tZ\nzWpWs5rVrGY1+7zPt4yBzzHkW5J8aQrr1unYbdn8rkGSvCDJx7L5xtHPJnn5zH1vne73WJJr92me\nf0nyX0k+N32cmI7/XJKHpjAeSnLjPs3zJ0kenh73viSvnLnvb07P26kkv7Ef80zX/yjJn26539Kf\nn2x+5+Q/k3wnmz9DfGOSdyV513R7Jbl9mvWhJBvLeG40q9nRutWsZjWrWc1qVrOafe6jpjsCAAAw\noJX88XEAAAD2h6UOAABgYJY6AACAgVnqAAAABmapAwAAGJilDgAAYGCWOgAAgIH9H2SiAryoJ/Kk\nAAAAAElFTkSuQmCC\n",
243+
"text/plain": [
244+
"<matplotlib.figure.Figure at 0x7fc3e8d88690>"
245+
]
246+
},
247+
"metadata": {},
248+
"output_type": "display_data"
249+
}
250+
],
251+
"source": [
252+
"#plt.axis('off')\n",
253+
"fig, axs = plt.subplots(4,5, figsize=(15, 12))\n",
254+
"axs = axs.ravel()\n",
255+
"for i in range(20):\n",
256+
" axs[i].contourf(array[i],cmap='gray')\n",
257+
" axs[i].set_title('slice {}'.format(i))"
258+
]
259+
},
260+
{
261+
"cell_type": "code",
262+
"execution_count": null,
263+
"metadata": {
264+
"collapsed": true
265+
},
266+
"outputs": [],
267+
"source": []
268+
}
269+
],
270+
"metadata": {
271+
"kernelspec": {
272+
"display_name": "Python 2",
273+
"language": "python",
274+
"name": "python2"
275+
},
276+
"language_info": {
277+
"codemirror_mode": {
278+
"name": "ipython",
279+
"version": 2
280+
},
281+
"file_extension": ".py",
282+
"mimetype": "text/x-python",
283+
"name": "python",
284+
"nbconvert_exporter": "python",
285+
"pygments_lexer": "ipython2",
286+
"version": "2.7.12+"
287+
}
288+
},
289+
"nbformat": 4,
290+
"nbformat_minor": 2
291+
}

0 commit comments

Comments
 (0)
Please sign in to comment.