How can I calculate euclidian distance in RGB spaces for a skin lesion ?

12 views (last 30 days)
To be clear I want to find The Euclidean distance D which is calculated between each pixel color and the six colors ( white , red, light brown , dark brown , blue gray and black ). I converted the RGB color space to the CIE Labcolor space but I don't know how to continue . I attach my code so far and an image.
  1 Comment
William Rose
William Rose on 19 Sep 2022
WhenI try to runthe script I get the error
Error using imread (line 349)
File "color.png" does not exist.
Error in xromadik (line 32)
rgbImage= imread('color.png');

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 22 Sep 2022
"I want to find the percentage of colour appearance for each one of the six colours (white , red, light brown , dark brown , blue gray and black ).What i have to do?" <== See attached Discriminant Analysis demo. It does exactly that.
  2 Comments
JovanS
JovanS on 23 Sep 2022
Ok your code was really helpful but i have some questions in order to understand how it works.
If i have understand how it works i have to enter 6 as the number of classes (each class is for a specific color from the colors above and then when i have to draw the sample pixel colors i have to draw the whole skin lesion in order to find the percentage of colour appearance for each one of the six colours. Right?

Sign in to comment.

More Answers (2)

Image Analyst
Image Analyst on 19 Sep 2022
Edited: Image Analyst on 19 Sep 2022
Use this function: deltaE
You will need to calibrate your images with known color standards, otherwise the delta E you get is totally dependent on the lighting you use and your exposure time. See attached tutorial.

William Rose
William Rose on 19 Sep 2022
Since there is a file missing which I need to run your code, I will just give a few suggesitons.
  1. Post the simplest possible example that demonstrates the problem or what you are trying to do.
  2. If you want to compute distance between two specific colors in CIE space, use dist=imcolordiff(c1,c2), where c1, c2 are RGB colors.
  3. To get a monochrome image whose gray scale values represent color distance (in CIE space) between corresponding pixels of 2 images, use im3=imcolordiff(im1,im2), where im1, im2 are RGB images.
See imcolordiff help for additional options and examples. Good luck.
  6 Comments
JovanS
JovanS on 22 Sep 2022
I do not have a system or camera to calibrate, I just have two already taken images and i want to find the percentage of colour appearance for each one of the six colours (white , red, light brown , dark brown , blue gray and black ).What i have to do? @Image Analyst
Image Analyst
Image Analyst on 23 Sep 2022
You can train it and classify it with a discriminant classifier. See attached demo and adapt as needed.
Or you could use k-nearest neighbors.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!