How to Refine Color Identification Code?
Info
This question is closed. Reopen it to edit or answer.
Show older comments
For this project, I am trying to write code that can identify different colored skittles in a jpeg image and then report a count of (the number of) each different color skittle. So far, I have code that works decently using a binary method, but there are still issues; the count is often off somewhat. Also, before processing, the code first reduces the info in the image by pixelating it. This helps, but I have to modify how I resize the image for any given picture, which isn't ideal. The code should be able to work on any provided skittles image without being modified. I am not allowed to use loops of any kind. I have included my code. What are some ways I can refine it to work more precisely on any provided image?
% clear;clc;close all
Published=datestr(now, 21)
figure(1)
m = imread('skittles1.jpg');
imshow(m)
[X,map]= rgb2ind(m,5);
figure(2)
imshow(X,map);
RGB = ind2rgb(X,map);
figure
imshow(RGB)
BW = im2bw(RGB);
r=m(:,:,1);
g=m(:,:,2);
b=m(:,:,3);
y = [r > 185 & r < 260 & g > 190 & g < 255 & b > -1 & b < 100];
yt=sum(y(:));
o = [r > 165 & r < 260 & g > 15 & g < 90 & b > -1 & b < 30];
ot=sum(o(:));
gr = [r > 20 & r < 95 & g > 150 & g < 230 & b > -1 & b < 70];
grt=sum(gr(:));
re = [r > 100 & r < 230 & g > 3 & g < 35 & b > 5 & b < 55];
ret=sum(re(:));
p = [r > 5 & r < 117 & g > 0 & g < 130 & b > -1 & b < 150];
pt=sum(p(:));
loc = find(re==0);
loc1 = find(re==1);
r(loc1)=0;
g(loc1)=0;
b(loc1)=0;
r(loc)=255;
g(loc)=255;
b(loc)=255;
new=cat(3,r,g,b);
figure
BW = im2bw(new);
ComplementImage=imcomplement(BW);
HolesClearedImage = imfill(ComplementImage,'holes');
cc = bwconncomp(HolesClearedImage,18);
number = cc.NumObjects;
[labeledImage, numberOfObject] = bwlabel(HolesClearedImage);
measurements = regionprops(HolesClearedImage, 'Centroid', 'Area');
numberOfCircles = length(measurements);
imshow(HolesClearedImage)
end
1 Comment
Walter Roberson
on 30 Nov 2015
Answers (0)
This question is closed.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!