Specular Reflections Removal in endoscopic image
조회 수: 4 (최근 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!