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

 Accepted Answer

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 Comment

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'

Sign in to comment.

More Answers (1)

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.

Categories

Find more on Image Processing and Computer Vision in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!