Image Processing Min/Max filter

147 vues (au cours des 30 derniers jours)
Marco Rossi
Marco Rossi le 28 Avr 2016
Commenté : Marco Rossi le 1 Mai 2016
Hi,
i'm trying to execute a min/max filtering of an image but i'm meeting some problems. The filter consist in calculating the upper and lower envelope. In particularly for the upper envelop (Ue) i substituted for every pixel the max value in a 3X3-pixel neighborhood, and for the lower envelop (Le) the min value. Finally i calculated the filtered image
Im = (Im - Le) ./ (Ue -Le);
but the result is not correct in my opinion. I think the problem is in the the conversion of the format image because i don't well understand the difference between the commands "im2double" and "double".
This is the code
Im = imread('image.bmp');
Im = im2double(Im);
[r c] = size(Im);
ImL = zeros(r,c);
ImU = zeros(r,c);
for i=2:r-1
for j=2:c-1
M = Im(i-1:i+1,j-1:j+1);
Min = min(M(:));
Max = max(M(:));
ImL(i,j) = Min;
ImU(i,j) = Max;
end
end
AirF = (Air-AirL)./(AirU-AirL);
AirF = im2uint8(AirF);
Thanks for help

Réponses (1)

Alex Taylor
Alex Taylor le 28 Avr 2016
If you have the image processing toolbox, imerode and imdilate are the min/max filters you are looking for and are much faster than rolling these yourself.
  1 commentaire
Marco Rossi
Marco Rossi le 1 Mai 2016
Thanks for the answer; i didn't know the commands you mentioned, but i'd prefer to implement by myself

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by