DIA——图像处理

1.灰度变换与空间滤波

灰度变换与空间滤波都是对像素的一种处理。灰度变换是对灰度直方图的处理,而空间滤波是对某个领域像素的处理。

1.1灰度变换

1.1.1直方图均衡化

1.定义
灰度直方图均匀化(Histogram Equalization)是一种通过调整图像灰度分布,使得直方图在全局范围内尽可能均匀分布的图像增强技术。其核心目标是提升图像的对比度,尤其是在灰度分布集中(如过暗或过亮)的图像中,通过扩展灰度级的动态范围,使细节更清晰。


2. 核心原理

  • 问题:原始图像的灰度分布可能集中在狭窄区间(如低对比度图像),导致细节无法分辨。
  • 解决方案:将原始直方图的累积分布函数(CDF)映射到均匀分布,拉伸灰度级的覆盖范围。

3. 数学步骤
假设图像为灰度图像,灰度级范围为 [ 0 , L − 1 ] [0, L-1] [0,L1](如8位图像为0~255):

  1. 计算原始直方图

    • 统计每个灰度级 r k r_k rk 的像素数量 n k n_k nk
    • 概率密度 p ( r k ) = n k N p(r_k) = \frac{n_k}{N} p(rk)=Nnk,其中 N N N 为总像素数。
  2. 计算累积分布函数(CDF)
    C D F ( r k ) = ∑ i = 0 k p ( r i ) CDF(r_k) = \sum_{i=0}^{k} p(r_i) CDF(rk)=i=0kp(ri)

    • CDF表示灰度级小于等于 r k r_k rk 的像素占比。
  3. 映射到新灰度级
    s k = ( L − 1 ) ⋅ C D F ( r k ) s_k = (L-1) \cdot CDF(r_k) sk=(L1)CDF(rk)

    • C D F ( r k ) CDF(r_k) CDF(rk) 线性映射到 [ 0 , L − 1 ] [0, L-1] [0,L1] 区间,得到新的灰度级 s k s_k sk(四舍五入取整)。

4. 示例说明
假设图像为3×3,灰度级范围 [0, 7](即 L = 8 L=8 L=8):

  • 原始像素值
    [ 3 5 7 2 4 6 1 3 5 ] \begin{bmatrix} 3 & 5 & 7 \\ 2 & 4 & 6 \\ 1 & 3 & 5 \\ \end{bmatrix} 321543765

  • 直方图统计

    灰度级 r k r_k rk01234567
    像素数 n k n_k nk01121211
    p ( r k ) p(r_k) p(rk)01/91/92/91/92/91/91/9
  • 计算CDF
    C D F ( r 0 ) = 0 , C D F ( r 1 ) = 1 9 , C D F ( r 2 ) = 2 9 , … , C D F ( r 7 ) = 1 CDF(r_0)=0, \quad CDF(r_1)=\frac{1}{9}, \quad CDF(r_2)=\frac{2}{9}, \quad \dots, \quad CDF(r_7)=1 CDF(r0)=0,CDF(r1)=91,CDF(r2)=92,,CDF(r7)=1

  • 映射到新灰度级(以 r 3 = 3 r_3=3 r3=3 为例):
    s 3 = 7 ⋅ C D F ( 3 ) = 7 ⋅ 4 9 ≈ 3.11 → 3 s_3 = 7 \cdot CDF(3) = 7 \cdot \frac{4}{9} \approx 3.11 \rightarrow 3 s3=7CDF(3)=7943.113

    • 最终映射结果可能因离散化不完全均匀,但整体对比度提升。

5. 效果与特点

  • 优点
    • 显著增强低对比度图像的细节(如医学影像、监控照片)。
    • 自动适应图像的灰度分布,无需手动设置参数。
  • 缺点
    • 可能放大背景噪声。
    • 对局部对比度变化不敏感(需结合自适应直方图均衡化)。

6. 实际应用

  • 医学影像:增强X光片的骨骼和软组织对比。
  • 遥感图像:突出地表纹理和地物边界。
  • 摄影修复:调整曝光不足的老照片。

7. 代码实现(Python示例)

import cv2
import matplotlib.pyplot as plt

# 读取灰度图像
image = cv2.imread('input.jpg', 0)

# 直方图均衡化
equ = cv2.equalizeHist(image)

# 显示结果
plt.subplot(121), plt.imshow(image, cmap='gray'), plt.title('Original')
plt.subplot(122), plt.imshow(equ, cmap='gray'), plt.title('Equalized')
plt.show()

1.1.2直方图匹配(Histogram Matching)

直方图匹配(直方图规定化)是直方图均衡化的扩展,其核心目标是将图像的灰度分布调整为与指定目标直方图相似的形态。通过映射原始直方图的累积分布函数(CDF)到目标直方图的CDF,实现图像风格的统一或特定增强效果。


1. 核心思想

  • 直方图均衡化:强制将图像直方图变为均匀分布。
  • 直方图匹配:将图像直方图映射到任意指定形状的直方图(如参考图像或特定分布)。

2. 数学步骤
假设原始图像为 I I I,目标直方图对应图像为 T T T,步骤如下:

  1. 计算原始图像直方图

    • 统计原始图像每个灰度级的概率密度 p I ( r k ) p_I(r_k) pI(rk)
  2. 计算原始图像CDF
    C D F I ( r k ) = ∑ i = 0 k p I ( r i ) CDF_I(r_k) = \sum_{i=0}^{k} p_I(r_i) CDFI(rk)=i=0kpI(ri)

  3. 计算目标直方图CDF
    C D F T ( z k ) = ∑ j = 0 k p T ( z j ) CDF_T(z_k) = \sum_{j=0}^{k} p_T(z_j) CDFT(zk)=j=0kpT(zj)

    • z k z_k zk 为目标图像的灰度级。
  4. 建立灰度映射关系

    • 对每个原始灰度级 r k r_k rk,找到目标CDF中最接近的 C D F T ( z m ) CDF_T(z_m) CDFT(zm),使得:
      C D F T ( z m ) ≈ C D F I ( r k ) CDF_T(z_m) \approx CDF_I(r_k) CDFT(zm)CDFI(rk)
    • r k r_k rk 映射到 z m z_m zm
  5. 应用映射

    • 将原始图像中所有灰度级按映射关系替换为新的灰度级。

3. 示例说明
假设原始图像与目标图像的直方图如下:

原始图像目标图像
灰度级:0,1,2,3灰度级:0,1,2,3
像素数:100,200,300,400像素数:200,300,300,200

步骤分解

  1. 原始CDF计算

    • C D F I ( 0 ) = 0.1 CDF_I(0) = 0.1 CDFI(0)=0.1, C D F I ( 1 ) = 0.3 CDF_I(1) = 0.3 CDFI(1)=0.3, C D F I ( 2 ) = 0.6 CDF_I(2) = 0.6 CDFI(2)=0.6, C D F I ( 3 ) = 1.0 CDF_I(3) = 1.0 CDFI(3)=1.0
  2. 目标CDF计算

    • C D F T ( 0 ) = 0.2 CDF_T(0) = 0.2 CDFT(0)=0.2, C D F T ( 1 ) = 0.5 CDF_T(1) = 0.5 CDFT(1)=0.5, C D F T ( 2 ) = 0.8 CDF_T(2) = 0.8 CDFT(2)=0.8, C D F T ( 3 ) = 1.0 CDF_T(3) = 1.0 CDFT(3)=1.0
  3. 映射关系建立

    • 原始灰度级0(CDF=0.1)→ 目标中CDF最接近0.1的是灰度级0(CDF=0.2)。
    • 原始灰度级1(CDF=0.3)→ 目标中CDF最接近0.3的是灰度级0(CDF=0.2)或1(CDF=0.5),通常选择更大的值(灰度级1)。
    • 最终映射:
      0 → 0 , 1 → 1 , 2 → 2 , 3 → 3 0 \rightarrow 0, \quad 1 \rightarrow 1, \quad 2 \rightarrow 2, \quad 3 \rightarrow 3 00,11,22,33
    • 注:此例简化,实际可能因离散化产生更复杂的映射。

4. 关键问题与解决方案

  • 问题1:离散化误差
    连续CDF映射到离散灰度级时,可能无法完全匹配。
    解决:使用最近邻插值或线性插值优化映射。

  • 问题2:目标直方图不可逆
    若目标直方图包含零值区域,可能导致映射不连续。
    解决:对目标直方图进行平滑处理(如高斯滤波)。


1.2空域滤波(Spatial Filtering)

空域滤波是图像处理中直接在像素空间(而非频率域)对图像进行局部或全局操作的技术,通过邻域像素的加权计算实现去噪、边缘增强、模糊等效果。其核心思想是利用**滤波器(卷积核)**与图像进行卷积运算,改变局部区域的像素值。


1.2.1空域滤波的分类

1. 按功能分类

类型目的典型应用常见滤波器
平滑滤波抑制噪声、模糊细节去噪、图像降采样预处理均值滤波、高斯滤波、中值滤波
锐化滤波突出边缘和细节边缘检测、医学影像增强拉普拉斯算子、Sobel算子
边缘检测提取图像中的边缘信息物体识别、自动驾驶车道线检测Canny算子、Prewitt算子
形态学滤波处理二值图像中的形状去除小孔洞、分离粘连物体膨胀、腐蚀、开运算、闭运算

2. 按数学性质分类

  • 线性滤波:输出是邻域像素的线性组合(如均值滤波、高斯滤波)。
  • 非线性滤波:输出依赖邻域像素的非线性操作(如中值滤波、最大值滤波)。

1.2.2核心原理与数学表示

1. 卷积运算
空域滤波的核心是卷积核(模板) 与图像的滑动窗口计算。假设图像为 I I I,滤波器核为 K K K(大小为 m × n m \times n m×n),则输出图像 O O O 的每个像素值为:
O ( x , y ) = ∑ i = − a a ∑ j = − b b K ( i , j ) ⋅ I ( x + i , y + j ) O(x,y) = \sum_{i=-a}^{a} \sum_{j=-b}^{b} K(i,j) \cdot I(x+i, y+j) O(x,y)=i=aaj=bbK(i,j)I(x+i,y+j)
其中, a = ⌊ m / 2 ⌋ a = \lfloor m/2 \rfloor a=m/2 b = ⌊ n / 2 ⌋ b = \lfloor n/2 \rfloor b=n/2


2. 边界处理
卷积时边缘像素缺乏完整邻域,常用方法:

  • 补零(Zero-padding):在图像外填充零值。
  • 镜像(Mirror):复制边缘像素的镜像值。
  • 重复(Replicate):重复边缘像素值。

1.2.3常见滤波器及实现

1. 平滑滤波(去噪)

  • 均值滤波

    • 核内像素取平均,公式: K = 1 9 [ 1 1 1 1 1 1 1 1 1 ] K = \frac{1}{9} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} K=91 111111111
    • 缺点:模糊边缘,对椒盐噪声效果差。
  • 高斯滤波

    • 核权重按二维高斯分布分配,保留更多边缘信息。
    • 3×3高斯核示例:
      K = 1 16 [ 1 2 1 2 4 2 1 2 1 ] K = \frac{1}{16} \begin{bmatrix} 1 & 2 & 1 \\ 2 & 4 & 2 \\ 1 & 2 & 1 \end{bmatrix} K=161 121242121
  • 中值滤波(非线性)

    • 取邻域像素的中值,有效去除椒盐噪声。
    • 对边缘保护优于均值滤波。

2. 锐化滤波(边缘增强)

  • 拉普拉斯算子

    • 突出快速变化的区域(如边缘)。
    • 核示例(中心为负,周围为正):
      K = [ 0 1 0 1 − 4 1 0 1 0 ] K = \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} K= 010141010
    • 增强公式: O = I + c ⋅ Laplacian ( I ) O = I + c \cdot \text{Laplacian}(I) O=I+cLaplacian(I) c c c 为锐化强度)。
  • Sobel算子

    • 一阶微分算子,检测水平和垂直边缘。
    • 水平方向核:
      K x = [ − 1 0 1 − 2 0 2 − 1 0 1 ] K_x = \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} Kx= 121000121
    • 垂直方向核:
      K y = [ − 1 − 2 − 1 0 0 0 1 2 1 ] K_y = \begin{bmatrix} -1 & -2 & -1 \\ 0 & 0 & 0 \\ 1 & 2 & 1 \end{bmatrix} Ky= 101202101

1.2.4代码实现(Python示例)

1. 高斯滤波

import cv2
import numpy as np

# 读取图像
image = cv2.imread('input.jpg')

# 高斯滤波(核大小5×5,标准差1.0)
blurred = cv2.GaussianBlur(image, (5,5), 0)

cv2.imshow('Original', image)
cv2.imshow('Gaussian Blur', blur)
cv2.waitKey(0)

2. 中值滤波

# 中值滤波(核大小3×3)
median = cv2.medianBlur(image, 3)

3. 拉普拉斯锐化

# 拉普拉斯锐化
laplacian = cv2.Laplacian(image, cv2.CV_64F)
sharpened = image - 0.5 * laplacian  # 调整系数控制锐化强度
sharpened = np.clip(sharpened, 0, 255).astype(np.uint8)

1.2.5滤波器的选择与调参

1. 核大小的影响

  • 小核(3×3):细节保留较好,但去噪能力弱。
  • 大核(9×9):去噪能力强,但边缘模糊严重。

2. 高斯滤波的标准差(σ)

  • σ小:权重集中在中心,滤波效果弱。
  • σ大:权重分散,平滑效果强。

3. 锐化强度系数

  • 过高的系数会导致噪声放大,需结合平滑滤波使用。

1.2.6实际应用场景

1. 医学影像处理

  • 高斯滤波去除CT图像的噪声,保留器官轮廓。
  • 拉普拉斯锐化增强肿瘤边缘。

2. 自动驾驶

  • Sobel/Canny边缘检测提取车道线。
  • 中值滤波去除激光雷达点云噪声。

3. 摄影后期

  • 高斯模糊模拟景深效果。
  • 锐化滤波修复模糊照片。

1.2.7空域滤波 vs 频域滤波
特性空域滤波频域滤波
操作对象直接处理像素值处理图像的频率成分(傅里叶变换)
计算复杂度低(适合实时处理)高(需频域变换)
灵活性适合局部操作适合全局频率调整
典型应用去噪、边缘增强周期性噪声去除、纹理分析

2.频域滤波

先将图片转换成频域,处理后再反变换回空域。
频域滤波

2.1常见频域滤波

2.1.1平滑滤波

1.理想低通滤波器

2.高斯低通滤波器
3.布特沃斯滤波器

2.1.2锐化滤波

1.理想高通滤波器
2.布特沃斯高通滤波器
3.带阻滤波器
4.带通滤波器
5.槽口滤波器

3.压缩感知与稀疏表达

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐行tag

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值