冈萨雷斯DIP第5章知识点

图像增强:主要是一种 主观处理,而图像复原很大程度上是一种 客观处理

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 均值滤波器

  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)Sxyg(r,c)

均值滤波平滑图像中的局部变化,会降低图像噪声,但会模糊图像。

%-------------------大小为5x5的算术平均滤波器--------------%
kernel = ones(5,5)/25;
g1=imfilter(f,kernel);
figure; imshow(g1);
imwrite(g1,'3×3 算术均值滤波图像.tif');
  1. 几何均值滤波器
    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)Sxyg(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');
  1. 谐波平均滤波器

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

能处理类似于高斯噪声的其他噪声、盐粒噪声(√),但不能处理胡椒噪声(×)。因为调和平均数会剧烈的惩罚偏离平均值的较低值,会导致图片整体偏暗。(调和均值)

  1. 反谐波平均滤波器
    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 统计排序滤波器

  1. 中值滤波器(最著名的统计排序滤波器)

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');
  1. 最大值和最小值滤波器

分别是为了降低胡椒噪声和盐粒噪声。

  1. 中点滤波器

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)}]

计算滤波器包围区域中最大值和最小值之间的中点。

  1. 修正阿尔法均值滤波器

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)=mnd1(r,c)SxygR(r,c),0dmn1

适用于处理多种混合噪声。

% 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)1H(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=0M1y=0N1[f^(x,y)]2/x=0M1y=0N1[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=0M1v=0N1F(u,v)2/u=0M1v=0N1N(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=0M1y=0N1[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(xa)2e[(yβ)2]dβ=π e[(xa)2]

可以看出来得到的图片是原图片的一个模糊版本。

猜你喜欢

转载自blog.csdn.net/m0_51143578/article/details/130891132