ee 4780 bilateral filter. bahadir k. gunturk2 bilateral filter intensity (range) proximity spatial...
TRANSCRIPT
EE 4780
Bilateral Filter
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
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');
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.
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;
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
Bahadir K. Gunturk 7
Bilateral Filter
figure; plot([x-N:x+N],weights)
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);
Bahadir K. Gunturk 9
Bilateral Filter
1.3r
Input
Gaussian
Bilateral10d
10d
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
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.
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.
Bahadir K. Gunturk 13
Wiener Filter
Noisy, =10 Denoised (3x3neighborhood)Mean Squared Error is 56
wiener2 in Matlab
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.
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
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
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
Bahadir K. Gunturk 18
Image Enhancement
High-boost or high-frequency-emphasis filter
Bahadir K. Gunturk 19
Spatial Filtering