Skip to content

Commit 10428be

Browse files
committed
examples of functional parameters
1 parent e5c0de5 commit 10428be

File tree

2 files changed

+332
-144
lines changed

2 files changed

+332
-144
lines changed

image_processing/analyse_banana_data_set.ipynb

Lines changed: 62 additions & 144 deletions
Original file line numberDiff line numberDiff line change
@@ -2,128 +2,71 @@
22
"cells": [
33
{
44
"cell_type": "code",
5-
"execution_count": 2,
5+
"execution_count": 10,
66
"id": "coral-quantum",
77
"metadata": {},
88
"outputs": [],
99
"source": [
10-
"data_folder = '../data/banana/'\n",
11-
"\n"
10+
"from skimage.filters import threshold_otsu, threshold_yen\n",
11+
"\n",
12+
"data_folder = '../data/banana/'"
1213
]
1314
},
1415
{
1516
"cell_type": "code",
16-
"execution_count": 3,
17+
"execution_count": 20,
1718
"id": "dutch-artwork",
1819
"metadata": {},
1920
"outputs": [
2021
{
21-
"name": "stdout",
22-
"output_type": "stream",
23-
"text": [
24-
"../data/banana/ [] ['banana0002.tif', 'banana0003.tif', 'banana0004.tif', 'banana0005.tif', 'banana0006.tif', 'banana0007.tif', 'banana0008.tif', 'banana0009.tif', 'banana0010.tif', 'banana0011.tif', 'banana0012.tif', 'banana0013.tif', 'banana0014.tif', 'banana0015.tif', 'banana0016.tif', 'banana0017.tif', 'banana0018.tif', 'banana0019.tif', 'banana0020.tif', 'banana0021.tif', 'banana0022.tif', 'banana0023.tif', 'banana0024.tif', 'banana0025.tif', 'banana0026.tif', 'image_source.txt']\n"
25-
]
22+
"data": {
23+
"text/plain": [
24+
"['banana0002.tif',\n",
25+
" 'banana0003.tif',\n",
26+
" 'banana0004.tif',\n",
27+
" 'banana0005.tif',\n",
28+
" 'banana0006.tif',\n",
29+
" 'banana0007.tif',\n",
30+
" 'banana0008.tif',\n",
31+
" 'banana0009.tif',\n",
32+
" 'banana0010.tif',\n",
33+
" 'banana0011.tif',\n",
34+
" 'banana0012.tif',\n",
35+
" 'banana0013.tif',\n",
36+
" 'banana0014.tif',\n",
37+
" 'banana0015.tif',\n",
38+
" 'banana0016.tif',\n",
39+
" 'banana0017.tif',\n",
40+
" 'banana0018.tif',\n",
41+
" 'banana0019.tif',\n",
42+
" 'banana0020.tif',\n",
43+
" 'banana0021.tif',\n",
44+
" 'banana0022.tif',\n",
45+
" 'banana0023.tif',\n",
46+
" 'banana0024.tif',\n",
47+
" 'banana0025.tif',\n",
48+
" 'banana0026.tif']"
49+
]
50+
},
51+
"execution_count": 20,
52+
"metadata": {},
53+
"output_type": "execute_result"
2654
}
2755
],
2856
"source": [
2957
"import os\n",
30-
"for root, dirs, files in os.walk(data_folder):\n",
31-
" print(root, dirs, files)"
32-
]
33-
},
34-
{
35-
"cell_type": "code",
36-
"execution_count": 5,
37-
"id": "still-taiwan",
38-
"metadata": {},
39-
"outputs": [
40-
{
41-
"name": "stdout",
42-
"output_type": "stream",
43-
"text": [
44-
"../data/banana/ [] banana0002.tif\n",
45-
"../data/banana/ [] banana0003.tif\n",
46-
"../data/banana/ [] banana0004.tif\n",
47-
"../data/banana/ [] banana0005.tif\n",
48-
"../data/banana/ [] banana0006.tif\n",
49-
"../data/banana/ [] banana0007.tif\n",
50-
"../data/banana/ [] banana0008.tif\n",
51-
"../data/banana/ [] banana0009.tif\n",
52-
"../data/banana/ [] banana0010.tif\n",
53-
"../data/banana/ [] banana0011.tif\n",
54-
"../data/banana/ [] banana0012.tif\n",
55-
"../data/banana/ [] banana0013.tif\n",
56-
"../data/banana/ [] banana0014.tif\n",
57-
"../data/banana/ [] banana0015.tif\n",
58-
"../data/banana/ [] banana0016.tif\n",
59-
"../data/banana/ [] banana0017.tif\n",
60-
"../data/banana/ [] banana0018.tif\n",
61-
"../data/banana/ [] banana0019.tif\n",
62-
"../data/banana/ [] banana0020.tif\n",
63-
"../data/banana/ [] banana0021.tif\n",
64-
"../data/banana/ [] banana0022.tif\n",
65-
"../data/banana/ [] banana0023.tif\n",
66-
"../data/banana/ [] banana0024.tif\n",
67-
"../data/banana/ [] banana0025.tif\n",
68-
"../data/banana/ [] banana0026.tif\n",
69-
"../data/banana/ [] image_source.txt\n"
70-
]
71-
}
72-
],
73-
"source": [
74-
"for root, dirs, files in os.walk(data_folder):\n",
75-
" for file in files:\n",
76-
" print(root, dirs, file)"
77-
]
78-
},
79-
{
80-
"cell_type": "code",
81-
"execution_count": 7,
82-
"id": "consecutive-landscape",
83-
"metadata": {},
84-
"outputs": [
85-
{
86-
"name": "stdout",
87-
"output_type": "stream",
88-
"text": [
89-
"../data/banana/ [] banana0002.tif\n",
90-
"../data/banana/ [] banana0003.tif\n",
91-
"../data/banana/ [] banana0004.tif\n",
92-
"../data/banana/ [] banana0005.tif\n",
93-
"../data/banana/ [] banana0006.tif\n",
94-
"../data/banana/ [] banana0007.tif\n",
95-
"../data/banana/ [] banana0008.tif\n",
96-
"../data/banana/ [] banana0009.tif\n",
97-
"../data/banana/ [] banana0010.tif\n",
98-
"../data/banana/ [] banana0011.tif\n",
99-
"../data/banana/ [] banana0012.tif\n",
100-
"../data/banana/ [] banana0013.tif\n",
101-
"../data/banana/ [] banana0014.tif\n",
102-
"../data/banana/ [] banana0015.tif\n",
103-
"../data/banana/ [] banana0016.tif\n",
104-
"../data/banana/ [] banana0017.tif\n",
105-
"../data/banana/ [] banana0018.tif\n",
106-
"../data/banana/ [] banana0019.tif\n",
107-
"../data/banana/ [] banana0020.tif\n",
108-
"../data/banana/ [] banana0021.tif\n",
109-
"../data/banana/ [] banana0022.tif\n",
110-
"../data/banana/ [] banana0023.tif\n",
111-
"../data/banana/ [] banana0024.tif\n",
112-
"../data/banana/ [] banana0025.tif\n",
113-
"../data/banana/ [] banana0026.tif\n"
114-
]
115-
}
116-
],
117-
"source": [
118-
"for root, dirs, files in os.walk(data_folder):\n",
119-
" for file in files:\n",
120-
" if file.endswith('tif'):\n",
121-
" print(root, dirs, file)"
58+
"\n",
59+
"# get a list of files in that folder\n",
60+
"file_list = os.listdir(data_folder)\n",
61+
"\n",
62+
"# filter the list so that only tif images remain\n",
63+
"image_file_list = [file for file in file_list if file.endswith(\".tif\")]\n",
64+
"image_file_list"
12265
]
12366
},
12467
{
12568
"cell_type": "code",
126-
"execution_count": 15,
69+
"execution_count": 12,
12770
"id": "metallic-punch",
12871
"metadata": {},
12972
"outputs": [
@@ -133,20 +76,23 @@
13376
"840"
13477
]
13578
},
136-
"execution_count": 15,
79+
"execution_count": 12,
13780
"metadata": {},
13881
"output_type": "execute_result"
13982
}
14083
],
14184
"source": [
142-
"def process_image(filename):\n",
85+
"def process_image(filename, threshold_function):\n",
86+
" \"\"\"\n",
87+
" Process a given image file name \n",
88+
" \"\"\"\n",
89+
" \n",
14390
" # load data\n",
14491
" from skimage.io import imread\n",
14592
" image = imread(filename)\n",
14693
" \n",
14794
" # segment it\n",
148-
" from skimage.filters import threshold_otsu\n",
149-
" binary_image = image > threshold_otsu(image)\n",
95+
" binary_image = image > threshold_function(image)\n",
15096
" \n",
15197
" from skimage.measure import label\n",
15298
" labels = label(binary_image)\n",
@@ -159,12 +105,12 @@
159105
" import numpy as np\n",
160106
" return np.max(areas)\n",
161107
"\n",
162-
"process_image('../data/banana/banana0026.tif')"
108+
"process_image('../data/banana/banana0026.tif', threshold_otsu)"
163109
]
164110
},
165111
{
166112
"cell_type": "code",
167-
"execution_count": 16,
113+
"execution_count": 17,
168114
"id": "answering-dispute",
169115
"metadata": {},
170116
"outputs": [
@@ -177,61 +123,33 @@
177123
}
178124
],
179125
"source": [
180-
"slice_areas = []\n",
181-
"for root, dirs, files in os.walk(data_folder):\n",
182-
" for file in files:\n",
183-
" if file.endswith('tif'):\n",
184-
" slice_areas.append(process_image(root + file))\n",
126+
"slice_areas = [process_image(data_folder + file, threshold_otsu) for file in image_file_list]\n",
185127
"print(slice_areas)"
186128
]
187129
},
188130
{
189131
"cell_type": "code",
190-
"execution_count": 18,
191-
"id": "raised-polls",
132+
"execution_count": 19,
133+
"id": "alien-choir",
192134
"metadata": {},
193135
"outputs": [
194136
{
195137
"name": "stdout",
196138
"output_type": "stream",
197139
"text": [
198-
"[1302, 3072, 5127, 6486, 7208, 7540, 7689, 7761, 7800, 7767, 7793, 7812, 7908, 8145, 8367, 8581, 8744, 8989, 9010, 8618, 7682, 6012, 3846, 1468, 840]\n"
140+
"[1833, 4199, 6074, 7312, 8012, 8379, 8473, 8461, 8382, 8307, 8257, 8300, 8442, 8681, 8967, 9247, 9592, 9880, 9976, 9757, 8886, 7468, 5478, 2203, 1255]\n"
199141
]
200142
}
201143
],
202144
"source": [
203-
"slice_areas = []\n",
204-
"for root, dirs, files in os.walk(data_folder):\n",
205-
" for file in files:\n",
206-
" if file.endswith('tif'):\n",
207-
" \n",
208-
" # load data\n",
209-
" from skimage.io import imread\n",
210-
" image = imread(root + file)\n",
211-
"\n",
212-
" # segment it\n",
213-
" from skimage.filters import threshold_otsu\n",
214-
" binary_image = image > threshold_otsu(image)\n",
215-
"\n",
216-
" from skimage.measure import label\n",
217-
" labels = label(binary_image)\n",
218-
"\n",
219-
" # measure radius\n",
220-
" from skimage.measure import regionprops\n",
221-
" statistics = regionprops(labels)\n",
222-
" areas = [s.area for s in statistics]\n",
223-
"\n",
224-
" # store result in array\n",
225-
" import numpy as np\n",
226-
" slice_areas.append(np.max(areas))\n",
227-
" \n",
228-
"print(slice_areas)\n"
145+
"slice_areas = [process_image(data_folder + file, threshold_yen) for file in image_file_list]\n",
146+
"print(slice_areas)"
229147
]
230148
},
231149
{
232150
"cell_type": "code",
233151
"execution_count": null,
234-
"id": "alien-choir",
152+
"id": "1322c391",
235153
"metadata": {},
236154
"outputs": [],
237155
"source": []
@@ -253,7 +171,7 @@
253171
"name": "python",
254172
"nbconvert_exporter": "python",
255173
"pygments_lexer": "ipython3",
256-
"version": "3.8.8"
174+
"version": "3.9.4"
257175
}
258176
},
259177
"nbformat": 4,

0 commit comments

Comments
 (0)