Histograms 1D Histograms 3D Histograms Equalisation Histogram Comparison Back Projection ...

30
Histograms 1D Histograms 3D Histograms Equalisation Histogram Comparison Back Projection k-means clustering Histograms Based on A Practical Introduction to Computer Vision with OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 1

Transcript of Histograms 1D Histograms 3D Histograms Equalisation Histogram Comparison Back Projection ...

Page 1: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histograms1D Histograms3D HistogramsEqualisationHistogram ComparisonBack Projectionk-means clustering

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 1

Page 2: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms

Determine the frequency of brightness valuesInitialise:

h(z) = 0 for all values of zCompute:

For all pixels (i.j): h(f(i,j))++

Histograms Slide 2Based on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014

Page 3: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms

Is this useful?o Global informationo Useful for classification ?o Not unique

Histograms Slide 3Based on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014

Page 4: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms

Histograms Slide 4

Mat display_image;MatND histogram;const int* channel_numbers = { 0 };float channel_range[] = { 0.0, 255.0 };const float* channel_ranges = channel_range;int number_bins = 64;calcHist( &gray_image, 1, channel_numbers, Mat(), histogram, 1, &number_bins, &channel_ranges );OneDHistogram::Draw1DHistogram( &gray_histogram, 1, display_image );imshow("Greyscale histogram", display_image);

Based on A Practical Introduction to Computer Vision with OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014

Page 5: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms – SmoothingLocal minima and maxima are useful.But how can we deal with noise though?

Smooth the histogram…For all values v: hnew(v) = ( h(v-1) + h(v) + h(v+1) ) / 3

What do we do at the ends?Do not compute OR Wraparound OR Duplicate values OR Reflect values OR Constant values ??

Histograms Slide 5Based on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014

Page 6: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms – Smoothing

Histograms Slide 6

MatND smoothed_histogram = histogram[channel].clone();for(int i = 1; i < histogram[channel].rows - 1; ++i) smoothed_histogram[channel].at<float>(i) = (histogram.at<float>(i-1) + histogram.at<float>(i) + histogram.at<float>(i+1)) / 3;

Based on A Practical Introduction to Computer Vision with OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014

Page 7: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms – Colour HistogramsDetermine histograms for each channel independently…

Choice of colour space…

Histograms Slide 7Based on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014

Page 8: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms – Colour Histograms

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 8

Page 9: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

1D Histograms – Colour Histograms

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 9

MatND* histogram = new MatND[image.channels() ];vector<Mat> channels(image.channels() );split( image, channels );const int* channel_numbers = { 0 };float channel_range[] = { 0.0, 255.0 };const float* channel_ranges = channel_range;int number_bins = 64;for (int chan=0; chan < image.channels(); chan++)

calcHist( &(channels[chan]), 1, channel_numbers, Mat(), histogram[chan], 1, &number_bins, &channel_ranges );

OneDHistogram::Draw1DHistogram(histogram, image.channels(), display_image );

Page 10: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

3D HistogramsChannels are not independentBetter discrimination comes from considering all channels simultaneouslyNumber of cells?

8 bits =16,777,216

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 10

Page 11: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

3D HistogramsReduce quantisation

6 bits = 262,144 4 bits = 4,096 2 bits = 64

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 11

Page 12: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

3D Histograms

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 12

MatND histogram;int channel_numbers[] = { 0, 1, 2 };int* number_bins = new int[image.channels()];for (ch=0; ch < image.channels(); ch++)

number_bins[ch] = 64;float ch_range[] = { 0.0, 255.0 };const float* channel_ranges[] = {ch_range, ch_range, ch_range};calcHist( &image, 1, channel_numbers, Mat(), histogram, image.channels(), a_number_bins, channel_ranges );

Page 13: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Equalisation

If an image has insufficient contrastHuman can distinguish 700-900 greyscalesEvenly distribute the greyscales…

Result has missing greyscales

Normally equalise only the greyscales / luminance

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 13

Page 14: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Equalisation// Create a lookup table to map the luminances// h[x] = histogram of luminance values image f(i,j).pixels_so_far = 0num_pixels = image.rows * image.colsoutput = 0for input = 0 to 255 pixels_so_far = pixels_so_far + h[ input ] new_output = (pixels_so_far*256) / (num_pixels+1) LUT[ input ] = (output+1+new_output) / 2 output = new_output// Apply the lookup table LUT(x) to the image:for every pixel f(i,j) f’(i,j) = LUT[ f(i,j) ]

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 14

Page 15: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Equalisation

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 15

split(hls_image, channels);vector<Mat> channels( hls_image.channels() );equalizeHist( channels[1], channels[1] );merge( channels, hls_image );

Page 16: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram ComparisonTo find similar images…

Use metadataCompare images

Compare the colour distributionsNeed a metric for comparisons…

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 16

Page 17: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram Comparison

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 17

Page 18: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram Comparison – Metrics

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 18

Page 19: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram Comparison – Earth MoverAn alternative to the metrics is to compute the Earth Mover’s Distance…

Minimum cost for turning a distribution into another distributionCompare images

1D solution:EMD(-1) = 0EMD(i) = h1(i) + EMD(i-1) - h2(i)Earth Mover’s Distance = Σi | EMD(i) |

Colour EMD is harder to compute…

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 19

Page 20: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram Comparison

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 20

normalize( histogram1, histogram1, 1.0); normalize( histogram2, histogram2, 1.0); double matching_score = compareHist( histogram1, histogram2, CV_COMP_CORREL);

We can also use Chi-Square (CV_COMP_CHISQR), Intersection (CV_COMP_INTERSECT) orBhattacharyya (CV_COMP_BHATTACHARYYA) metrics or alternatively can use the Earth Mover’s Distance function (EMD())

Page 21: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram Back ProjectionA better approach to selecting colours (based on samples):

1. Obtain a representative sample set of the colours.

2. Histogram those samples.3. Normalize that histogram so that the

maximum value is 1.0. 4. Back project the normalized histogram

onto any image f(i,j).5. This will provide a ‘probability’ image p(i,j)

which indicates the similarity between f(i,j) and the sample set.

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 21

Page 22: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

Histogram Back Projection

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 22

calcHist( &hls_samples_image, 1, channel_numbers, Mat(), histogram,image.channels(),number_bins,channel_ranges);normalize( histogram, histogram, 1.0);Mat probabilities = histogram.BackProject( hls_image );

Page 23: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means ClusteringWe’d like to

identify significant colours in imagesConcise descriptionsObject tracking

reduce the number of colours in any imageCompression

How do we find the best colours?

k means clusteringCreates k clusters of pixels Unsupervised learning

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 23

Page 24: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means Clustering – Algorithm Number of clusters (k) is known in advance (or determine the k with the maximum confidence)

Initialise the k cluster exemplars either randomly or use the first k patterns or …

1st pass: Allocate patterns to the closest existing cluster exemplar and recompute the exemplar as the centre of gravity

2nd pass: Using the final exemplars from the first pass allocate all patterns cluster exemplars.

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 24

Page 25: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means Clustering

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 25

Page 26: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means ClusteringDifferent values of k (10, 15 & 20 random exemplars):

Not all clusters end up with patternsMore exemplars generally gives a more faithful representation

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 26

Page 27: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means ClusteringChoosing the best number of exemplars

Evaluate the resulting clusters

Davies-Bouldin index measures cluster separation:DB = 1/k Σ1..k maxi≠j ((Δi + Δj)/ δi.j)

OR Check that distributions are normal

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 27

Page 28: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means ClusteringUsing random exemplars gives non-deterministic results (30 random exemplars each time):

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 28

Page 29: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means Clustering

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 29

// Store the image pixels as an array of samplesMat samples(image.rows*image.cols, 3, CV_32F);float* sample = samples.ptr<float>(0);for(int row=0; row<image.rows; row++) for(int col=0; col<image.cols; col++) for (int channel=0; channel < 3; channel++)

samples.at<float>(row*image.cols+col,channel) = (uchar) image.at<Vec3b>(row,col)[channel];

// Apply k-means clustering, determining the cluster // centres and a label for each pixel. ….

Page 30: Histograms  1D Histograms  3D Histograms  Equalisation  Histogram Comparison  Back Projection  k-means clustering Histograms Based on A Practical.

k means Clustering

HistogramsBased on A Practical Introduction to Computer Vision with

OpenCV by Kenneth Dawson-Howe © Wiley & Sons Inc. 2014 Slide 30

Mat labels, centres;kmeans(samples, k, labels, TermCriteria( CV_TERMCRIT_ITER| CV_TERMCRIT_EPS, 0.0001, 10000), iterations, KMEANS_PP_CENTERS, centres );// Use centres and label to populate result imageMat& result_image = Mat( image.size(), image.type() );for(int row=0; row<image.rows; row++) for(int col=0; col<image.cols; col++) for (int channel=0; channel < 3; channel++) result_image.at<Vec3b>(row,col)[channel] = (uchar) centres.at<float>( *(labels.ptr<int>( row*image.cols+col )), channel);