Image Processing Min/Max filter

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

Antworten (1)

Alex Taylor
Alex Taylor am 28 Apr. 2016

2 Stimmen

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 Kommentar

Marco Rossi
Marco Rossi am 1 Mai 2016
Thanks for the answer; i didn't know the commands you mentioned, but i'd prefer to implement by myself

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Images finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 28 Apr. 2016

Kommentiert:

am 1 Mai 2016

Community Treasure Hunt

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

Start Hunting!

Translated by