1i.segment(1) GRASS GIS User's Manual i.segment(1)
2
3
4
6 i.segment - Identifies segments (objects) from imagery data.
7
9 imagery, segmentation, classification, object recognition
10
12 i.segment
13 i.segment --help
14 i.segment [-dwap] group=name[,name,...] output=name [band_suffix=name]
15 threshold=float [radius=float] [hr=float] [method=string] [simi‐
16 larity=string] [minsize=integer] [memory=memory in MB] [itera‐
17 tions=integer] [seeds=name] [bounds=name] [goodness=name]
18 [--overwrite] [--help] [--verbose] [--quiet] [--ui]
19
20 Flags:
21 -d
22 Use 8 neighbors (3x3 neighborhood) instead of the default 4 neigh‐
23 bors for each pixel
24
25 -w
26 Weighted input, do not perform the default scaling of input raster
27 maps
28
29 -a
30 Use adaptive bandwidth for mean shift
31 Range (spectral) bandwidth is adapted for each moving window
32
33 -p
34 Use progressive bandwidth for mean shift
35 Spatial bandwidth is increased, range (spectral) bandwidth is de‐
36 creased in each iteration
37
38 --overwrite
39 Allow output files to overwrite existing files
40
41 --help
42 Print usage summary
43
44 --verbose
45 Verbose module output
46
47 --quiet
48 Quiet module output
49
50 --ui
51 Force launching GUI dialog
52
53 Parameters:
54 group=name[,name,...]Â [required]
55 Name of input imagery group or raster maps
56
57 output=name [required]
58 Name for output raster map
59
60 band_suffix=name
61 Suffix for output bands with modified band values
62 Name for output raster map
63
64 threshold=float [required]
65 Difference threshold between 0 and 1
66 Threshold = 0 merges only identical segments; threshold = 1 merges
67 all
68
69 radius=float
70 Spatial radius in number of cells
71 Must be >= 1, only cells within spatial bandwidth are considered
72 for mean shift
73 Default: 1.5
74
75 hr=float
76 Range (spectral) bandwidth [0, 1]
77 Only cells within range (spectral) bandwidth are considered for
78 mean shift. Range bandwidth is used as conductance parameter for
79 adaptive bandwidth
80
81 method=string
82 Segmentation method
83 Options: region_growing, mean_shift
84 Default: region_growing
85
86 similarity=string
87 Similarity calculation method
88 Options: euclidean, manhattan
89 Default: euclidean
90
91 minsize=integer
92 Minimum number of cells in a segment
93 The final step will merge small segments with their best neighbor
94 Options: 1-100000
95 Default: 1
96
97 memory=memory in MB
98 Maximum memory to be used (in MB)
99 Cache size for raster rows
100 Default: 300
101
102 iterations=integer
103 Maximum number of iterations
104
105 seeds=name
106 Name for input raster map with starting seeds
107
108 bounds=name
109 Name of input bounding/constraining raster map
110 Must be integer values, each area will be segmented independent of
111 the others
112
113 goodness=name
114 Name for output goodness of fit estimate map
115
117 Image segmentation or object recognition is the process of grouping
118 similar pixels into unique segments, also referred to as objects.
119 Boundary and region based algorithms are described in the literature,
120 currently a region growing and merging algorithm is implemented. Each
121 object found during the segmentation process is given a unique ID and
122 is a collection of contiguous pixels meeting some criteria. Note the
123 contrast with image classification where all pixels similar to each
124 other are assigned to the same class and do not need to be contiguous.
125 The image segmentation results can be useful on their own, or used as a
126 preprocessing step for image classification. The segmentation prepro‐
127 cessing step can reduce noise and speed up the classification.
128
130 Region Growing and Merging
131 This segmentation algorithm sequentially examines all current segments
132 in the raster map. The similarity between the current segment and each
133 of its neighbors is calculated according to the given distance formula.
134 Segments will be merged if they meet a number of criteria, including:
135
136 1 The pair is mutually most similar to each other (the similarity
137 distance will be smaller than to any other neighbor), and
138
139 2 The similarity must be lower than the input threshold. The
140 process is repeated until no merges are made during a complete
141 pass.
142
143 Similarity and Threshold
144 The similarity between segments and unmerged objects is used to deter‐
145 mine which objects are merged. Smaller distance values indicate a
146 closer match, with a similarity score of zero for identical pixels.
147
148 During normal processing, merges are only allowed when the similarity
149 between two segments is lower than the given threshold value. During
150 the final pass, however, if a minimum segment size of 2 or larger is
151 given with the minsize parameter, segments with a smaller pixel count
152 will be merged with their most similar neighbor even if the similarity
153 is greater than the threshold.
154
155 The threshold must be larger than 0.0 and smaller than 1.0. A threshold
156 of 0 would allow only identical valued pixels to be merged, while a
157 threshold of 1 would allow everything to be merged. The threshold is
158 scaled to the data range of the entire input data, not the current com‐
159 putational region. This allows the application of the same threshold
160 to different computational regions when working on the same dataset,
161 ensuring that this threshold has the same meaning in all subregions.
162
163 Initial empirical tests indicate threshold values of 0.01 to 0.05 are
164 reasonable values to start. It is recommended to start with a low
165 value, e.g. 0.01, and then perform hierarchical segmentation by using
166 the output of the last run as seeds for the next run.
167
168 Calculation Formulas
169 Both Euclidean and Manhattan distances use the normal definition, con‐
170 sidering each raster in the image group as a dimension. In future, the
171 distance calculation will also take into account the shape characteris‐
172 tics of the segments. The normal distances are then multiplied by the
173 input radiometric weight. Next an additional contribution is added:
174 (1-radioweight) * {smoothness * smoothness weight + compactness *
175 (1-smoothness weight)}, where compactness = Perimeter Length / sqrt(
176 Area ) and smoothness = Perimeter Length / Bounding Box. The perimeter
177 length is estimated as the number of pixel sides the segment has.
178
179 Seeds
180 The seeds map can be used to provide either seed pixels (random or se‐
181 lected points from which to start the segmentation process) or seed
182 segments. If the seeds are the results of a previous segmentation with
183 lower threshold, hierarchical segmentation can be performed. The dif‐
184 ferent approaches are automatically detected by the program: any pixels
185 that have identical seed values and are contiguous will be assigned a
186 unique segment ID.
187
188 Maximum number of segments
189 The current limit with CELL storage used for segment IDs is 2 billion
190 starting segment IDs. Segment IDs are assigned whenever a yet unpro‐
191 cessed pixel is merged with another segment. Integer overflow can hap‐
192 pen for computational regions with more than 2 billion cells and very
193 low threshold values, resulting in many segments. If integer overflow
194 occurs durin region growing, starting segments can be used (created by
195 initial classification or other methods).
196
197 Goodness of Fit
198 The goodness of fit for each pixel is calculated as 1 - distance of the
199 pixel to the object it belongs to. The distance is calculated with the
200 selected similarity method. A value of 1 means identical values, per‐
201 fect fit, and a value of 0 means maximum possible distance, worst pos‐
202 sible fit.
203
204 Mean shift
205 Mean shift image segmentation consists of 2 steps: anisotrophic filter‐
206 ing and 2. clustering. For anisotrophic filtering new cell values are
207 calculated from all pixels not farther than hs pixels away from the
208 current pixel and with a spectral difference not larger than hr. That
209 means that pixels that are too different from the current pixel are not
210 considered in the calculation of new pixel values. hs and hr are the
211 spatial and spectral (range) bandwidths for anisotrophic filtering.
212 Cell values are iteratively recalculated (shifted to the segment’s
213 mean) until the maximum number of iterations is reached or until the
214 largest shift is smaller than threshold.
215
216 If input bands have been reprojected, they should not be reprojected
217 with bilinear resampling because that method causes smooth transitions
218 between objects. More appropriate methods are bicubic or lanczos resam‐
219 pling.
220
221 Boundary Constraints
222 Boundary constraints limit the adjacency of pixels and segments. Each
223 unique value present in the bounds raster are considered as a MASK.
224 Thus no segments in the final segmentated map will cross a boundary,
225 even if their spectral data is very similar.
226
227 Minimum Segment Size
228 To reduce the salt and pepper effect, a minsize greater than 1 will add
229 one additional pass to the processing. During the final pass, the
230 threshold is ignored for any segments smaller then the set size, thus
231 forcing very small segments to merge with their most similar neighbor.
232 A minimum segment size larger than 1 is recommended when using adaptive
233 bandwidth selected with the -a flag.
234
236 Segmentation of RGB orthophoto
237 This example uses the ortho photograph included in the NC Sample
238 Dataset. Set up an imagery group:
239 i.group group=ortho_group input=ortho_2001_t792_1m@PERMANENT
240
241 Set the region to a smaller test region (resolution taken from input
242 ortho photograph).
243 g.region -p raster=ortho_2001_t792_1m n=220446 s=220075 e=639151 w=638592
244 Try out a low threshold and check the results.
245 i.segment group=ortho_group output=ortho_segs_l1 threshold=0.02
246
247 From a visual inspection, it seems this results in too many segments.
248 Increasing the threshold, using the previous results as seeds, and set‐
249 ting a minimum size of 2:
250 i.segment group=ortho_group output=ortho_segs_l2 threshold=0.05 seeds=ortho_segs_l1 min=2
251 i.segment group=ortho_group output=ortho_segs_l3 threshold=0.1 seeds=ortho_segs_l2
252 i.segment group=ortho_group output=ortho_segs_l4 threshold=0.2 seeds=ortho_segs_l3
253 i.segment group=ortho_group output=ortho_segs_l5 threshold=0.3 seeds=ortho_segs_l4
254
255 The output ortho_segs_l4 with threshold=0.2 still has too many seg‐
256 ments, but the output with threshold=0.3 has too few segments. A
257 threshold value of 0.25 seems to be a good choice. There is also some
258 noise in the image, lets next force all segments smaller than 10 pixels
259 to be merged into their most similar neighbor (even if they are less
260 similar than required by our threshold):
261
262 Set the region to match the entire map(s) in the group.
263 g.region -p raster=ortho_2001_t792_1m@PERMANENT
264
265 Run i.segment on the full map:
266 i.segment group=ortho_group output=ortho_segs_final threshold=0.25 min=10
267
268 Processing the entire ortho image with nearly 10 million pixels took
269 about 450 times more then for the final run.
270
271 Segmentation of panchromatic channel
272 This example uses the panchromatic channel of the Landsat7 scene in‐
273 cluded in the North Carolina sample dataset:
274 # create group with single channel
275 i.group group=singleband input=lsat7_2002_80
276 # set computational region to Landsat7 PAN band
277 g.region raster=lsat7_2002_80 -p
278 # perform segmentation with minsize=5
279 i.segment group=singleband threshold=0.05 minsize=5 \
280 output=lsat7_2002_80_segmented_min5 goodness=lsat7_2002_80_goodness_min5
281 # perform segmentation with minsize=100
282 i.segment group=singleband threshold=0.05 minsize=100
283 output=lsat7_2002_80_segmented_min100 goodness=lsat7_2002_80_goodness_min100
284
285 Original panchromatic channel of the Landsat7 scene
286
287 Segmented panchromatic channel, minsize=5
288
289 Segmented panchromatic channel, minsize=100
290
292 Functionality
293 • Further testing of the shape characteristics (smoothness, com‐
294 pactness), if it looks good it should be added. (in progress)
295
296 • Malahanobis distance for the similarity calculation.
297
298 Use of Segmentation Results
299 • Improve the optional output from this module, or better yet,
300 add a module for i.segment.metrics.
301
302 • Providing updates to i.maxlik to ensure the segmentation output
303 can be used as input for the existing classification function‐
304 ality.
305
306 • Integration/workflow for r.fuzzy (Addon).
307
308 Speed
309 • See create_isegs.c
310
312 This project was first developed during GSoC 2012. Project documenta‐
313 tion, Image Segmentation references, and other information is at the
314 project wiki.
315
316 Information about classification in GRASS is at available on the wiki.
317
319 g.gui.iclass, i.group, i.maxlik, i.smap, r.kappa
320
322 Eric Momsen - North Dakota State University
323 Markus Metz (GSoC Mentor)
324
326 Available at: i.segment source code (history)
327
328 Accessed: Saturday Oct 28 18:19:13 2023
329
330 Main index | Imagery index | Topics index | Keywords index | Graphical
331 index | Full index
332
333 © 2003-2023 GRASS Development Team, GRASS GIS 8.3.1 Reference Manual
334
335
336
337GRASS 8.3.1 i.segment(1)