MATLAB: Image enhancement MATLAB code.

digital image processingedge detectionimage processingImage Processing Toolbox

% Adjust image intensity values or colormap.

f = imadjust(uint8(scratched_image), stretchlim(scratched_image), [0 1]);
% convert to grayscale
img_gray = rgb2gray(f);
% Create morphological structuring element
se = strel('disk',12);
% Top-hat filtering.
th_fhiltered = imtophat(img_gray,se);
figure, imshow(th_fhiltered);
% Adjust image intensity values or colormap.
contrast_adjusted = imadjust(th_fhiltered);
figure, imshow(contrast_adjusted);
% 2-D median filtering
K = medfilt2(img_gray);
% Contrast-limited Adaptive Histogram Equalization
J = adapthisteq(K,'cliplimit',0.5);
% Create predefined 2-D filters
H = fspecial('average', [8 3]);
% N-D filtering of multidimensional images.
f_avg = imfilter(J,H,'replicate');
contrast_adj_image = contrast_adjusted-0.3*f_avg;
I have a few questions,
  1. what is the end result of this routine?
  2. why is top-hat filtering used with 'disk'?
  3. what are the last two lines doing?
  4. Why 'replicate' is used?

Best Answer

  1. It's an edge detection algorithm.
  2. The disk is used so that the background estimation is radially symmetric.
  3. The imfilter line blurs the image. The subtraction from the background corrected image is what causes the edge detection.
  4. 'replicate' is used to avoid intensity change near the outer edges of the image (top, left, bottom, and right sides).