Compare Colors of 2 Images

Hey,
So my problem is I have 2 samples Images like the ones attached and I want to compare the difference in color between them. How can I do it ? Is taking an average of all rgb values of each image and then subtracting them from one another give the right value ?

9 Comments

Hey, So My Samples are in the image attached. How do I compare their colors ?
What I have come up with is finding this:
x1=imread('b1.jpg');
y1=imresize(x1,1/200);
r1=y1(:,:,1);
g1=y1(:,:,2);
b1=y1(:,:,3);
l1=r1(2,2,1);
m1=g1(2,2,1);
n1=b1(2,2,1);
x2=imread('b2.jpg');
y2=imresize(x2,1/200);
r2=y2(:,:,1);
g2=y2(:,:,2);
b2=y2(:,:,3);
l2=r2(2,2,1);
m2=g2(2,2,1);
n2=b2(2,2,1);
dr=l1-l2
dg=m1-m2
db=n1-n2
chinnapparaj rahul
chinnapparaj rahul on 30 Mar 2016
Moved: DGM on 13 Feb 2023
hi what is the meaning of the code g1=y1(:,:,2);
m1=g1(1,1,1);
Walter Roberson
Walter Roberson on 30 Mar 2016
Moved: DGM on 13 Feb 2023
Color images are stored in 3 dimensional arrays, first the red plane then the green plane and then the blue plane -- RGB, Red Green Blue. So y1(:,:,2) is accessing the second plane, the Green plane. With the plane having been extracted, individual pixels can be examined, such as g1(1,1,1) extracting the either the "top left" or "bottom left" pixel (depending on your convention.)
Image Analyst
Image Analyst on 30 Mar 2016
Moved: DGM on 13 Feb 2023
so m1 is the red value (because the third index is 1) of the upper left pixel (in row 1, column1, which are the first 2 indexes).
Walter Roberson
Walter Roberson on 30 Mar 2016
Moved: DGM on 13 Feb 2023
No, not this time. g1 is the extracted green plane, and then m1 is extracting from that plane. They coded 3 indices to index the 2D matrix, which is permitted but confusing.
Image Analyst
Image Analyst on 30 Mar 2016
Moved: DGM on 13 Feb 2023
Oh, you're right. I would have thought supplying a third index to a 2D array would have thrown an error. This also glaringly points out why I suggest descriptive variable names, like "greenChannel", rather than one or two letter names.
the best way would be to calculate the color histogram and then compare the color histograms by the the built in functions available in matlab
ardalan benam :
No, color histograms are not adequate for recognizing mis-manufactured parts.
Instead of RGB comparison I prefer YCbCr and HSI plane comparison for better indication of colour differed areas.

Sign in to comment.

Answers (3)

Iain
Iain on 6 Mar 2014
I think that if you define "colour" correctly, that you will easily figure out the right measurement.
I also think that you need to take care as the cameras may differ drastically.

1 Comment

I would be using a scanner to have the same light conditions.
How mus I define colour correctly ? RGB comparison is the right step ?

Sign in to comment.

Image Analyst
Image Analyst on 6 Mar 2014
You didn't attach the images. Sure, you can just take the mean RGB and compare/subtract those - that's one way. There are other ways. How you should proceed actually really depends on what kind of information you need to do what you want to do . So, unless the pictures are identical for every single pixel, there will be a difference. But how big does the difference need to be for you to take action on that knowledge? If it's only the red value of one single pixel, do you want to know that? Or will that not affect what decisions you'll make? If the images are nominally the same (same scene and field of view and the images are aligned) then you can calculate the delta E (color difference) between every single pixel. What exactly do you want to do once you know that there is a color difference? Do you want to do histogram matching?

2 Comments

Hey, Thank you for the reply :) Can I know how Can Delta E comparison help me solve the problem statement ? Once I know the colour difference I can know if the product produced by a machine on which I am doing comparison matches the master product. One of the physical properties the product must match is the colour. The code must tell me how far off I am from the master colour sample. How will histogram matching help me ? Can you shed some light ?
That's EXACTLY why delta E was invented. It's main purpose in life is to specify color differences, especially in industrial manufacturing situations where you have to match a new batch with a standard color. Think of all the products out there that have a particular color with them: Tide orange, Coca Cola Red, Pepto Bismol pink, etc. How do you think they maintain the same color year after year despite changes in inks, dyes, and other raw materials? They use delta E. It's a very well established method.
Go here for formulas for RGB to LAB and from LAB to delta E. http://www.easyrgb.com/index.php?X=DELT Also see the delta E app in my File Exchange http://www.mathworks.com/matlabcentral/fileexchange/?term=authorid%3A31862

Sign in to comment.

David Setiabudi
David Setiabudi on 17 May 2016
Delta E is to compare one color to ANOTHER COLOR. Not one full colored image with it's colorful structure TO ANOTHER COLORFULL IMAGE............
We got the same problem... LOOKING FOR THE CMSSIM....

3 Comments

That problem statement is too vague to respond to. Which of the following do you need assistance with?
  • illumination correction
  • image registration
  • texture analysis
  • Content Based Image Retrieval (CBIR)
  • pattern matching
  • feature extraction
  • scene analysis
  • stereo rectification
  • logical reasoning about scenes
  • gesture recognition
  • emotion analysis
  • bioanalytics: fingerprint, facial recognition
  • motion analysis
  • compressive sensing
For example, is the task statement: "Monitor this set of outdoor cameras and recognize and point out cooperative tool use by non-humans" ?
The original poster wanted to compare the color of one green part to another. In that case, getting the average CIE LAB colors of the green parts and plugging them into Delta E seems very reasonable.
Someone wrote an entire masters thesis about CMSSIM just a few years ago. http://ethesis.nitrkl.ac.in/5761/1/212EE1388-5.pdf

Sign in to comment.

Categories

Find more on Image Processing and Computer Vision in Help Center and File Exchange

Products

Asked:

on 6 Mar 2014

Moved:

DGM
on 13 Feb 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!