Understanding K-means Clustering for Image Segmentation
Dive into the world of K-means clustering for pixel-wise image segmentation in the RGB color space. Learn the steps involved, from making copies of the original image to initializing cluster centers and finding the closest cluster for each pixel based on color distances. Explore different seeding methods and cluster center initialization techniques to enhance your image segmentation process.
Uploaded on Sep 21, 2024 | 0 Views
Download Presentation
Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
E N D
Presentation Transcript
ECE 596 HW 2 Notes 1
K-means clustering Pixel-wise image segmentation in RGB color space. 2
K-means clustering 1. Make a copy of your original image. 3
K-means clustering 1. Make a copy of your original image. Copying input image to a buffer image. 4
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers centers[ i ][ j ]: ,where i = 1 number of clusters j = 1 3 (R,G,B channels) 5
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers centers[ i ][ j ]: ,where i = 1 number of clusters j = 1 3 (R,G,B channels) Task 1 : random seeds Task 2: pixel seeds Task 3: histogram seeds 6
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Cluster centers 7
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers L1 3. distance Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Cluster centers 8
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers L1 3. distance Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Cluster centers 9
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Cluster centers 10
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Cluster centers 11
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| 4. Update cluster centers. 12
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Take the mean and update cluster center color. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| 4. Update cluster centers. 13
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Do the same for all cluster centers. 4. Update cluster centers. 14
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Exit Looping, if sum of the L1 distances between the new cluster centers and the previous cluster centers is less than epsilon*num_clusters. 5. 4. Check Update cluster centers. convergence. 15
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Otherwise Loop for a max of 100 iterations. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| 5. 4. Check Update cluster centers. convergence. 16
K-means clustering 1. 2. Make a copy of your original image. Initialize cluster centers. double**centers 3. Find closest cluster for each pixel. |Rp-Rc|+|Gp-Gc|+|Bp-Bc| Assign pixel color with the cluster center color it belongs to. 6. 5. 4. Render result. Check Update cluster centers. convergence. 17
10/15 10/20 Task 1. With Random Seeds 2. Initialize cluster centers. double**centers void RandomSeedImage(double **image, int num_clusters) Choose a random number! Range of values: 0 ~ 255 What you can do: rand() % 256 Set epsilon = 30 (fine tune as necessary) centers[ i ][ j ]: ,where i = 1 number of clusters j = 1 3 (R,G,B channels) 18
10/21 10/24 Task 2. With Pixel Seeds 2. Initialize cluster centers. double**centers void PixelSeedImage(double **image, int num_clusters) Choose a random pixel from image! Range of values: column = 0 ~ (imageWidth 1) row = 0 ~ (imageHeight 1) What you can use: rand() % something Set epsilon = 30. centers[ i ][ j ]: ,where i = 1 number of clusters j = 1 3 (R,G,B channels) 19
10/21 10/24 Task 2. With Pixel Seeds Choose a pixel and make its RGB values a seed if it is sufficiently different (dist(L1) >= 100) from already- selected seeds! 2. Initialize cluster centers. double**centers void PixelSeedImage(double **image, int num_clusters) Choose a random pixel from image! Range of values: column = 0 ~ (imageWidth 1) row = 0 ~ (imageHeight 1) What you can use: rand() % something Set epsilon = 30. centers[ i ][ j ]: ,where i = 1 number of clusters j = 1 3 (R,G,B channels) 20
Extra Credit Task 3. With Histogram Seeds 2. Initialize cluster centers. double**centers void HistogramSeedImage(double** image, int num_clusters) Number of pixels Histogram: (color or gray) histWidth Set epsilon = anything. 21 histBins