-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathFindColorParam.m
More file actions
43 lines (29 loc) · 1.21 KB
/
FindColorParam.m
File metadata and controls
43 lines (29 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
function [AvgColor ColorVariance ClusterCentroids] = FindColorParam(im, WorkBlockMask, ColorClusterSize)
%FINDCOLORPARAM
% This function gets the average color of the blobs, the variance of the
% RGB values, and a few (ahem) color centroids using kmeans. Color
% Centroids basically represent the average colors in the image.
% Detailed explanation goes here
im = (imresize(im, [250, NaN]));
WorkBlockMask = (imresize(WorkBlockMask, [250, NaN]));
cutout = uint8(double(im).*repmat(WorkBlockMask,[1,1,3]));
RedSum = sum(sum(cutout(:,:,1)));
GreenSum = sum(sum(cutout(:,:,2)));
BlueSum = sum(sum(cutout(:,:,3)));
RedAvg = RedSum/sum(sum(WorkBlockMask));
GreenAvg = GreenSum/sum(sum(WorkBlockMask));
BlueAvg = BlueSum/sum(sum(WorkBlockMask));
AvgColor = [RedAvg GreenAvg BlueAvg];
RVals = im(:,:,1);
RVals = double(RVals(WorkBlockMask));
GVals = im(:,:,2);
GVals = double(GVals(WorkBlockMask));
BVals = im(:,:,3);
BVals = double(BVals(WorkBlockMask));
[idx, ClusterCentroids] = kmeans([RVals GVals BVals], ColorClusterSize, 'EmptyAction', 'singleton');
RG = cov(RVals, GVals);
RB = cov(RVals, BVals);
GB = cov(GVals, BVals);
ColorVariance = [RG(1,1) GB(1,1) RB(2,2);
RG(1,2) GB(1,2) RB(1,2)];
end