DIP_review_1 - Digital image fundamentals

1.Introduction

  1. 信号的分类
    • Analog signal 模拟信号
      • 连续时间信号,且具有连续值的波峰
      • 许多自然界的信号是模拟的
    • Quantized boxcar signal
      • 连续时间信号,但离散值波峰
      • 存在于数字电路
    • sampled-data signal 采样信号 -> 将坐标轴数字化,即离散时间
      • 离散时间,但连续值波峰
      • 可视为对模拟信号用周期性脉冲采样
    • Digital signal 数字信号 ->将峰值数字化,即离散波峰
      • 离散时间,且离散值波峰
      • 是采样信号量化后的结果
  2. Pixel/Voxel
    • 数字图像由有限个数量的Pixel组成,Pixel中包含着位置和Intensity value的信息,主要用来表示图像的的灰度值,颜色,高度和不透明度等重要信息
    • 用(x,y)作为Pixel在图像中的坐标,f(x,y)作为其对应的幅值即Intensity or brightness(color)

2.Human visual system, perception and pixel

  1. Pixel basis
    • 邻居Neighbors of Pixel
      • N4(p)N_4(p)上下左右,十字
      • ND(p)N_D(p)左上,左下,右上,右下,斜对角线
      • N8(p)=N4(p)ND(p)N_8(p) =N_4(p)\bigcup N_D(p)
    • Adjacency邻接性
      • Intensity values V 的集合
        • Binary image: V = {1}
        • Gray-scale image: V = [Lmin, Lmax]
      • 4-adjacency
        • p, q \in V
        • q N4(p)\in N_4(p)
      • 8-adjacency(当形成三角形时可能会导致绕圈圈)
        • p, q \in V
        • q N8(p)\in N_8(p)
      • M-adjacency (mixed adjacency)对于8邻接的改进旨在消除产生的歧义
        • p, q \in V
        • q N4(p)\in N_4(p) 或者
        • q ND(p)\in N_D(p)N4(p)N4(q)VN_4(p) \bigcap N_4(q)\notin V(只有当4邻接的两点都不在时,才能连8邻接,避免成环)
    • Connectivity连通性(可以到达每一个点,即任意两个点之间存在通路)
      • 4邻接连通
      • 8邻接连通
    • Region区域(R:图像的子集,which is a 连通集合)
      • 4邻接情况下有几个区域
      • 8邻接情况下有几个区域
    • Boundary边界(A set of pixels that are adjacent to pixels in the complement of R.)
      • Inner border
      • outer border
      • Image border
      • Edge(不一定闭合,可能只是图像中的一条线)
    • Distance measurements
      • 满足空间几何三定律
        • D(p,q)0(D(p,q)=0 only if p=q)D(p, q) ≧ 0 (D(p, q) = 0\ only\ if\ p = q )
        • D(p,q)=D(q,p)D(p, q) = D(q, p)
        • D(p,z)D(p,q)+D(q,z)D(p, z) ≤ D(p, q) +D(q, z)
      • Distance 类型
        • 欧式集合距离:De(p,q)=[(xs)2+(yt)2]½D_e(p, q) = [ (x−s)^2+(y−t)^2]^½
        • City-block distance: D4(p,q)=xs+ytD_4(p, q) = |x−s|+|y−t|
        • Chessboard distance: D8(p,q)=max(xs,yt)D_8(p, q) = max(|x−s|, |y−t|)
      • DmD_m distance 定义为点之间的最短m-path,即通过m-邻接来判断距离长短
    • 矩阵和数组操作
      • 矩阵操作即矩阵乘法
      • 数组操作即点乘,矢量乘法

3.Intensity transform and spatial filtering

  1. Histogram直方图
    • 直方图Histogram
      • def: h(rk)=nkh(r_k) = n_k, where r_k代表Intensity value, n_k代表对应pixel的数量
    • 归一化直方图Normalized(pdf)
      • def: p(rk)=nkMNp(r_k) = \frac{n_k}{MN}, where MN代表Image的pixel总数
    • Properties
      • 丢失了空间位置信息
      • 相同直方图可能对应有着不同的image
      • Region C=A+BRegion\ C = A + B 且 A, B disjoint,那么HC=HA+HBH_C =H_A + H_B
  2. Intensity transformation s=T(r)s = T(r) 要保证T(r)T(r)为单调递增函数
    • Image nevative
      • s=T(r)=L1rs = T(r) = L - 1 - r
    • Contrast Stretching
      • s=T(r)=s2s1r2r1(rr1)s = T(r) = \frac{s_2 - s_1}{r_2 - r_1}*(r - r_1), 即中间折线的斜率计算公式
      • 最极端的对比拉伸为灰度值二值化
    • Intensity-level slicing
    • Log transformation
      • s=clog(1+r)s = c * log(1 + r)
      • c为调整程度,暗的区域扩大动态范围,亮的区域缩写
      • 𝑠=𝑐2𝑟1𝑠 = 𝑐 * 2^𝑟 − 1反对数变换
      • 与对数变换效果相反
    • Gamma Transformaiton(将对数变换和反对数变换相统一)
      • s=crγs = c*r^\gamma
      • r<1r < 1 log transformation
      • r=1r = 1 No transform
      • r>1r > 1 inverse log transformation
    • Bit-Plane Slicing位图分割
      • 高位携带着图像的主要信息
      • 用处打水印,将水印放在低位
  3. Histogram processing
    • Histogram Equalization 直方图均衡化
      • s=T(r)=(L1)0rpr(w)dw=(L1)j=0kpr(rj)=(L1)j=0knjMNs = T(r) = (L - 1)\int_0^rp_r(w)dw = (L - 1)\sum_{j = 0}^k p_r(r_j) = (L - 1)\sum_{j = 0}^k \frac{n_j}{MN}, k=0,1,,L1k = 0, 1, \cdots, L - 1
      • 注意是求和因此可以理解为cdf
      • 同时我们允许其得到的s进行round四舍五入
      • round(255 * cdf(intensity + 1))来得到新的投影像素
    • Histogram Matching 直方图匹配 -> 生成一个带有特殊化直方图的处理后图像
      • z=G1(s)=G1[T(r)]z = G^{-1}(s) = G^{-1}[T(r)]
      • r投影到s,z投影到s,那么其直接可以以s为媒介,实现r投影到z
      • 首先r至s我们能做直方图均衡化,有了r->s的projection
      • 接着z到s我们也可以做均衡化,有了s->z的projection
      • 最后我们就有了r->s->z的投影,最终得到z的变换
    • AHE(Adaptive Histogram Equalization) 注意padding的形式!!!!!“circular”!!
      • 利用batch一块一块去做直方图均衡化,然后每次更新中心点的像素
      • 优势:更好的均匀分布
      • 劣势:高复杂度 O(MN(WW+L))O(M*N*(W*W+L))
      • 对于快速AHE,改进为每次更新中心M*M的像素点
    • Contrast Limited Adaptive Histogram Equalization (CLAHE)
      • 相较于AHE,额外加入对比度限制,在每一块batch计算其pdf时,计入一个阈值clip limit来将高于该阈值的部分切除,在平均分配给所有灰度值,以减少对噪声的过度放大
  4. Spatial Filtering(Kernels or templates or masks or windows)
    • spatial filter/ correlation g(x,y)=s=aat=bbw(s,t)f(x+s,y+t)g(x, y) = \sum_{s = -a}^a\sum_{t = -b}^b w(s,t)f(x + s, y + t)
      • 满足分配律,不满足交换律和结合律
    • convolution g(x,y)=s=aat=bbw(s,t)f(xs,yt)g(x, y) = \sum_{s = -a}^a\sum_{t = -b}^b w(s,t)f(x - s, y - t) (翻转)
      • 满足分配律,交换律,结合律
      • filter kernel的可分离性
        • 𝒘=𝒂𝒃𝑻𝒘 = 𝒂𝒃^𝑻
        • 𝒘𝒇=𝒘𝟏𝒘𝟐𝒇=𝒘𝟐𝒘𝟏𝒇=𝒘𝟐(𝒘𝟏𝒇)=(𝒘𝟏𝒇)𝒘𝟐𝒘 ⋆ 𝒇 = 𝒘_𝟏 ⋆ 𝒘_𝟐 ⋆ 𝒇 = 𝒘_𝟐 ⋆ 𝒘_𝟏 ⋆ 𝒇 = 𝒘_𝟐 ⋆ (𝒘_𝟏⋆ 𝒇) = (𝒘_𝟏⋆ 𝒇) ⋆ 𝒘_𝟐
        • 以此可以减少卷积的计算量!!C=MNM+NC = \frac{MN}{M+N}
    • 注意padding!!!!!
      • 对于滤波来说,是为了满足前后图片大小一致
      • 对于卷积来说,是为了符合signal卷积后的性质N+M1N + M - 1
    • 滤波器分类
      • 线性滤波器(更容易处理Gaussian noise)/平滑滤波器
        • 均值滤波器/box filter R=19k=19zkR = \frac{1}{9} \sum_{k = 1}^9z_k
        • 高斯滤波器 G(x,y)=Kex2+y22σ2G(x,y) = K*e^{-\frac{x^2 + y^2}{2\sigma^2}}, σ\sigma 越大,图像越模糊
          • LoG filter 对 Gaussian求取二阶导
          • log
      • 非线性滤波器(更容易处理salt-and-pepper noise)
        • 中值滤波器/统计排序滤波器
        • 最大值滤波器
      • 锐化滤波器
        • 拉普拉斯算子 𝟐f(𝒙,𝒚)=𝟐𝒇𝒙𝟐+𝟐𝒇𝒚𝟐=𝒇(𝒙,𝒚+𝟏)+𝒇(𝒙,𝒚𝟏)+𝒇(𝒙+𝟏,𝒚)+𝒇(𝒙𝟏,𝒚)𝟒𝒇(𝒙,𝒚)\nabla^𝟐f(𝒙, 𝒚) = \frac{\partial^𝟐𝒇}{\partial𝒙^𝟐} + \frac{\partial^𝟐𝒇}{\partial 𝒚^𝟐} = 𝒇(𝒙,𝒚 + 𝟏)+𝒇(𝒙,𝒚 − 𝟏)+ 𝒇(𝒙 + 𝟏, 𝒚)+ 𝒇(𝒙 − 𝟏, 𝒚)− 𝟒𝒇(𝒙, 𝒚)
        • 010141010\begin{matrix}0&1&0\\1&-4&1\\0&1&0\\\end{matrix}

          • 如果想要直接得到锐化后的结果那么对应的kernel为
          • 010151010\begin{matrix}0&-1&0\\-1&5&-1\\0&-1&0\\\end{matrix}

          • 拉普拉斯算子可以分为两个1维kernel的组合从他的表达式来看(并非矩阵拆分)
            • I_{xx} = [1, -2, 1] 提取纵向轴信息
            • I_{yy} = [1; -2; 1] 提取横向轴信息
            • 将二者结果相加仍等于拉普拉斯算子对图像卷积得到的details
          • 使用简单,但会丢失方向信息
          • 对噪声敏感,需加入smoothing
        • Roberts cross-gradient operator(罗伯特交叉梯度算子)
          • 𝑴(𝒙,𝒚)𝒈𝒙+𝒈𝒚=𝒛𝟗𝒛𝟓+𝒛𝟖𝒛𝟔𝑴( 𝒙, 𝒚) ≈ 𝒈_𝒙 + 𝒈_𝒚 =\| 𝒛_𝟗 − 𝒛_𝟓 \|+\| 𝒛_𝟖 − 𝒛_𝟔 \|
        • Sober operator
          • 𝑴(𝒙,𝒚)=(𝒛7+2z8+z9)(𝒛1+2z2+z3)+(𝒛3+2z6+z9)(𝒛1+2z4+z7)𝑴( 𝒙, 𝒚)=\| (𝒛_7 + 2 z_8 + z_9 ) − (𝒛_1 + 2z_2+z_3) \|+\| (𝒛_3 + 2z_6+z_9) − (𝒛_1 +2z_4+z_7) \|
          • z1z2z3z4z5z6z7z8z9\begin{matrix}z_1&z_2&z_3\\z_4&z_5&z_6\\z_7&z_8&z_9\\\end{matrix}

          • 121000121\begin{matrix}-1&-2&-1\\0&0&0\\1&2&1\\\end{matrix}

          • 101202101\begin{matrix}-1&0&1\\-2&0&2\\-1&0&1\\\end{matrix}

      • Unsharpen Mask(非锐化掩蔽)
        • gmask(x,y)=f(x,y)f(x,y)g_{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* g_{mask}(x,y)