k-means-image-segmentation-computerphile

K-means sorts data based on averages. Dr Mike Pound explains how it works.

Fire Pong in Detail: https://youtu.be/ZoZMMg1r_Oc

Deep Dream: https://youtu.be/BsSmBPmPeYQ

FPS & Digital Video: https://youtu.be/yniSnYtkrwQ

Dr. Mike's Code:

% This script is the one mentioned during the Computerphile Image

% Segmentation video. I chose matlab because it's a popular tool for

% quickly prototyping things. Matlab licenses are pricey, if you don't have

% one (or, like me, work for an organisation that does) try Octave as a

% good free alternative. This code should work in Octave too.

% Load in an input image

im = imread('C:\Path\Of\Input\Image.jpg');

% In matlab, K-means operates on a 2D array, where each sample is one row,

% and the features are the columns. We can use the reshape function to turn

% the image into this format, where each pixel is one row, and R,G and B

% are the columns. We are turning a W,H,3 image into W*H,3

% We also cast to a double array, because K-means requires it in matlab

imflat = double(reshape(im, size(im,1) * size(im,2), 3));

% I specify that initialisation shuold sample points at

% random, rather than anything complex like kmeans++ initialisation.

% Kmeans++ takes a long time if you are using 256 classes.

% Perform k-means. This function returns the class IDs assigned to each

% pixel, and in this case we also want the mean values for each class -

% what colour is each class. This can take a long time if the value for K

% is large, I've used the sampling start strategy to speed things up.

% While KMeans is running, it will show you the iteration count, and the

% number of pixels that have changed class since last iteration. This

% number should get lower and lower, as the means settle on appropriate

% values. For large K, it's unlikely that we will ever reach zero movement

% (convergence) within 150 iterations.

K = 3

[kIDs, kC] = kmeans(imflat, K, 'Display', 'iter', 'MaxIter', 150, 'Start', 'sample');

% Matlab can output paletted images, that is, grayscale images where the

% colours are stored in a separate array. This array is kC, and kIDs are

% the grayscale indices.

colormap = kC / 256; % Scale 0-1, since this is what matlab wants

% Reshape kIDs back into the original image shape

imout = reshape(uint8(kIDs), size(im,1), size(im,2));

% Save file out, you need to subtract 1 from the image classes, since once

% stored in the file the values should go from 0-255, not 1-256 like matlab

% would do.

imwrite(imout - 1, colormap, 'C:\Path\Of\Output\Image.png');

http://www.facebook.com/computerphile

https://twitter.com/computer_phile

This video was filmed and edited by Sean Riley.

Computer Science at the University of Nottingham: http://bit.ly/nottscomputer

Computerphile is a sister project to Brady Haran's Numberphile. More at http://www.bradyharan.com

Tagged under: computers,computerphile,computer,science,computer science,Dr Mike Pound,University Nottingham,K-means,Image Segmentation,Machine Learning,Clustering

Clip makes it super easy to turn any public video into a formative assessment activity in your classroom.

Add multiple choice quizzes, questions and browse hundreds of approved, video lesson ideas for Clip

Make YouTube one of your teaching aids - Works perfectly with lesson micro-teaching plans

1. Students enter a simple code

2. You play the video

3. The students comment

4. You review and reflect

* Whiteboard required for teacher-paced activities

With four apps, each designed around existing classroom activities, Spiral gives you the power to do formative assessment with anything you teach.

Quickfire

Carry out a quickfire formative assessment to see what the whole class is thinking

Discuss

Create interactive presentations to spark creativity in class

Team Up

Student teams can create and share collaborative presentations from linked devices

Clip

Turn any public video into a live chat with questions and quizzes

Tried out the canvas response option on @SpiralEducation & it's so awesome! Add text or drawings AND annotate an image! #R10tech

Using @SpiralEducation in class for math review. Student approved! Thumbs up! Thanks.

Absolutely amazing collaboration from year 10 today. 100% engagement and constant smiles from all #lovetsla #spiral

Students show better Interpersonal Writing skills than Speaking via @SpiralEducation Great #data #langchat folks!

Dr Ayla Göl
@iladylayla

A good tool for supporting active #learning.

The Team Up app is unlike anything I have ever seen. You left NOTHING out! So impressed!