## Description

1 Image Segmentation using K-means

Implement K-means algorithm using only the numpy library. You can use

opencv and matplotlib libraries only to read and display images. Apply Kmeans to the images ‘home’ and ‘flower’ shown in Figure 1. Try K=2 and K=3.

Run the algorithm for 10 iterations and display the resulting segmented images

in each case. (10 points)

1 ECSE 415

(a) (b)

Figure 1: Segment above images using K-means algorithm.

(a) (b) (c)

Figure 2: A pair of stereo images (a) left image (b) right image (c) disparity

map (expected output).

2 Disparity

In this section, we will compute disparity map D from a pair of stereo images

captured using parallel cameras. The images are shown in Figure 2(a) and 2(b).

We will solve correspondence problem with the window search algorithm. Refer

to slides 58-59 in Lecture 18 – Stereo Vision. Instead of searching for a matching

window on the entire scanline, we will restrict the search on a small region on

the scanline.

1. Extract a 5 × 5 window centered at each pixel-location (i, j)L in the left

image. Let’s call these windows reference windows. (2 points)

2. For each reference window in the left image do the following.

(a) On the right scanline, create a search region bounded by pixel-locations

(i, j−47)R and (i, j)R. Extract 5×5 windows centered at every pixellocation in this search region. (2 points)

(b) For few boarder pixel-locations either the reference window or the

search region lie outside the boundary of the image. Set disparity

2 ECSE 415

(a) (b)

Figure 3: Input frames for optical flow computation. (a) frame1 (b) frame2.

D(i, j) = 48 for these pixel-locations. For the remaining locations do

the following. (2 points)

(c) Compute sum-of-square-difference(SSD) between the windows in the

search region and the reference window. (2 points)

(d) Find a location (i

0

, j0

)R with minimum SSD and compute disparity

D(i, j) = jL − j

0

R. (Note that 0 ≤ D(i, j) ≤ 47 as the search region

contains 48 pixel-locations.) (1 point)

3. Display the final disparity map D with the cmap argument of plt.imshow

set to ‘gray r’. The expected output is shown in Figure 2(c). (1 point)

3 Optical Flow

In this section, we will observe the effect of the window-size on the prediction

accuracy of optical flow. The input frames are shown in Figure 3(a-b) and

the ground-truth flow in given in ‘flow10.npz’ file. Read ground truth flow as

follows: gt = np.load(‘flow10.npz’)[‘flow’]

1. Use calcOpticalFlowFarneback from OpenCV to compute optical flow

between the input frames with the arguments set as follows. (2 points)

• flow=None, pyr scale=0.5, levels=3, iterations=3, poly n=5,

poly sigma=1.2 and flags=0.

• Very winsize from 5 to 21 in the steps of 2.

2. For each setting of winsize, measure mean squared error(MSE) between

estimated optical flow and the ground truth optical flow. Plot MSE (yaxis) vs winsize (x-axis). (2 points)

3. Do you observe any trend in the plot above? Does the error increase or

decrease with increasing window-size? Explain the effect of window-size

on the prediction error. (2 points)

3 ECSE 415