grey image color restoration after image subtraction

1 view (last 30 days)
After my image subtraction with Matlab, the subtracted image has some black area formed due to the subtraction. Is there any ways that I can restore the black region to its original color?
I have tried to adjust the brightness or intensity but they did not work.

Accepted Answer

Image Analyst
Image Analyst on 2 Jul 2022
Are your images color or grayscale?
To avoid clipping to 0, like will happen if you subtract a larger uint8 number from a smaller one, you can cast to double
subtractionImage = double(testImage) - double(backgroundImage);
imshow(subtractionImage, []);
Why are you getting 0? Is it because your test image is the same intensity as your background image there? Or your background image is brighter than your test image?
Why are you doing subtraction? Is it to flatten the background to correct for lighting non-uniformities and lens shading? If so you're probably better off doing a background division rather than a background subtraction.
Can you upload your test image and background image?
  2 Comments
Yiu On LEUNG
Yiu On LEUNG on 4 Jul 2022
Thank you for the reply. After carefully considering your advices, I realised that it maybe caused by the contrast problem, so I performed some image prepoecessing and solved the issue.

Sign in to comment.

More Answers (1)

Walter Roberson
Walter Roberson on 2 Jul 2022
mask = repmat(all(Subtracted == 0, 3), 1, 1, 3);
Subtracted(mask) = Original(mask);

Categories

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by