图像增强:主要是一种 主观处理,而图像复原很大程度上是一种 客观处理。
5.1 图像退化/复原处理的一个模型
如图5.1 本章把图像退化建模为一个算子 H \mathcal{H} H 该算子 与一个加性噪声项 η ( x , y ) η(x,y) η(x,y) 共同对输入图像 f ( x , y ) f(x,y) f(x,y) 进行运算,生成一幅退化图像 g ( x , y ) g(x,y) g(x,y)。
如果
H
\mathcal{H}
H 是一个线性位置不变算子,那么空间域中的退化图像为:
g ( x , y ) = h ( x , y ) ⋆ f ( x , y ) + η ( x , y ) (5.1) g(x, y)=h(x, y) \star f(x, y)+\eta(x, y)\tag{5.1} g(x,y)=h(x,y)⋆f(x,y)+η(x,y)(5.1)
由空间域卷积定理可知,式(5.1)在频率域中的等效公式为:
G
(
u
,
v
)
=
H
(
u
,
v
)
F
(
u
,
v
)
+
N
(
u
,
v
)
G(u, v)=H(u, v) F(u, v)+N(u, v)
G(u,v)=H(u,v)F(u,v)+N(u,v)
5.2 噪声模型
5.2.1 噪声的空间和频率特性
当噪声的傅里叶谱是常量时,这类噪声通常称为白噪声。
除了空间周期噪声(5.2.3节, 教材P225)之外,本章假设噪声与空间坐标无关,并且与图像本身也不相关。
5.2.2 6种重要的噪声概率密度函数
5.3 只存在噪声的复原——空间滤波
5.3.1 均值滤波器
- 算术平均滤波器(最简单的均值滤波器)
f ^ ( x , y ) = 1 m n ∑ ( r , c ) ∈ S x y g ( r , c ) \hat{f}(x, y)=\frac{1}{m n} \sum_{(r, c) \in S_{x y}} g(r, c) f^(x,y)=mn1(r,c)∈Sxy∑g(r,c)
均值滤波平滑图像中的局部变化,会降低图像噪声,但会模糊图像。
%-------------------大小为5x5的算术平均滤波器--------------%
kernel = ones(5,5)/25;
g1=imfilter(f,kernel);
figure; imshow(g1);
imwrite(g1,'3×3 算术均值滤波图像.tif');
- 几何均值滤波器
f ^ ( x , y ) = [ ∏ ( r , c ) ∈ S x y g ( r , c ) ] 1 m n \hat{f}(x, y)=\left[\prod_{(r, c) \in S_{x y}} g(r, c)\right]^{\frac{1}{m n}} f^(x,y)= (r,c)∈Sxy∏g(r,c) mn1
几何均值滤波器实现的平滑可与算术平均滤波器相比,但损失的图像细节更少。“几何”二字来源于圆上的弦长。几何均值会略微惩罚偏离均值的成分。
gp = zeros(M+4, N+4);
gp(3:M+2,3:N+2) = f;
gp(1,:) = gp(3,:); %用图像最外层的值扩展
gp(2,:) = gp(3,:);
gp(M+4,:)=gp(M+2,:);
gp(M+3,:)=gp(M+2,:);
gp(:,2)=gp(:,3);
gp(:,1)=gp(:,3);
gp(:,N+4)=gp(:,N+2);
gp(:,N+3)=gp(:,N+2);
g2 = zeros(M, N);
for x = 3:M+2
for y = 3:N+2
g_gmf = 1;
for i = -2:2
for j = -2:2
g_gmf = g_gmf*gp(x+i,y+j);
end
end
g2(x-2,y-2)=g_gmf;
end
end
g2=g2.^(1/9);
g2=im2uint8(g2);
figure; imshow(g2);
imwrite(g2,'5×5 几何均值滤波图像.tif');
- 谐波平均滤波器
f ^ ( x , y ) = m n ∑ ( r , c ) ∈ S x y 1 g ( r , c ) \hat{f}(x, y)=\frac{m n}{\sum_{(r, c) \in S_{x y}} \frac{1}{g(r, c)}} f^(x,y)=∑(r,c)∈Sxyg(r,c)1mn
能处理类似于高斯噪声的其他噪声、盐粒噪声(√),但不能处理胡椒噪声(×)。因为调和平均数会剧烈的惩罚偏离平均值的较低值,会导致图片整体偏暗。(调和均值)
- 反谐波平均滤波器
f ^ ( x , y ) = ∑ ( r , c ) ∈ S x y g ( r , c ) Q + 1 ∑ ( r , c ) ∈ S x y g ( r , c ) Q \hat{f}(x, y)=\frac{\sum_{(r, c) \in S_{x y}} g(r, c)^{Q+1}}{\sum_{(r, c) \in S_{x y}} g(r, c)^{Q}} f^(x,y)=∑(r,c)∈Sxyg(r,c)Q∑(r,c)∈Sxyg(r,c)Q+1
其中, Q Q Q 称为滤波器的阶数。适用于降低或消除椒盐噪声。如果 Q Q Q 的符号选择错误 会引起灾难性的后果。
5.3.2 统计排序滤波器
- 中值滤波器(最著名的统计排序滤波器)
f ^ ( x , y ) = median ( r , c ) ∈ S x y { g ( r , c ) } \hat{f}(x, y)=\operatorname{median}_{(r, c) \in S_{x y}}\{g(r, c)\} f^(x,y)=median(r,c)∈Sxy{g(r,c)}
与相同尺寸的线性平滑滤波器相比,中值滤波器能有效降低某些随机噪声,且模糊度要小得多。对于单极和双极冲激噪声,中值滤波器效果更好。
% 1. 读取图像
img = imread('2.被加性均匀噪声和椒盐噪声污染的图像.tif');
% 2. 检查图像是否为彩色图像,如果是,则将其转换为灰度图像
if ndims(img) == 3
img_gray = rgb2gray(img);
else
img_gray = img;
end
% 3. 对灰度图像应用5x5中值滤波器
filtered_img = medfilt2(img_gray, [5, 5]);
% 4. 显示原始图像和处理后的图像
figure;
subplot(1, 2, 1);
imshow(img_gray);
title('Original Image');
subplot(1, 2, 2);
imshow(filtered_img);
title('Filtered Image with Median Filter');
% 5. 保存处理后的图像
imwrite(filtered_img, 'output_image.jpg');
- 最大值和最小值滤波器
分别是为了降低胡椒噪声和盐粒噪声。
- 中点滤波器
f ^ ( x , y ) = 1 2 [ max ( r , c ) ∈ S x y { g ( r , c ) } + min ( r , c ) ∈ S x y { g ( r , c ) } ] \hat{f}(x, y)=\frac{1}{2}\left[\max _{(r, c) \in S_{x y}}\{g(r, c)\}+\min _{(r, c) \in S_{x y}}\{g(r, c)\}\right] f^(x,y)=21[(r,c)∈Sxymax{g(r,c)}+(r,c)∈Sxymin{g(r,c)}]
计算滤波器包围区域中最大值和最小值之间的中点。
- 修正阿尔法均值滤波器
f ^ ( x , y ) = 1 m n − d ∑ ( r , c ) ∈ S x y g R ( r , c ) , 0 ≤ d ≤ m n − 1 \hat{f}(x, y)=\frac{1}{m n-d} \sum_{(r, c) \in S_{x y}} g_{R}(r, c), \quad 0 \leq d \leq m n-1 f^(x,y)=mn−d1(r,c)∈Sxy∑gR(r,c),0≤d≤mn−1
适用于处理多种混合噪声。
% 1. 读取图像
img = imread('input_image.jpg');
% 2. 检查图像是否为彩色图像,如果是,则将其转换为灰度图像
if ndims(img) == 3
img_gray = rgb2gray(img);
else
img_gray = img;
end
% 3. 对灰度图像应用5x5修正阿尔法均值滤波器 (d = 6)
filtered_img = modified_alpha_trimmed_mean_filter(img_gray, 5, 6);
% 4. 显示原始图像和处理后的图像
figure;
subplot(1, 2, 1);
imshow(img_gray);
title('Original Image');
subplot(1, 2, 2);
imshow(filtered_img);
title('Filtered Image with Modified Alpha-trimmed Mean Filter');
% 5. 保存处理后的图像
imwrite(filtered_img, 'output_image.jpg');
function output_img = modified_alpha_trimmed_mean_filter(img, filter_size, d)
img = double(img);
[rows, cols] = size(img);
output_img = zeros(rows, cols);
pad_size = floor(filter_size / 2);
padded_img = padarray(img, [pad_size pad_size], 'replicate');
for i = 1:rows
for j = 1:cols
window = padded_img(i:i+filter_size-1, j:j+filter_size-1);
window_sorted = sort(window(:));
output_img(i, j) = mean(window_sorted(d/2 + 1:end - d/2));
end
end
output_img = uint8(output_img);
end
5.5 线性位置不变退化
一个算子对于任意 f ( x , y ) f(x,y) f(x,y)、 α \alpha α、 β \beta β,如果
H [ f ( x − α , y − β ) ] = g ( x − α , y − β ) \mathcal{H}[f(x-\alpha, y-\beta)]=g(x-\alpha, y-\beta) H[f(x−α,y−β)]=g(x−α,y−β)
则称具有输入/输出关系为线性位置不变退化,该定义说明:图像中任意一点处的响应只取决于该点处的输入值,而与该点的位置无关。
5.6 估计退化函数
观察法、试验法、建模法
5.7 逆滤波
原图像傅里叶变换的一个估计:
F ^ ( u , v ) = F ( u , v ) + N ( u , v ) H ( u , v ) \hat{F}(u, v)=F(u, v)+\frac{N(u, v)}{H(u, v)} F^(u,v)=F(u,v)+H(u,v)N(u,v)
即使知道退化函数 H ( u , v ) H(u, v) H(u,v),也不能准确复原未退化的图像,因为 N ( u , v ) N(u, v) N(u,v) 未知。如果退化函数 H ( u , v ) H(u, v) H(u,v) 是零或是非常小的值,则 N ( u , v ) / H ( u , v ) N(u,v)/H(u, v) N(u,v)/H(u,v) 很容易支配 F ( u , v ) F(u, v) F(u,v) 项。
close all; clear all; clc;
f = imread('3.大小为480×480的模糊图像.tif');
figure; imshow(f);
f=im2double(f);
[M, N] = size(f);
F= fft2(f);
Fc=fftshift(F);
[v, u]=meshgrid(1:N, 1:M);
H=exp(-0.0025*((u-M/2).^2+(v-N/2).^2).^(5/6));
G=Fc./(H+eps);
G1=ifftshift(G);
g1=ifft2(G1);
figure; imshow(g1, []);
使用10阶Butterworth滤波器:
%---------截止半径设置为 40---------%
H2= zeros(M,N);
D0 = 40;
for x = 1:1:M
for y = 1:1:N
D = ((x-M/2)^2 + (y-N/2)^2)^(0.5);
H2(x,y) = 1/(1+(D/D0)^20);
end
end
G2=G.*H2;
G2=ifftshift(G2);
g2=ifft2(G2);
subplot(131); imshow(g2, []);title('截止半径为40');
5.8 最小均方误差(维纳)滤波
F ^ ( u , v ) = [ H ∗ ( u , v ) S f ( u , v ) S f ( u , v ) ∣ H ( u , v ) ∣ 2 + S η ( u , v ) ] G ( u , v ) = [ H ∗ ( u , v ) ∣ H ( u , v ) ∣ 2 + S η ( u , v ) / S f ( u , v ) ] G ( u , v ) = [ 1 H ( u , v ) ∣ H ( u , v ) ∣ 2 ∣ H ( u , v ) ∣ 2 + S η ( u , v ) / S f ( u , v ) ] G ( u , v ) \begin{aligned} \hat{F}(u, v) & =\left[\frac{H^{*}(u, v) S_{f}(u, v)}{S_{f}(u, v)|H(u, v)|^{2}+S_{\eta}(u, v)}\right] G(u, v)=\left[\frac{H^{*}(u, v)}{|H(u, v)|^{2}+S_{\eta}(u, v) / S_{f}(u, v)}\right] G(u, v) \\ & =\left[\frac{1}{H(u, v)} \frac{|H(u, v)|^{2}}{|H(u, v)|^{2}+S_{\eta}(u, v) / S_{f}(u, v)}\right] G(u, v) \end{aligned} F^(u,v)=[Sf(u,v)∣H(u,v)∣2+Sη(u,v)H∗(u,v)Sf(u,v)]G(u,v)=[∣H(u,v)∣2+Sη(u,v)/Sf(u,v)H∗(u,v)]G(u,v)=[H(u,v)1∣H(u,v)∣2+Sη(u,v)/Sf(u,v)∣H(u,v)∣2]G(u,v)
若噪声为零则噪声功率谱消失 维纳滤波器简化为 逆滤波器。
function restored_img = wiener_filter(noisy_img, H, noise_variance)
G = fft2(noisy_img);
Gc=fftshift(G);
H_conj = conj(H);
S = abs(H).^2;
F = (H_conj ./ (S + 0.01)) .* Gc;
restored_img = ifft2(ifftshift(F));
end
5.9 约束最小二乘方滤波
function restored_img = constrained_least_squares_filter(noisy_img, H, noise_variance)
G = fft2(noisy_img);
Gc=fftshift(G);
[M,N]=size(noisy_img);
p_lpls = zeros(M,N);
p= [ 0 -1 0; -1 4 -1; 0 -1 0];
p_lpls(1:3,1:3) = p;
P= fft2(p_lpls);
Pc=fftshift(P);
H_conj = conj(H);
S_1 = abs(H).^2;
S_2=abs(Pc).^2;
F = (H_conj ./ (S_1 + 0.01.*S_2)) .* Gc;
restored_img = ifft2(ifftshift(F));
end
5.10 几何均值滤波
5.11 评价复原图像质量的测度
空间域信噪比:
S N R = ∑ x = 0 M − 1 ∑ y = 0 N − 1 [ f ^ ( x , y ) ] 2 / ∑ x = 0 M − 1 ∑ y = 0 N − 1 [ f ( x , y ) − f ^ ( x , y ) ] 2 \mathrm{SNR}=\sum_{x=0}^{M-1} \sum_{y=0}^{N-1}[\hat{f}(x, y)]^{2} / \sum_{x=0}^{M-1} \sum_{y=0}^{N-1}[f(x, y)-\hat{f}(x, y)]^{2} SNR=x=0∑M−1y=0∑N−1[f^(x,y)]2/x=0∑M−1y=0∑N−1[f(x,y)−f^(x,y)]2
频率域信噪比:
S
N
R
=
∑
u
=
0
M
−
1
∑
v
=
0
N
−
1
∣
F
(
u
,
v
)
∣
2
/
∑
u
=
0
M
−
1
∑
v
=
0
N
−
1
∣
N
(
u
,
v
)
∣
2
\mathrm{SNR}=\sum_{u=0}^{M-1} \sum_{v=0}^{N-1}|F(u, v)|^{2} / \sum_{u=0}^{M-1} \sum_{v=0}^{N-1}|N(u, v)|^{2}
SNR=u=0∑M−1v=0∑N−1∣F(u,v)∣2/u=0∑M−1v=0∑N−1∣N(u,v)∣2
均方误差:
M
S
E
=
1
M
N
∑
x
=
0
M
−
1
∑
y
=
0
N
−
1
[
f
(
x
,
y
)
−
f
^
(
x
,
y
)
]
2
\mathrm{MSE}=\frac{1}{M N} \sum_{x=0}^{M-1} \sum_{y=0}^{N-1}[f(x, y)-\hat{f}(x, y)]^{2}
MSE=MN1x=0∑M−1y=0∑N−1[f(x,y)−f^(x,y)]2
5.21
g ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ f ( α , β ) h ( x − α , y − β ) d α d β (5.61) g(x, y)=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} f(\alpha, \beta) h(x-\alpha, y-\beta) d \alpha d \beta\tag{5.61} g(x,y)=∫−∞∞∫−∞∞f(α,β)h(x−α,y−β)dαdβ(5.61)
经过简单的推导,我们可以得到下面的结果:
g ( x , y ) = ∫ − ∞ ∞ ∫ − ∞ ∞ δ ( α − a ) e − [ ( x − α ) 2 + ( y − β ) 2 ] d α d β = ∫ − ∞ ∞ ∫ − ∞ ∞ δ ( α − a ) e − [ ( x − α ) 2 ] e − [ ( y − β ) 2 ] d α d β = ∫ − ∞ ∞ δ ( α − a ) e − [ ( x − α ) 2 ] d α ∫ − ∞ ∞ e − [ ( y − β ) 2 ] d β = e − ( x − a ) 2 ∫ − ∞ ∞ e − [ ( y − β ) 2 ] d β = π e − [ ( x − a ) 2 ] \begin{aligned} g(x, y) & =\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} \delta(\alpha-a) e^{-\left[(x-\alpha)^{2}+(y-\beta)^{2}\right]} d \alpha d \beta \\ & =\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} \delta(\alpha-a) e^{-\left[(x-\alpha)^{2}\right]} e^{-\left[(y-\beta)^{2}\right]} d \alpha d \beta \\ & =\int_{-\infty}^{\infty} \delta(\alpha-a) e^{-\left[(x-\alpha)^{2}\right]} d \alpha \int_{-\infty}^{\infty} e^{-\left[(y-\beta)^{2}\right]} d \beta \\ & =e^{-(x-a)^{2}} \int_{-\infty}^{\infty} e^{-\left[(y-\beta)^{2}\right]} d \beta\\ &=\sqrt{\pi} e^{-\left[(x-a)^{2}\right]} \end{aligned} g(x,y)=∫−∞∞∫−∞∞δ(α−a)e−[(x−α)2+(y−β)2]dαdβ=∫−∞∞∫−∞∞δ(α−a)e−[(x−α)2]e−[(y−β)2]dαdβ=∫−∞∞δ(α−a)e−[(x−α)2]dα∫−∞∞e−[(y−β)2]dβ=e−(x−a)2∫−∞∞e−[(y−β)2]dβ=πe−[(x−a)2]文章来源:https://www.toymoban.com/news/detail-470428.html
可以看出来得到的图片是原图片的一个模糊版本。文章来源地址https://www.toymoban.com/news/detail-470428.html
到了这里,关于冈萨雷斯DIP第5章知识点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!