# Image Segmentation

Point Detection
1. The detection of isolated points embedded in the areas of constant or
nearly constant intensity in an image is straightforward in principle.
2. The point detection approach can be implemented by using command:
g = abs (imfilter (double (f), w)) >= T
3. The other approach is to find the points in all neighborhoods for which
the difference of the maximum and minimum pixel values exceeds a
specified value of T.
4. The function ordfilt2 can be used to implement this approach, having
syntax:
g = imsubtract (ordfilt2 (f, m*n, ones (m, n), . . .
ordfilt2 (f, 1, ones (m, n)));

Line Detection
1. Line detection is the next level of
complexity.
2. If mask in figure (a) were moved
around an image, it would
respond more strongly to lines
oriented horizontally.
to lines oriented at +45 degrees
(fig. (b)), third mask to vertical
lines (fig. (c)), and fourth mask to
lines at -45 degrees (fig. (d)).

Horizontal

+45 degree

Vertical

– 45 degree

Edge Detection
1. Edge detection is the most common approach for detecting meaningful
discontinuities in intensity values.
2. Several edge estimators are provided by function edge, having syntax:
[g, t] = edge (f, ‘method’, parameters)
3. Edge detectors available in function edge are:
a. Sobel
b. Prewitt
c. Roberts
d. Laplacian of Gaussian
e. Zero crossings
f. Canny

Line Detection using Hough Transform
1. Hough transform is the approach of linking line segments in an image.
2. Function hough has either the default syntax:
[H, theta, rho] = hough (f)
or, [H, theta, rho] = hough (f, ‘ThetaRes’, val1, ‘RhoRes’, val2)
3. Specified number of peaks are found by using function houghpeaks,
having syntax:
peaks = houghpeaks (H, NumPeaks)
or, peaks = houghpeaks (. . . , ‘Threshold’, val1, ‘NHoodSize’, val2)
4. To determine meaningful line segments associated with peaks an to get
the information of lines start and end, function houghlines is used, having
syntax:
lines = houghlines (f, theta, rho, peaks)
or, lines = houghlines (. . . , ‘FillGap’, val1, ‘MinLength’, val2)

Thresholding
1. Image thresholding has a central position in applications of image
segmentation because of its intuitive properties and simplicity of
implementation.
2. Basic global thresholding
a. Visual inspection of the image histogram is one of the way of
choosing a threshold
b. The preferred approach is to use an algorithm capable of choosing
the threshold automatically based on image data.
c. One such approach is as following:
i. Select an initial estimate for the global threshold, T.
ii. Segment the image using T.
iii. Compute the average intensity values for the pixels.
iv. Compute a new threshold value using averahe intensity values.
v. Repeat steps 2 through 4.
vi. Use function im2bw to segment the image as:
g = im2bw (f, T/den)
3. Optimum global thresholding using Otsu’s method
a. Function graythresh is used to compute the Otsu’s threshold, having
syntax:
[T, SM] = graythresh (f)
4. Using image smoothing to improve global thresholding
a. Noise can turn a simple thresholding problem into unsolvable one.
b. When noise cannot be reduced at the source, and thresholding is the
segmentation method of choice, image smoothing is done prior to
thresholding to enhance the performance.
5. Using edges to improve global thresholding
a. Following algorithm is used to describe this process:
i. Compute an edge image from the input image.
ii. Specify a threshold value, T.
iii. Threshold the edge image to produce a binary image which is
used as marker image.
iv. Compute the histogram using only the pixels in input image that
correspond to the locations of 1-valued pixels in binary image.
v. Use the histogram to segment input image globally using Otsu’s
method.
b. percentile2i function is used to compute an intensity value
corresponding to specified percentile, P, having syntax:
I = percentile2i (h, P)
6. Variable thresholding based on local statistics
a. Local thresholding is illustrated using the standard deviation and
mean of the pixels in a neighborhood of every point in an image.
b. Function stdfilt is used to compute the local standard deviation,
having syntax:
g = stdfilt (f, nhood)
7. Image thresholding using moving averages
a. A special case of the local thresholding method is based on
computing a moving average along scan lines of an image.
b. Function movingthresh is used to compute this, having syntax:
g = movingthresh (f, n, K)

Region-based segmentation
1. Region growing
a. It is a procedure that groups pixels or subregions into larger region
based on predefined criteria for growth.
b. The basic approach is to start with a set of seed points and from
these grow regions by appending to each seed those neighboring
pixels that have predefined properties similar to the seed.
c. Function regiongrow is used to do basic region growing, having
syntax:
[g, NR, SI, TI] = regiongrow (f, S, T)
2. Region splitting and merging
a. In this the image is subdivided initially into a set of arbitrary,
disjointed regions and the merge and split the regions.
b. Function splitmerge is used for the same, having syntax:
g = splitmerge (f, mindim, @predicate)

Segmentation using Watershed Transform
1. Watershed segmentation using distance transform
a. Distance transform is useful tool with the watershed transform for
segmentation.
b. Function bwdist is used to compute the distance transform, having
syntax:
D = bwdist (f)
c. Function watershed is used to compute the negative of the distance
transform, having syntax:
L = watershed (A, conn)