EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial...

19
EE 4780 Bilateral Filter

Transcript of EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial...

Page 1: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

EE 4780

Bilateral Filter

Page 2: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 2

Bilateral Filter

22 22 / 2( ) ( ) / 21ˆ( ) ( )dr

x Ny xI y I x

y x N

I x e e I yK

Intensity (range) proximity

Spatial (domain) proximity

N is a fixed value used to define the spatial neighborhood of the filter

K is the normalization constant

22 22 / 2( ) ( ) / 2 dr

x Ny xI y I x

y x N

K e e

Page 3: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 3

Bilateral Filter – Matlab implementationn=1:1:500; % Generate a vector from 1 to 500; the increment is 1.

I0=zeros(size(n)); % Generate a vector of zeros; the size of the vector is equal to the size of n.I0(1:250)=15; I0(251:end)=10; % Set the first 250 values to 15, and the rest to 10.

I = I0 + 0.5*randn(size(I0)); % 0.5 is the standard deviation of the noisefigure; subplot(2,1,1); plot(n,I0); axis ([190 310 6 18]); title('Original signal');subplot(2,1,2); plot(n,I); axis ([190 310 6 18]); title('Noisy signal');

Page 4: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 4

Bilateral Filter – Matlab implementationsigma_d=10;

N=round(4*sigma_d); % N determines the spatial neighborhood

sigma_r=1.3;

d = -N:1:N;

weights_d = exp(-d.*d/(2*sigma_d*sigma_d));

22 22 / 2( ) ( ) / 21ˆ( ) ( )dr

x Ny xI y I x

y x N

I x e e I yK

The weights depend on the spatial distance (to the center pixel x) only; therefore, it is calculated once and saved.

Page 5: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 5

Bilateral Filter – Matlab implementationsigma_d=10;

N=round(4*sigma_d); % N determines the spatial neighborhood

sigma_r=1.3;

d = -N:1:N;

weights_d = exp(-d.*d/(2*sigma_d*sigma_d));

x=260; % An example

pixels = I(x-N:x+N); % Put the pixels within the neighborhood of the center pixel into a vector.

weights = weights_d .* exp(-(pixels-I(x)).*(pixels-I(x))/(2*sigma_r*sigma_r)) + 0.0001;

weights = weights./sum(weights);

22 22 / 2( ) ( ) / 21ˆ( ) ( )dr

x Ny xI y I x

y x N

I x e e I yK

Add a small number in case weights=0;

Page 6: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 6

Bilateral Filter – Matlab implementationsigma_d=10;

N=round(4*sigma_d); % N determines the spatial neighborhood

sigma_r=1.3;

d = -N:1:N;

weights_d = exp(-d.*d/(2*sigma_d*sigma_d));

x=260;

pixels = I(x-N:x+N); % Put the pixels within the neighborhood of the center pixel into a vector.

weights = weights_d .* exp(-(pixels-I(x)).*(pixels-I(x))/(2*sigma_r*sigma_r)) + 0.0001;

weights = weights./sum(weights); % Normalize the weights so that its sum is equal to 1.

I_output(x) = sum(weights.*pixels);

22 22 / 2( ) ( ) / 21ˆ( ) ( )dr

x Ny xI y I x

y x N

I x e e I yK

Page 7: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 7

Bilateral Filter

figure; plot([x-N:x+N],weights)

Page 8: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 8

Bilateral Filter – Matlab implementationd = -N:1:N;

weights_d = exp(-d.*d/(2*sigma_d*sigma_d));

% Repeat for all pixels

I_output = I;

for i=1+N:length(I)-N, % Be careful with the borders; do not exceed the dimensions.

pixels = I(i-N:i+N);

weights = weights_d .* exp(-(pixels-I(i)).*(pixels-I(i))/(2*sigma_r*sigma_r)) + 0.0001;

weights = weights./sum(weights);

I_output(i) = sum(weights.*pixels);

end

figure; plot(n,I_output);

Page 9: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 9

Bilateral Filter

1.3r

Input

Gaussian

Bilateral10d

10d

Page 10: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 10

Bilateral Filter vs. Gaussian LPF

MSE=49.8

MSE=30.3

MSE=42.5

sigma_d=10MSE=99.57

MSE=100.0

2d

10r

30r

50r

10n

Gaussian

Page 11: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 11

Wiener Filter

WXY

YXwx

x22

2

ˆ

Wiener Filter

Original

imageNoiseNoisy

image

Noise varianceSignal variance

When sigma_x << sigma_w, (noise is very large), X goes to 0.When sigma_x >> sigma_w, (noise is very small), X goes to Y.

Page 12: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 12

Wiener Filter

222ˆ wx y

2x is estimated by

Since variance is nonnegative, it is modified as

],0max[ˆ 222wx y

2 2 22

1ˆ max[0, ]x i w

i

yN

Estimate signal variance locally:

N

N

Estimate manually by looking at the variance in a smooth region.

Page 13: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 13

Wiener Filter

Noisy, =10 Denoised (3x3neighborhood)Mean Squared Error is 56

wiener2 in Matlab

Page 14: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 14

Image Enhancement

1 1 1

1 8 1

1 1 1

This is an high-pass filter.It removes low-frequency components.

Page 15: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 15

Image Enhancement

High-boost or high-frequency-emphasis filter Sharpens the image but does not remove the low-frequency

components unlike high-pass filtering

Page 16: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 16

Image Enhancement

High-boost or high-frequency-emphasis filter High pass = Original – low pass High boost = A*(Original) + High pass

Part of the low-frequency components are added back to the high frequency components

Page 17: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 17

Image Enhancement

1 1 1

1 8 1

1 1 1

A high-pass filter A high-boost filter

1 1 1

1 9 1

1 1 1

Page 18: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 18

Image Enhancement

High-boost or high-frequency-emphasis filter

Page 19: EE 4780 Bilateral Filter. Bahadir K. Gunturk2 Bilateral Filter Intensity (range) proximity Spatial (domain) proximity N is a fixed value used to define.

Bahadir K. Gunturk 19

Spatial Filtering