Color detection project
I have started this project with very simple concept of masking. But colors exists in hundreds or thousands of shades. In my project code should be able to detect any shade and any color. I am thinking to use the concept of Euclidean distance to find the distance of color from origin, but i can not really do it.
If someone could help me please post your solution.
Here is the code i used. it detects only four colors but from one image only.
%------------------------------------
% Read the image into an array.
filename=input('Input the filename of the image>');
RGB = imread(filename);
RGB = imread('D:\College\Project\Project\Cube.png');
%------------------------------------
% Display the original image.
subplot(2, 3, 1);
imshow(RGB);
title('Original RGB Image');
yellowMask = colorDetectHSV(RGB, [0.2 0.9 0], [0.05 0.05 0.05]); redMask =colorDetectHSV(RGB, [1 1 1], [0.1 0.2 0.2]); blueMask =colorDetectHSV(RGB, [0.6 0.5 0.6], [0.2 0.3 0.4]); % Or can try this for blue color: % blueMask =colorDetectHSV(RGB, [1 0.5 0], [0.4 0.4 0.3]); greenMask =colorDetectHSV(RGB, [0.369 0.786 0.769], [0.2 0.2 0.2]);
% Display them.
subplot(2, 3, 2);
imshow(yellowMask);
title('Yellow Mask');
subplot(2, 3, 3);
imshow(greenMask);
title('Green Mask');
subplot(2, 3, 4);
imshow(blueMask);
title('Blue Mask');
subplot(2, 3, 5);
imshow(redMask);
title('Red Mask');
Euclidean distance is not enough. Look in the File Exchange for John D'Errico's Fuzzy Color Detection.
But if your task really is to "detect any shade and any color", you should consider giving up before you start any development. Seriously. What you want to do cannot reliably be done. There is no scientific definition for what each color is, or where one shade ends and another begins. And color perception is personal, not absolute. See http://blog.xkcd.com/2010/05/03/color-survey-results/
I have several color detection applications in my File Exchange. http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862 Each uses a different method. Feel free to adapt any of them.
3 Comments
Direct link to this comment:
http://mathworks.com/matlabcentral/answers/44107#comment_90698
I don't quite well understand your question... Every color has allready a specific value in your RGB-image. Try:
Direct link to this comment:
http://mathworks.com/matlabcentral/answers/44107#comment_90955
actually this code is able to detect only four colors. i don't know how to expand it so that it can detect a number of colors.
Direct link to this comment:
http://mathworks.com/matlabcentral/answers/44107#comment_90964
Did you look at the work of John D'Errico, or of Image Analyst ?