Clear Filters
Clear Filters

Recognition of colored percentage of a white paper using Image Processing

1 view (last 30 days)
Hello,
I want to estimate the percentage of the following image (see attachment), where there are different colors and intensity. There is also an annoing shadow in the upper part of the image.
I already tryed to compute the gray scale and set simply a threshold (-->binary image), but this method is not enougth robust and leads wrong results and a partial recognition of the painted stain (eg only the black and green spot).
How can I get a better estimation of such colored % of the image surface (without differentiate between colors)?
At a glance, I think that the answer could be about 25%, but I want to find the exact answer using MATLAB.
Thank you and best regards, A
Edit:
  1. I just added a version without shadows (see right image) for start with a simplier case.
  2. Does it can help to have a picture of a white paper as "reference image" without colors in order to compare it with the colored image?
With shadow Without shadow
  6 Comments
Alberto Mora
Alberto Mora on 19 Nov 2020
Edited: Alberto Mora on 19 Nov 2020
I had an idea for a further development: does can help if I add a picture of a "white" paper as reference image for find the differences between the "colored" image (without shadows) and the "white" reference image (without shadows)?
Alberto Mora
Alberto Mora on 20 Nov 2020
Edited: Alberto Mora on 20 Nov 2020
Small update, I notice that applying a thresholding method on
stdfilt(image_grayScale)
could an interesting solution to divide the background from the colored region (i.e. amplify the difference between background and colored region). It seems working without problems also for shadows image. I will update if there are further improvments.
I check this interesing link, but in this case the usage of simple thresholding on the raw lead to poor results.

Sign in to comment.

Answers (1)

cr
cr on 18 Nov 2020
You can even out the light intensity across the image using imtophat(). Then use segmentation and/or ROI based processing functions -like roicolor(), activecontour, bfscore, etc. Shouldn't be hard.

Products


Release

R2020a

Community Treasure Hunt

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

Start Hunting!