数字图像处理基础

数字图像处理

数字图像基础

图像内插

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

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

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

  1. 双三次插值
    利用src’最近的 4 × 4 4\times4 4×4个src像素值确定赋值大小。计算每个像素值到src’的距离,根据分段函数(这里选用BiCubic基函数)确定像素值的权值,对 4 × 4 4\times4 4×4个像素值进行加权求和得到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)x(这里上标表示坐标方向不是乘方)和 w ( 0 , 0 ) y 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} i×w(0,0)x×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}} De(A,B)=[(x1x2)2+(y1y2)2]21与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 | D4(A,B)=x1x2+y1y2与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 |) D8(A,B)=max(x1x2,y1y2)与A距离小于r的点在半径为r的正方形内。

灰度变换与空间滤波

基本的灰度变换函数

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

直方图处理

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

  • 直方图均衡化
    输入图像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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值