Skip to Content
Digital Image Processing

Spatial Domain

2019-09-02Original-language archivelegacy assets may be incomplete

像素关系

  • 相邻像素
    • 四邻域
    • 四对角邻域
    • 八邻域
  • 定义邻接性的灰度值集合:VV
    • 二值/非二值
    • VV 可以把灰度级化成两个等价类
  • 邻接性
    • 4 邻接:pN4(p)p\in N_4(p)p,qp,q 的灰度值都属于 VV
    • 8 邻接:pN8(p)p\in N_8(p)p,qp,q 的灰度值都属于 VV
    • mm 邻接(混合邻接):p,qp,q 的灰度值都属于 VV
      • qN4(p)q\in N_4(p)
      • N4(p)N(q)N_4(p)\wedge N_(q) 内无灰度值属于 VV
      • 消除二义性
  • 连通性:通路
    • 起点终点相同:闭合通路
    • 连通集/连通分量
  • 区域:连通的像素子集 RR
    • 邻接区域:两个连通的区域
    • 前景:Rk\bigcup R_k
    • 背景:(Rk)c(\bigcup R_k)^c
  • 边界:区域中与背景 8 连通的点的集合
  • 边缘:导数值超过阈值的像素
    • 局部 概念
    • 二值图像:边界=边缘
  • 距离
    • 欧式 DrD_r
    • 曼哈顿距离 D4D_4
    • 棋盘距离 D8=max(xs,yt)D_8=\max(|x-s|,|y-t|)

算术/逻辑/集合操作增强

主要以像素对像素为基础在两幅或多幅图像间进行

  • 算术操作
    • 加:g(x,y)=f(x,y)+h(x,y)g(x,y)=f(x,y)+h(x,y)
      • 定理:对MM幅加性噪声图像进行平均,可以使图像的平方信噪比提高MM
    • 减:g(x,y)=f(x,y)h(x,y)g(x,y)=f(x,y)-h(x,y)
      • 找不同
      • 指纹抽取
      • 掩膜式 X 光成像法
      • 负值:规范化 y=xminmaxmin×255y=\frac{x-\min}{\max-\min}\times 255
    • 乘:g(x,y)=f(x,y)h(x,y)g(x,y)=f(x,y)h(x,y)
      • 掩膜运算
      • 归一化
  • 集合操作:灰度图像集合 AA
    • 元素:(x,y,z)(x,y,z)
      • 空间坐标,灰度
    • Ac={(x,y,Kz)(x,y,z)A}A^c=\{(x,y,K-z)|(x,y,z)\in A\}
      • K=2k1K=2^k-1 为灰度级数
    • AB={maxz(a,b)aA,bB}A\cup B=\{\max\limits_z(a,b)|a\in A, b\in B\}
  • 逻辑操作:二值图像(前景 1,背景 0)
    • OR, AND, NOT, XOR

几何变换

空间变换算法

像素空间位置的变换

  • 保持图像中曲线特征的连续性(相邻输入产生相邻输出)
  • 仿射变换(Affine Transformation)
    • x=t11v+t21w+t31x=t_{11}v+t_{21}w+t_{31}
    • y=t12v+t22w+t32y=t_{12}v+t_{22}w+t_{32}
      • t11,t22t_{11},t_{22}: 伸缩比例
      • t12,t21t_{12},t_{21}: 倾斜程度
      • t13,t31t_{13},t_{31}: 平移量
    • 矩阵形式:[x,y,1]=[v,w,1]T,T=[t11,t12,0;t21,t22,0;t31,t32,1][x,y,1]=[v,w,1]T,T=[t_{11},t_{12},0;t_{21},t_{22},0;t_{31},t_{32},1]
      • [x,y,1]=[v,w,1]T1T2[x,y,1]=[v,w,1]T_1T_2\cdots
      • 基本变换矩阵都可逆
    • 性质
      • 保持共线性
      • 保持距离比例:线的中心变化后依然是线的中心
基本仿射变换 xx yy
恒等变换 vv ww
伸缩变换 cxvc_xv cywc_yw
旋转变换 vcosθwsinθv\cos\theta-w\sin\theta vsinθ+wcosθv\sin\theta+w\cos\theta
平移变换 v+txv+t_x w+tyw+t_y
(水平)倾斜变换 vv shv+ws_hv+w
(垂直)倾斜变换 v+svwv+s_vw ww
  • 前向映射
    • 输入图像变换后为非整数点坐标
    • 灰度值按一定权重分配给周围像素
    • 输出图像每点都需要遍历所有输入图像,效率较低
  • 反向映射
    • 对于输出图像每点,计算出其在输入图像的位置
    • 在输入图像中用插值计算出该点灰度值
    • 使用灰度内插算法,效果较好

图像配准

  • 匹配点

P=[v0w01v1w11vn1wn11],Q=[x0y01x1y11xn1yn11]P=\begin{bmatrix}v_0&w_0&1\newline v_1&w_1&1\newline \vdots&\vdots&\vdots\newline v_{n-1}&w_{n-1}&1\end{bmatrix},Q=\begin{bmatrix}x_0&y_0&1\newline x_1&y_1&1\newline \vdots&\vdots&\vdots\newline x_{n-1}&y_{n-1}&1\end{bmatrix}

  • 最优仿射变换:Q=PTQ=PT
    • 最小二乘 minTQPTF2\min\limits_T\lVert Q-PT\rVert_F^2
    • T=(PTP)1PTQT=(P^TP)^{-1}P^TQ
  • 双线性近似
    • x=c1v+c2w+c3vw+c4x=c_1v+c_2w+c_3vw+c_4
    • y=c5v+c6w+c7vw+c8y=c_5v+c_6w+c_7vw+c_8
    • 4 对约束点,求解方程
    • 增加约束点:将原图分成多个四边形
  • 几何校正:测试靶

灰度内插算法

确定变换中图像的像素灰度级

  • 最近邻内插
  • 线性内插:f(x)=x2xx2x1f(x1)+x1xx1x2f(x2)f(x)=\frac{x_2-x}{x_2-x_1}f(x_1)+\frac{x_1-x}{x_1-x_2}f(x_2)
  • 双线性内插
    • Q11Q12R1,Q21Q22R2,R1R2PQ_{11}Q_{12}\rightarrow R_1,Q_{21}Q_{22}\rightarrow R_2,R_1R_2\rightarrow P
    • 44 个最近点求解方程组:f(x,y)a0+a1x+a2y+a3xyf(x,y)\approx a_0+a_1x+a_2y+a_3xy
  • 双三次内插
    • 44 个最邻近点求解方程组:f,fx,fy,f2xyf,\frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f^2}{\partial x\partial y} 每点建立四个方程求解
    • 1616 个最近点求解方程组:f(x,y)=i=03j=03aijxiyjf (x,y)=\sum_{i=0}^3\sum_{j=0}^3a_{ij}x^iy^j

灰度变换

单像素操作,邻域大小为 1 的空间滤波 s=T(r)s=T(r)

  • 变换效果
    • 对比度:做 y=x,x=L2y=x,x=\frac{L}{2},前半减小越多,后半增大越多,对比度越大
    • 拉伸与压缩:做 y=ty=t,比较变换前后范围
    • 细节增加:图片主体偏暗,则拉伸低灰度值增加细节
函数 表达式
线性 s=kr+bs=kr+b
反转 s=L1r,L=2bs=L-1-r,L=2^b 凸显白色灰色
对数 s=clog(1+r)s=c\log(1+r) 低灰度拉伸,高灰度压缩
反对数 s=10cr1s=10^{cr}-1
幂律 s=crγs=cr^\gamma γ<1\gamma<1:低灰度拉伸,高灰度压缩
对比拉伸变换 分段单调递增
阈值处理 s=[r<T]s=[r<T]
灰度级分层 s=T[A<r<B]+bs=T[A<r<B]+b
s=T[A<r<B]+(kr+b)[o.w.]s=T[A<r<B]+(kr+b)[o.w.]
比特平面分层 s=rLrL1rLis=r_Lr_{L-1}\cdots r_{L-i} 高阶比特平面包含视觉上重要的数据,低比特位贡献精细细节,图像压缩
直方图均衡化 T(rk)=L1MNj=0knjT(r_k)=\frac{L-1}{MN}\sum_{j=0}^kn_j

直方图

  • 直方图描述
    • 横坐标 DD:灰度级
    • 纵坐标 H(D)H(D):出现的频率
    • 阈值面积函数: A(D)=DH(d)ddA(D)=\int_D^\infty H(d)\text{d}d
    • 概率密度函数 PDF:P(D)=1A0H(D)P(D)=\frac{1}{A_0}H(D)
    • 累积分布函数 CDF: F(D)=0Dp(u)duF(D)=\int_0^Dp(u)du
  • 离散直方图
    • pr(rk)=nkMNp_r(r_k)=\frac{n_k}{MN}
    • H(D)=A(D)A(D+1)H(D)=A(D)-A(D+1)
  • 直方图应用
    • 图像快速检测:灰度值运用是否合理
    • 分隔前景背景:双峰直方图
    • 面积计算:D1H(D)dD\int_{D_1}^\infty H(D)dD
  • 灰度变换下的直方图变化
    • 假设单调连续灰度变换函数 s=T(r)s=T(r)
    • 输入密度 pr(r)p_r(r)
    • 输出密度 ps(s)=pr(r)drds=pr(T1(s))1T(T1(s))p_s(s)=p_r(r)|\frac{dr}{ds}|=p_r(T^{-1}(s))\frac{1}{|T'(T^{-1}(s))|}
  • 直方图均衡化
    • 变换函数要求
      • 属于区间 [0,L1][0,L-1]
      • 单调递增
      • 变换为均匀分布
    • T(r)=(L1)0rpr(w)dwT(r)=(L-1)\int_0^rp_r(w)dw
    • T(rk)=(L1)j=0kpr(rj)=L1MNj=0knjT(r_k)=(L-1)\sum_{j=0}^kp_r(r_j)=\frac{L-1}{MN}\sum_{j=0}^kn_j
  • 直方图匹配: A->B->C
    • 输入:pr(r)p_r(r),直方图均衡化变换 s=T(r)s=T(r)
    • 指定:pz(z)p_z(z),直方图均衡化变换 s=G(r)s=G(r)
    • z=G1(s)=G1(T(r))z=G^{-1}(s)=G^{-1}(T(r))
  • 局部直方图均衡化
    • 定义邻域,不断平移中心位置,在每个中心处计算直方图,进行直方图均衡化或匹配
  • 直方图统计量用于局部图像增强
    • nn阶矩:μn(r)=i=0L1(rim)np(ri)\mu_n(r)=\sum_{i=0}^{L-1}(r_i-m)^np(r_i)
      • 2 阶矩:方差 σ2\sigma^2
    • 全局均值:mGm_G
    • 全局方差:σG\sigma_G
    • 局部均值:mSxym_{S_{xy}}
    • 局部方差:σSxy2\sigma^2_{S_{xy}}
g(x,y)={Ef(x,y)mSxyk0mG,k1σGσSxyk2σGf(x,y)o.w.g(x,y)=\begin{cases} Ef(x,y) & m_{S_{xy}}\leq k_0m_G,k_1\sigma_G\leq\sigma_{S_{xy}}\leq k_2\sigma_{G}\newline f(x,y) & o.w. \end{cases}

空间滤波

  • 滤波器:g(x,y)=T(f(x,y))g(x,y)=T(f(x,y))TT为操作算子,定义在(x,y)(x,y)的邻域上
  • 线性滤波器
    • m×nm\times n 的模板
      • 最小 3×33\times 3,一般为奇数
      • 边界:忽略/填充
    • 补零->计算->滑动->裁剪
    • Correlation 相关:平移滤波器模板,计算每个位置乘积直和
      • 应用到离散单位脉冲后产生模板的旋转 180 度后的结果
      • w(x,y)f(x,y)=s=aat=bbw(s,t)f(x+s,y+t)w(x,y)\star f(x,y)=\sum_{s=-a}^a\sum_{t=-b}^bw(s,t)f(x+s,y+t)
      • 归一化后寻找匹配:R=wTzR=\vec w^T\vec z
    • Convolution 卷积:相关中滤波器旋转 180 度
      • w(x,y)f(x,y)=s=aat=bbw(s,t)f(xs,yt)w(x,y)\star f(x,y)=\sum_{s=-a}^a\sum_{t=-b}^bw(s,t)f(x-s,y-t)
  • 离散微分
    • fx=f(x+1)f(x)\frac{\partial f}{\partial x}=f(x+1) - f(x)
      • 恒定区域:零
      • 突变起点:非零
      • 突变终点:零
      • 斜坡:非零
    • 2fx2=f(x+1)+f(x1)2f(x)\frac{\partial^2 f}{\partial x^2}=f(x+1) + f(x-1) - 2f(x)
      • 恒定区域:零
      • 突变起点:非零
      • 突变终点:非零
      • 斜坡:零
    • 各向同性滤波器:旋转不变性
    • 拉普拉斯算子:2f=2fx2+2fy2\nabla^2f=\frac{\partial^2 f}{\partial x^2}+\frac{\partial^2 f}{\partial y^2}
      • 离散拉普拉斯算子
        • 2fx2=f(x+1,y)+f(x1,y)2f(x,y)\frac{\partial^2 f}{\partial x^2}=f(x+1, y) + f(x-1, y) - 2f(x,y)
        • 2fy2=f(x,y+1)+f(x,y1)2f(x,y)\frac{\partial^2 f}{\partial y^2}=f(x, y+1) + f(x, y-1) - 2f(x,y)
      • 标准形式:[0,1,0;1,4,1;0,1,0][0,1,0;1,-4,1;0,1,0]
      • 对角形式:[1,1,1;1,8,1;1,1,1][1,1,1;1,-8,1;1,1,1]
    • 梯度:f\nabla f
      • M(x,y)=f=gx2+gy2gx+gyM(x,y)=|\nabla f|=\sqrt{g_x^2+g_y^2}\approx |g_x|+|g_y|
      • 罗伯特交叉梯度算子
        • gx=[1001]g_x=\begin{bmatrix}-1&0\newline 0&1\end{bmatrix}
        • gy=[0110]g_y=\begin{bmatrix}0&-1\newline 1&0\end{bmatrix}
      • Sobel 算子
        • gx=[121000121]g_x=\begin{bmatrix}-1&-2&-1\newline 0&0&0\newline 1&2&1\end{bmatrix}
        • gy=[101202101]g_y=\begin{bmatrix}-1&0&1\newline -2&0&2\newline -1&0&1\end{bmatrix}
      • 阈值检测边缘
滤波器 模板
平滑线性 19izi\frac{1}{9}\sum_{i}z_i,先求和,再归一化 边缘模糊,小物体缺失,边界明显
加权线性 h(x,y)=ex2+y22σ2h(x,y)=e^{-\frac{x^2+y^2}{2\sigma^2}} 或其它权重,除模板之和 降低模糊
非线性平滑 排序,中值,最大值,最小值
锐化 g(x,y)=f(x,y)+c[2f(x,y)]g(x,y)=f(x,y)+c[\nabla^2f(x,y)] c>0c>0 若模板中心为正
非锐化掩蔽 gmask(x,y)=f(x,y)f(x,y)g_{\text{mask}(x,y)}=f(x,y)-\overline{f}(x,y) g(x,y)=f(x,y)+kgmask(x,y)]g(x,y)=f(x,y)+k\star g_{\text{mask}}(x,y)] k=1k=1
高提升滤波 k>1k>1
梯度边缘检测 M(x,y)M(x,y)

Edge Preserving Filters 保边滤波器

  • 双边滤波器(Bilateral)
    • 高斯平滑滤波:g1(i,j)=k,lf(k,l)d(i,j,k,l)k,ld(i,j,k,l)g_1(i,j)=\frac{\sum_{k,l}f(k,l)*d(i,j,k,l)}{\sum_{k,l}d(i,j,k,l)}
      • d(i,j,k,l)=e(ik)2+(jl)22σd2d(i,j,k,l)= e^{-\frac{(i-k)^2+(j-l)^2}{2\sigma_d^2}}
    • 值域高斯滤波:g2(i,j)=k,lf(k,l)r(i,j,k,l)k,lr(i,j,k,l)g_2(i,j)=\frac{\sum_{k,l}f(k,l)*r(i,j,k,l)}{\sum_{k,l}r(i,j,k,l)}
      • r(i,j,k,l)=ef(i,j)f(k,l)22σr2r(i,j,k,l)=e^{-\frac{\lVert f(i,j)-f(k,l)\rVert^2}{2\sigma_r^2}}
      • 两个像素物理距离越大则权值越小,反之则权值越大
    • 双边滤波器:k,lf(k,l)w(i,j,k,l)k,lw(i,j,k,l)\frac{\sum_{k,l}f(k,l)*w(i,j,k,l)}{\sum_{k,l}w(i,j,k,l)}
      • w(i,j,k,l)=e(ik)2+(jl)22σd2f(i,j)f(k,l)22σr2w(i,j,k,l)=e^{-\frac{(i-k)^2+(j-l)^2}{2\sigma_d^2}-\frac{\lVert f(i,j)-f(k,l)\rVert^2}{2\sigma_r^2}}
  • 引导滤波器:快速双边滤波器
  • 递归域变换滤波器