数字图像处理基础

数字图像处理

数字图像基础

图像内插

用于图像放大、缩小、旋转、几何校正等任务。首先确定变换前后的坐标对应关系,用src表示转换前的图像尺寸,dst表示转换后的图像尺寸,src’表示转换后图像对应于原图像的坐标。对于图像缩放,缩放系数 t = s r c / d s t t=src/dst ,则dst对应在src中的坐标为 s r c = d s t t src'=dst*t 。考虑到转换后图像未处在原图像中间的情况,将公式修正为 s r c = ( d s t + 0.5 ) t 0.5 src'=(dst+0.5)*t-0.5 。对于旋转、矫正等使用相关公式计算src’后使用以下内插方法进行像素赋值。

修正前
修正后
  1. 最近邻内插
    将距离src’最近的src像素赋值给src’。
  2. 双线性内插
    利用src’最近的2*2个src像素确定赋值大小。
根据图中定义,先对X再对Y插值,P点的插值结果为

插值公式
插值公式
其中各式分母均为1。
参考资料:三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法

  1. 双三次插值
    利用src’最近的 4 × 4 4\times4 个src像素值确定赋值大小。计算每个像素值到src’的距离,根据分段函数(这里选用BiCubic基函数)确定像素值的权值,对 4 × 4 4\times4 个像素值进行加权求和得到src’。
    BiCubic基函数
    例如对于点src’(1.5,1.5),距离最近的4*4坐标为(0,0),(0,1)···(3,3),对于点(0,0),X方向距离为1.5,Y方向距离为1.5,根据BiCubic基函数得到对应的权值 w ( 0 , 0 ) x w_{(0,0)}^{x} (这里上标表示坐标方向不是乘方)和 w ( 0 , 0 ) y w_{(0,0)}^{y} ,则(0,0)点对于src’的贡献为该点处的灰度值 i × w ( 0 , 0 ) x × w ( 0 , 0 ) y i\times w_{(0,0)}^{x} \times w_{(0,0)}^{y} 。依次求得各点的贡献值后求和得到最终的src’。
    参考资料:图像缩放之双三次插值法
  2. Lanczos插值(兰索斯插值)
    基本思路与双三次插值类似,但是改变了基函数类型,并且使用的邻域范围不固定,可自由选择。Lanczos插值函数为:
    Lanczos
    插值公式为:
    插值公式
    其中a为参数大小,x,y为待带插值位置,i,j为当前采样位置。可以设置不同的参数大小得到不同的效果。a取2适合于缩小插值,3适合于放大插值。在opencv中默认取4。
    参考资料:Lanczos插值滤波器
    几种插值算法对比研究
    以上几种插值方法效果依次更好,但同时复杂度也依次提升。

像素距离度量

对于点A(x1,y1)与点B(x2,y2)有如下距离度量

  1. 欧氏距离
    D e ( A , B ) = [ ( x 1 x 2 ) 2 + ( y 1 y 2 ) 2 ] 1 2 D_{e}(A,B)=[(x_{1}-x_{2})^{2}+(y_{1}-y_{2})^{2}]^{\frac{1}{2}} 与A距离小于r的点在半径为r的圆内。
  2. 城区距离(曼哈顿距离)
    D 4 ( A , B ) = x 1 x 2 + y 1 y 2 D_{4}(A,B)=\left |x_{1}-x_{2} \right |+\left |y_{1}-y_{2} \right | 与A距离小于r的点在半径为r的菱形内。
  3. 棋盘距离
    D 8 ( A , B ) = m a x ( x 1 x 2 , y 1 y 2 ) D_{8}(A,B)=max(\left |x_{1}-x_{2} \right |,\left |y_{1}-y_{2} \right |) 与A距离小于r的点在半径为r的正方形内。

灰度变换与空间滤波

基本的灰度变换函数

  • 图像反转
    对于灰度级为L-1的图像,反转定义为 d s t = L 1 s r c dst=L-1-src
  • 对数变换
    d s t = c log ( 1 + s r c ) c s r c 0 dst =c*\log (1+src),其中c为常数,src\geq 0 。对数变换扩展低像素值,压缩高灰度值。对数变换的一个重要作用是压缩图像动态范围,例如傅里叶频谱的图像显示通常经过了对数变换。
  • 幂律( γ \gamma )变换
    d s t = c s r c γ c γ dst=c*src^{\gamma},其中c和\gamma为正常数 。又叫做伽马校正,通常用于设备产生的伽马响应的校正。当 γ < 1 \gamma<1 时可以扩展灰度级,用于处理整体偏暗的图片; γ > 1 \gamma>1 时可以压缩灰度级,用于处理整体偏亮的图片。
    321
  • 分段线性变换函数
    对比度拉伸:通过设定不同的变换函数拉伸特定灰度范围内的图像。
    分段线性变换函数
    灰度级分层:将特定范围内的灰度值设为给定值以突出特定灰度的图像。
    灰度级分层
    比特平面分层:将灰度值用2进制表示,如256灰度级图像可表示为8位二进制数,将每一个像素同位的二进制数组成一幅图像(该图像只包含0和1),可得到8幅图像,即原图像的比特平面分层。其中层数越高对原图像灰度值的决定性越。可以根据分层后的图像重建原图像,并且不一定要使用所有图像,例如只使用最高的4层重建图像得到的图像丢失信息较少,单可以减少一半的存储空间。

直方图处理

直方图:统计图像中每个灰度值包含的像素点个数,绘制横轴为 0 L 1 0\sim L-1 ,纵轴为对应的像素点个数的柱状图称为直方图。将直方图纵轴除以图像总像素点数得到归一化直方图,反映每种灰度出现的概率。

  • 直方图均衡化
    输入图像s,求s的归一化直方图(由于灰度值为离散变量,可用数组表示为r[i]),再求其累计直方图s[i],则对于灰度i,转换公式为i’=(L-1)*s[i]。直方图均衡化的目的是为了扩展动态范围,使变换后的灰度概率接近均匀分布。例如:
项目 - - - - - -
原始灰度值 0 1 2 3 4 5
像素比例 0.3 0.4 0.2 0 0 0.1
累计比例 0.3 0.7 0.9 0.9 0.9 1
变换后灰度值=累计比例*最大灰度值 2(1.5) 4(3.5) 5(4.5) 5(4.5) 5(4.5) 5(5)
变换后比例 0 0 0.3 0 0.4 0.3
  • 直方图规范化(匹配)
    输入图像s和规定图像z,分别求s和z的直方图均衡化的灰度映射记为s->T(S)和z->T(z),令T(S)=T(z),则可建立s->T(s)=T(z)->z的映射关系。当T(z)->z的对应关系不唯一时,通常选择较小的作为映射结果。例如:
项目 - - - - - -
灰度值 0 1 2 3 4 5
输入像素比例 0.3 0.4 0.2 0 0 0.1
输入累计比例 0.3 0.7 0.9 0.9 0.9 1
变换后灰度值=累计比例*最大灰度值 2(1.5) 4(3.5) 5(4.5) 5(4.5) 5(4.5) 5
规定像素比例 0 0.1 0.1 0.2 0.1 0.5
规定累计比例 0 0.1 0.2 0.4 0.5 1
变换后灰度值=累计比例*最大灰度值 0 1(0.5) 1 2 3(2.5) 5(5)
变换后灰度值 3 4 5 5 5 5
变换后像素比例 0 0 0 0.3 0.4 0.3
  • 局部直方图处理
    可将直方图处理应用于图像局部,如3*3的邻域内。方法为在邻域内进行直方图统计,并求出灰度映射关系,用于对中心像素进行变换,并移动邻域位置进行全图处理。

平滑空间滤波器

  1. 平滑线性滤波器
    均值滤波器(也称为盒状滤波器):将邻域内各像素值均值作为中心像素的结果。
    加权均值滤波器:将邻域内各像素值的加权均值作为中心像素的结果。
  2. 统计排序(非线性)滤波器
    最大值滤波器:将邻域内各像素值的最大值作为中心像素的结果。
    最小值滤波器:将邻域内各像素值的最小值作为中心像素的结果。
    中值滤波器:将邻域内各像素值排序后的中值作为中心像素的结果。

锐化空间滤波器

  1. 一阶微分锐化图像——梯度
    Robert算子:
    Robert算子
    Sobel算子:
    Sobel算子
  2. 二阶微分锐化图像——拉普拉斯算子
    拉普拉斯算子
  3. 非锐化掩蔽和高提升滤波
    非锐化掩蔽:主要步骤为:a)模糊原图像;b)从原图中渐趋模糊图像得到模板;c)将模板叠加到原图上得到锐化图像。
    高提升滤波:在c)中叠加时在模板前加权重k,当k=1时得到非锐化掩蔽,k>1则为高提升滤波。

频率域滤波

待完善

图像复原与重建

图像退化、复原模型

用下式表示图像退化(线性、位置不变的):
g ( x , y ) = h ( x , y ) f ( x , y ) + η ( x , y ) g(x,y)=h(x,y)\bigstar f(x,y)+\eta (x,y) g为退化后图像,f为原图像,h为退化函数,η为噪声。★表示卷积运算。根据空间域中的卷积对于频率域中的乘积,频率域中退化表示为:
G ( x , y ) = H ( x , y ) F ( x , y ) + N ( x , y ) G(x,y)=H(x,y)F(x,y)+N(x,y) 各项对应上式中的傅里叶变换。

噪声模型

待完善

只存在噪声的复原——空间滤波

通常滤波器尺寸为奇数,因为偶数滤波器无中心点。

  1. 均值滤波器
    算术均值滤波器 f ( x , y ) = 1 m n ( s , t ) S x y g ( s , t ) f(x,y)=\frac{1}{mn}\sum_{(s,t)\subset S_{xy}}^{ }g(s,t)
    Sxy为m*n的邻域。降低噪声同时模糊了原图。
    几何均值滤波器 f ( x , y ) = [ ( s , t ) S x y g ( s , t ) ] 1 m n f(x,y)=\left [\prod_{(s,t)\subset S_{xy}}^{ }g(s,t) \right ]^{\frac{1}{mn}}
    同样平滑图片,但较算术均值滤波器丢失的细节少。
    谐波均值滤波器 f ( x , y ) = m n ( s , t ) S x y 1 g ( s , t ) f(x,y)=\frac{mn}{\sum_{(s,t)\subset S_{xy}}^{ }\frac{1}{g(s,t)}}
    对于盐粒噪声及高斯噪声等效果较好,不适用于胡椒噪声。
    逆谐波均值滤波器 f ( x , y ) = ( s , t ) S x y g ( s , t ) Q + 1 ( s , t ) S x y g ( s , t ) Q f(x,y)=\frac{\sum_{(s,t)\subset S_{xy}}^{ }g(s,t)^{Q+1}}{\sum_{(s,t)\subset S_{xy}}^{ }g(s,t)^{Q}}
    Q为滤波器的阶数。Q为正时消除胡椒噪声,Q为负时消除盐粒噪声,Q=0退化为算术均值滤波器,Q=-1为谐波均值滤波器。
  2. 统计排序滤波器
    中值滤波器 f ( x , y ) = m e d i a n ( s , t ) S x y g ( s , t ) f(x,y)=\underset{(s,t)\subset S_{xy}}{median}{g(s,t)}
    比现行平滑滤波器引起的模糊少,处理单极或者双极脉冲效果较好。
    最大值和最小值滤波器 f ( x , y ) = m a x ( s , t ) S x y g ( s , t ) f(x,y)=\underset{(s,t)\subset S_{xy}}{max}{g(s,t)}
    f ( x , y ) = m i n ( s , t ) S x y g ( s , t ) f(x,y)=\underset{(s,t)\subset S_{xy}}{min}{g(s,t)}
    用于发现图像中的最亮(暗)点,可以降低胡椒(盐粒)噪声。
    中点滤波器 f ( x , y ) = 1 2 [ m a x ( s , t ) S x y g ( s , t ) + m i n ( s , t ) S x y g ( s , t ) ] f(x,y)=\frac{1}{2}\left [\underset{(s,t)\subset S_{xy}}{max}{g(s,t)}+\underset{(s,t)\subset S_{xy}}{min}{g(s,t)} \right ] 结合了统计排序和求平均,适用于处理随机分布噪声如高斯噪声和均匀噪声。
    修正的阿尔法滤波器 f ( x , y ) = 1 m n d ( s , t ) S x y g r ( s , t ) f(x,y)=\frac{1}{mn-d}\sum_{(s,t)\subset S_{xy}}^{ }g_{r}(s,t)
    其中 g r ( s , t ) g_{r}(s,t) 为去掉最大的d/2和最小的d/2个像素值后的邻域像素。当d=0,退化为算数均值滤波器;当d=mn-1时,退化为中值滤波器。在包括多种噪声时很有用,如混合有高斯噪声和椒盐噪声的情况。
  3. 自适应滤波器
    自适应局部降低噪声滤波器 σ η 2 \sigma _{\eta }^{2} 为噪声方差,需要预先估计或者交互给出, σ L 2 \sigma _{L }^{2} 为图像局部方差, m L m_{L} 为局部均值。基于以下准则构建滤波器a)当 σ η 2 \sigma _{\eta }^{2} 为0,即无噪声,返回原始值;b)若局部方差与 σ η 2 \sigma _{\eta }^{2} 高度相关,则返回g(x,y)的近似值;c)若两个方差相等,则返回邻域的算术均值。
    f ( x , y ) = g ( x , y ) σ η 2 σ L 2 [ g ( x , y ) m L ] f(x,y)=g(x,y)-\frac{\sigma _{\eta }^{2}}{\sigma _{L }^{2}}[g(x,y)-m_{L}] 式中包含假设噪声方差不大于局部方差,若大于则设置比例为1。
    自适应中值滤波器:定义如下表示:
    z m i n = S x y z m a x = S x y z_{min}=S_{xy}中最小灰度值,z_{max}=S_{xy}中最大灰度值
    z m e d = S x y z x y = ( x , y ) z_{med}=S_{xy}中灰度中值,z_{xy}=坐标(x,y)处的灰度值
    S m a x = S x y S_{max}=S_{xy}允许的最大尺寸
    则滤波器工作流程为:
    a)判断,若 z m e d > z m e d z_{med}>z_{med} z m e d < z m a x z_{med}<z_{max} ,转到b),否则增大窗口尺寸,重复a),当窗口尺寸> S m a x S_{max} 输出 z m e d z_{med}
    b)若 z x y > z m i n z_{xy}>z_{min} z x y < z m a x z_{xy}<z_{max} ,输出 z x y z_{xy} ,否则输出 z m e d z_{med}
    该滤波先判断中值是否脉冲,若是则扩大搜索范围直到找到非脉冲的均值,若不是则判断当前点是否脉冲。若不是则输出当前点,否则输出中值。

线性、位置不变的退化

待补充

估计退化函数

  1. 图像观察估计
    选择信号较强的区域,可假设噪声影响较小。使用锐化等方式得到较清晰的图片作为原图像的估计,则用 H s ( u , v ) = G s ( u , v ) F s ( u , v ) H_{s}(u,v)=\frac{G_{s}(u,v)}{F_{s}(u,v)} 作为退化函数的估计。
  2. 实验估计
    在采集设备可以得到的情况下,对冲激(小亮点)成像得到退化的冲激响应。冲击的傅里叶变换为常量,则退化函数的估计为 H ( u , v ) = G ( u , v ) A H(u,v)=\frac{G(u,v)}{A}
  3. 建模估计
    基于特定专业知识建立退化模型,通常难度较大,但效果较好。

逆滤波

得到退化函数的估计H后可使用逆滤波复原图像。 F ^ ( u , v ) = F ( u , v ) + N ( u , v ) H ( u , v ) \widehat F(u,v)={F}(u,v)+\frac{N(u,v)}{H(u,v)} 当退化函数H较小时后一项会影响复原效果。因此可以限制滤波频率,减少遇到0值的概率。

最小均方误差(维纳)滤波

F ^ ( u , v ) = [ 1 H ( u , v ) H ( u , v ) 2 H ( u , v ) 2 + K ] G ( u , v ) \widehat F(u,v)=\left [\frac{1}{H(u,v)}\frac{\left |H(u,v) \right |^{2}}{\left |H(u,v) \right |^{2}+K} \right ]G(u,v)
其中H为退化函数,K为常数,通过交互选择确定。

约束最小二乘方滤波

待补充

几何均值滤波

待补充

彩色图像处理

待补充

形态学图像处理

基本操作定义

补集: A c A^{c}
腐蚀: A B = { z ( B ) z A } A\ominus B =\left \{ z|(B)_{z} \subseteq A \right \}
膨胀: A B = { z ( B ) z A } A\oplus B =\left \{ z|(B)_{z} \cap A\neq \varnothing \right \}
对偶性: ( A B ) c = A c B , ( A B ) c = A c B (A\ominus B)^{c}=A^{c}\oplus B,(A\oplus B)^{c}=A^{c}\ominus B
开操作: A B = ( A B ) B A\bullet B=(A\ominus B)\oplus B
开操作
闭操作: A B = ( A B ) B A\circ B=(A\oplus B)\ominus B
闭操作
击中击不中变换: A B = ( A B 1 ) ( A B 2 ) A\circledast B=(A\ominus B_{1})(A\oplus B_{2}) ,B1和B2分别为结构元的前景和背景部分。

基本形态学算法

边界提取: β ( A ) = A ( A B ) \beta (A)=A-(A\ominus B)
待补充

灰度级形态学

腐蚀: [ f b ] ( x , y ) = m i n ( s , t ) b f ( x + s , y + t ) [f\ominus b](x,y)=\underset{(s,t)\in b}{min}f(x+s,y+t)
膨胀: [ f b ] ( x , y ) = m a x ( s , t ) b f ( x s , y t ) [f\oplus b](x,y)=\underset{(s,t)\in b}{max}f(x-s,y-t)
开操作: f b = ( f b ) b f \circ b=(f \ominus b)\oplus b
闭操作: f b = ( f b ) b f \bullet b=(f\oplus b)\ominus b
开闭运算在这里插入图片描述
形态学平滑:顺序执行开闭操作。
形态学梯度: g = ( f b ) ( f b ) g=(f\oplus b)-(f\ominus b)
顶帽变换(白顶帽): T h a t ( f ) = f ( f b ) T_{hat}(f)=f-(f\circ b) ,用于暗背景上的亮物体
底帽变换(黑底帽): B h a t ( f ) = ( f b ) b B_{hat}(f)=(f\bullet b)-b ,用于亮背景上的按物体

图像分割

孤立点检测:拉普拉斯算子
线检测:
线检测模板
边缘模型:台阶模型、斜坡模型、屋顶模型
边缘模型
常用梯度算子:

  • Robert算子
    Robert算子
  • Prewitt算子
    Prewitt算子
    Prewitt算子
  • Sobel算子
     Sobel算子
    Sobel算子
  • Canny算子
    基本步骤:a)高斯滤波器平滑输入图像;b)计算梯度幅度图像和角度图像;c)将梯度根据方向规范化到八个方向,在梯度指向的方向应用非最大值抑制;d)用滞后阈值法处理和连接分析来检测边缘并连接边缘;e)根据实际需要进行细化操作。

霍夫变换
待补充

阈值处理

Otsu(大津法)
基本步骤:

  1. 计算输入图像的归一化直方图,用 p i , i = 0 , 1 , 2 L 1 p_{i},i=0,1,2 \cdots L-1 表示各个分量。
  2. 用公式 P 1 ( k ) = i = 0 k p i P_{1}(k)=\sum_{i=0}^{k}p_{i} ,对于k=0~L-1计算累计和 P 1 ( k ) P_{1}(k)
  3. 用公式 m ( k ) = i = 0 k i p i m(k)=\sum_{i=0}^{k}i*p_{i} ,对于k=0~L-1计算累计均值 m ( k ) m(k)
  4. 用公式 m G = i = 0 L 1 i p i m_{G}=\sum_{i=0}^{L-1}i*p_{i} ,计算全局灰度均值 m G m_{G}
  5. 用公式 σ B 2 ( k ) = [ m G P 1 ( k ) m ( k ) ] 2 P 1 ( k ) [ 1 P 1 ( k ) ] \sigma _{B}^{2}(k)=\frac{[m_{G}P_{1}(k)-m(k)]^{2}}{P_{1}(k)[1-P_{1}(k)]} ,对于k=0~L-1计算类间方差 σ B 2 ( k ) \sigma _{B}^{2}(k)
  6. Otsu阈值K为令 σ B 2 ( k ) \sigma _{B}^{2}(k) 最大的k值,若最大值不唯一,则令K为各k值均值。
  7. 将K带入公式 η ( k ) = σ B 2 ( k ) σ G 2 \eta (k)=\frac{\sigma _{B}^{2}(k)}{\sigma_{G}^{2}} ,得到可分性测度 η ( k ) \eta (k)

猜你喜欢

转载自blog.csdn.net/lx_xin/article/details/82811954