Filter löschen
Filter löschen

Strange 3x3 Lowpass filter

2 Ansichten (letzte 30 Tage)
Fabio Corres
Fabio Corres am 11 Mär. 2017
Bearbeitet: Fabio Corres am 12 Mär. 2017
I need to perform an article about hdr imagining and i see a formula that smooth the pixel.But it is different formulla. Can someone help me to code it on matlab
but i think first iteration will be problem. when i and j start with 1 and k is -1 first iteration will be ymax(0,0) but there is no such a thing like that in MATLAB.I think we should add +1 near i+k and j+l.
Thank you

Akzeptierte Antwort

Chad Greene
Chad Greene am 11 Mär. 2017
It looks like a pretty straightforward 3x3 averaging filter. The catch is you have to start with (i=2,j=2) so i+(-1) will be 1 and same for j. You can do this pixel by pixel, or you can do it much faster with imfilter:
ylpf = imfilter(ymax,fspecial('average',[3 3]));
No loops necessary.
  1 Kommentar
Chad Greene
Chad Greene am 11 Mär. 2017
If you do not have the Image Processing toolbox, you can use conv2 instead:
P = peaks(50) + 2*rand(50);
% With image toolbox:
Pf = imfilter(P,fspecial('average',[3 3]));
% Without image toolbox:
Pf2 = conv2(P,ones(3)/9,'same');
figure
subplot(1,3,1)
imagesc(P)
title 'noisy data'
subplot(1,3,2)
imagesc(Pf)
title 'imfilter'
subplot(1,3,3)
imagesc(Pf2)
title 'conv2'

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Walter Roberson
Walter Roberson am 11 Mär. 2017
There is no problem if you restrict i to be in [2, (number of rows - 1)] and restrict j to be in [2, (number of columns - 1)]
For areas outside that, the formula is not well defined.
Note: consider using the single statement
y_lpf = conv2(y_max, ones(3,3)/9, 'same');
... except, that is, that the result is well defined at the edges.

Community Treasure Hunt

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

Start Hunting!

Translated by