Specular Reflections Removal in endoscopic image

4 views (last 30 days)
I am currently processing images of cervical endoscopy, with a primary focus on blood vessels on the surface. However, due to the non-polarized image acquisition system, specular reflections appear in the images. I have identified these points using the Sobel algorithm (as shown the image below in green). Now, I am wondering if there is a way to remove these specular reflection points and compensate for the pixels that are removed by replacing them with nearby pixels. Thank you so much.
  1 Comment
Ridhima Chopra
Ridhima Chopra on 3 Feb 2024
Could you lemme know if u found the solution?
And how did u find the specular reflections?

Sign in to comment.

Answers (1)

Image Analyst
Image Analyst on 3 Feb 2024
Try thresholding, then us regionfill
Basically (untested):
% Get individual color channels:
[r, g, b] = imsplit(rgbImage);
% Convert to gray scale so we can find specular regions, which will be bright.
grayImage = rgb2gray(rgbImage);
% Threshold
mask = grayImage >= 245; % Adjust as necessary
% Do inpainting to fill the white regions with surrounding pixel values.
r = regionfill(r, mask);
g = regionfill(g, mask);
b = regionfill(b, mask);
% Rebuild new, fixed/repaired RGB image:
rgbRepaired = cat(3, r, g, b);
  3 Comments
DGM
DGM on 4 Feb 2024
Then apply the same operations to whatever image you have. The only difference is that you don't need to split and concatenate the image channels.
  • read the image
  • derive a logical mask describing the specular reflections
  • apply regionfill
  • done
Image Analyst
Image Analyst on 4 Feb 2024
% Threshold
mask = grayImage >= 245; % Adjust as necessary
% Do inpainting to fill the white regions with surrounding pixel values.
grayImageRepaired = regionfill(grayImage, mask);

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!