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 个评论
Ridhima Chopra
2024-2-3
Could you lemme know if u found the solution?
And how did u find the specular reflections?
回答(1 个)
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
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
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 Center 和 File Exchange 中查找有关 Image Segmentation and Analysis 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!