Specular Reflections Removal in endoscopic image

3 次查看(过去 30 天)
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 个)

Image Analyst
Image Analyst 2024-2-3
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 个评论
DGM
DGM 2024-2-4
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 2024-2-4
% Threshold
mask = grayImage >= 245; % Adjust as necessary
% Do inpainting to fill the white regions with surrounding pixel values.
grayImageRepaired = regionfill(grayImage, mask);

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Image Segmentation and Analysis 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by