文章目录
- 数字图像的基本运算
- 灰度反转
- 对数变换
- 灰度直方图
- 灰度直方图的概念
- 灰度图像的对比度
- ⭐图像直方图的分布特征及其与图像对比度的关系
- ⭐灰度直方图的特征
- 归一化灰度直方图
- 图像的代数运算
- 图像的相加运算
- 图像的相减运算
- ⭐图像的几何运算
- 图像的平移变换
- 图像旋转变换
- 图像镜像变换
- 图像转置变换
- 图像缩放
- 图像缩小
- 图像放大
数字图像的基本运算
从严格的意义上来说,各种图像处理方法都是一种图像运算方法
从一般意义上来说,图像运算仅指对图像中的所有像素实施了相同处理的那些运算,比如对图像的点运算、直方图运算、代数运算、几何运算、灰度插值运算等
灰度反转
黑白图像的反转就是使灰度值为 1 的像素值变成 0 ,使灰度值为 0 的像素值变成 1
对于256灰度级图像来说,图像的灰度反转值就是用 255 分别减去原图像的各个像素的灰度值
设图像的灰度级为L,则图像的灰度反转可表示为:
g ( x , y ) = L − 1 − f ( x , y ) g(x,y) = L-1-f(x,y) g(x,y)=L−1−f(x,y)
【举例】
对数变换
对数变换的解析式可表示为:
g ( x , y ) = c ⋅ l g ( 1 + f ( x , y ) ) g(x,y)=c·lg(1+f(x,y)) g(x,y)=c⋅lg(1+f(x,y))
对数变换是一种非线性变换:
对数变换的作用:通过对图像的灰度值的动态范围进行压缩,来主要用于调高输入图像的低灰度值,人的视觉感觉与进入人眼的光的强度成对数关系,常先给图像进行对数变换后再显示输出
灰度直方图
灰度直方图的概念
灰度图像的直方图是一种表示数字图像中灰度级分布的函数,也即表示灰度图像中各灰度级及其出现的频率(个数)的关系的函数
- 直方图的横坐标表示图像中像素的灰度级(也即亮度级别),取值范围为 0~255
- 直方图的纵坐标表示图像中各个灰度级像素的数量(也即统计的各灰度级像素的个数)
设一幅数字图像的灰度级范围为 [0,L-1] ,则该图像的灰度直方图可定义为:
H ( P ) = [ h ( r 0 ) , h ( r 1 ) , . . . , h ( r L − 1 ) ] h ( r k ) = h k ( k = 0 , 1 , 2 , . . . , L − 1 ) H(P)= [h(r_0),h(r_1),...,h(r_{L-1})]\\ h(r_k) = h_k(k=0,1,2,...,L-1) H(P)=[h(r0),h(r1),...,h(rL−1)]h(rk)=hk(k=0,1,2,...,L−1)
其中, r k r_k rk 表示第 k 级灰度值; n k n_k nk 表示图像中灰度值为 r k r_k rk 的像素的个数; H ( P ) H(P) H(P) 是灰度图像的直方图函数
【举例】
【分析】
- “左黑右白”或“左暗右亮”
- 横轴上各(亮度值)点对应的柱状高度就是分布在该亮度的像素个数
- 当柱状接近分布在整个横轴上,且至少有一个峰值时,图像的对比度较好
灰度图像的对比度
灰度图像的对比度是对一幅图像中最亮的白和最暗的黑之间亮度层级的测量,一般用图像画面中最大的灰度值(最白亮度)与最小的灰度值(最黑亮度)的比值来表示
因此,白色越亮、黑色越暗,对比度就越高(大)
对比度越大,图像越清晰醒目;对比度越小,图像画面会显得灰蒙蒙而不清晰
⭐图像直方图的分布特征及其与图像对比度的关系
【分析】
- 直方图总体上偏左,说明图像的灰度值普遍偏小,也即图像偏暗
- 直方图分布在局部区域,说明图像的对比度较低
【分析】
- 直方图总体上偏右,说明图像的灰度值普遍偏大,也即图像偏亮
- 直方图分布在局部区域,说明图像的对比度较低
【分析】
- 直方图总体上居中,说明图像的灰度值不太大也不太小,也即图像亮度适中
- 直方图分布在局部区域,说明图像的对比度较低
【分析】
- 直方图总体上均匀分布于整个灰度区间,且有峰值,说明图像亮度值黑白分明,也即图像清晰醒目
- 直方图分布均匀,说明图像的对比度高
⭐灰度直方图的特征
-
直方图仅能描述图像中每个灰度值具有的像素个数,不能表示图像中每个像素的位置(空间)信息
-
任一特定的图像都有唯一的直方图,不同的图像可以具有相同的直方图
-
对于空间分辨率为 M×N,且灰度级范围为 [0,L-1] 的图像,有关系:
∑ j = 0 L − 1 h ( j ) = M × N \displaystyle \sum^{L-1}_{j=0}{h(j)}=M×N j=0∑L−1h(j)=M×N -
如果一幅图像由两个不连接的区域组成,则整幅图像的直方图等于两个不连接的区域的直方图之和
归一化灰度直方图
归一化灰度直方图是通过将灰度图像中每个灰度级的像素频数除以图像总像素数,得到的一个表示灰度分布概率的直方图
图像的代数运算
图像的相加运算
图像相加是通过对两幅大小相同的图像对应位置像素的相加运算,以产生一幅新的含有两幅图像信息的图像的方法,图像相加也称为图像合成
设 f 1 ( x , y ) f_1(x,y) f1(x,y) 和 f 2 ( x , y ) f_2(x,y) f2(x,y) 分别表示大小为 M × N M×N M×N 的两幅输入图像,图像 f 1 ( x , y ) f_1(x,y) f1(x,y) 和 f 2 ( x , y ) f_2(x,y) f2(x,y) 图像相加后得到的结果输出图像为 g ( x , y ) g(x,y) g(x,y) ,且 x ∈ [ 0 , M − 1 ] x∈[0,M-1] x∈[0,M−1], y ∈ [ 0 , N − 1 ] y ∈ [0,N-1] y∈[0,N−1] ,则两幅图像的相加运算可表示为:
g ( x , y ) = f 1 ( x , y ) + f 2 ( x , y ) g(x,y)=f_1(x,y)+f_2(x,y) g(x,y)=f1(x,y)+f2(x,y)
【图像相加运算的实现方式】
-
灰度值折半相加
g ( x , y ) = I n t e g e r R o u n d ( 1 2 f 1 ( x , y ) + 1 2 f 2 ( x , y ) ) g(x,y)=IntegerRound(\frac{1}{2}f_1(x,y)+\frac{1}{2}f_2(x,y)) g(x,y)=IntegerRound(21f1(x,y)+21f2(x,y)) -
按不同比例灰度值的相加
g ( x , y ) = α f 1 ( x , y ) + β f 2 ( x , y ) ) α + β = 1 g(x,y)=\alpha f_1(x,y)+\beta f_2(x,y))\\ \alpha +\beta = 1 g(x,y)=αf1(x,y)+βf2(x,y))α+β=1 -
相加多幅图像的叠加去加性噪声
通过对同一场景的多幅图像的灰度值求平均值(多幅灰度图像的叠加运算),可以去除加性随机噪声
假设原始图像 f ( x , y ) f(x,y) f(x,y) 在传输或者获取过程中被若干噪声 n i ( x , y ) n_i(x,y) ni(x,y) 所污染,得到被污染的图像用 g i ( x , y ) g_i(x,y) gi(x,y) 表示,则:
g i ( x , y ) = f ( x , y ) + n i ( x , y ) i = 1 , 2 , . . . , N g_i(x,y)=f(x,y)+n_i(x,y)~~~~~~i=1,2,...,N gi(x,y)=f(x,y)+ni(x,y) i=1,2,...,N
假设噪声图像 n i ( x , y ) n_i(x,y) ni(x,y) 均值为 0,且互不相关,N 幅图像的均值:
∑ i = 1 N g i ( x , y ) N = N × f ( x , y ) N + ∑ i = 1 N n i ( x , y ) N = f ( x , y ) \frac{\sum^{N}_{i=1}{g_i(x,y)}}{N} = \frac{N×f(x,y)}{N}+\frac{\sum^{N}_{i=1}{n_i(x,y)}}{N}=f(x,y) N∑i=1Ngi(x,y)=NN×f(x,y)+N∑i=1Nni(x,y)=f(x,y)
图像的相减运算
设 f 1 ( x , y ) f_1(x,y) f1(x,y) 和 f 2 ( x , y ) f_2(x,y) f2(x,y) 分别表示大小为 M × N M×N M×N 的两幅输入图像,从图像 f 1 ( x , y ) f_1(x,y) f1(x,y) 中的各位置的像素中减去的相应位置的像素值后,得到的结果输出图像为 g ( x , y ) g(x,y) g(x,y) ,且 x ∈ [ 0 , M − 1 ] x∈[0,M-1] x∈[0,M−1], y ∈ [ 0 , N − 1 ] y ∈ [0,N-1] y∈[0,N−1] ,则两幅图像的相减运算可表示为:
g ( x , y ) = f 1 ( x , y ) − f 2 ( x , y ) g(x,y)=f_1(x,y)-f_2(x,y) g(x,y)=f1(x,y)−f2(x,y)
- 当两幅256灰度级图像对应坐标位置像素值相减的结果大于或等于零时,则取其为结果图像中的像素的灰度值
- 当相减结果小于零时,一般都是取零为结果值
- 对于某些特殊的应用目的,也可以取其绝对值为结果值
图像相减运算的典型应用是图像的变化检测
⭐图像的几何运算
图像的几何运算:对单幅图像做处理,改变像素的空间位置
图像的平移变换
图像平移变换是指将一幅图像或一幅图像中的子图像块(以下简称为图像块)中的所有像素点,都按指定的 X 方向偏移量 △X 和 Y 方向偏移量 △Y 进行移动
设初始坐标为 的像素平移 后的坐标为 ,则有:
{ x 1 = x 0 + Δ x y 1 = y 0 + Δ y \left \{ \begin{array}{c} x_1 = x_0+\Delta x\\ y_1 = y_0+\Delta y \end{array} \right. {x1=x0+Δxy1=y0+Δy
图像平移变换式的矩阵形式为 :
[ x 1 y 1 1 ] = [ 1 0 Δ x 0 1 Δ y 0 0 1 ] [ x 0 y 0 1 ] \begin{bmatrix} x_1\\ y_1\\ 1 \end{bmatrix}=\begin{bmatrix} 1&0&\Delta x\\ 0&1&\Delta y\\ 0&0&1 \end{bmatrix}\begin{bmatrix} x_0\\ y_0\\ 1 \end{bmatrix} x1y11 = 100010ΔxΔy1 x0y01
(这个涉及到线性代数,这里不过多赘述)
【实现方式】
-
图像子块平移
-
整幅图像平移
图像平移保持原幅面大小,被移出的部分被截掉
图像旋转变换
图像旋转变换是指,以图像的中心为原点,将图像中的所有像素(也即整幅图像)旋转一个相同的角度
【实现方式】
- 旋转后的图像幅面被放大(按外接矩形尺寸)
- 保持图像旋转前后的幅面大小,把旋转后图像被转出原幅面大小的那部分截断
图像镜像变换
- 图像水平镜像变换:以原图像为参照,使原图像和水平镜像结果图像与虚拟的垂直轴成对称关系
- 图像垂直镜像变换:以原图像为参照,使原图像和垂直镜像结果图像与虚拟的水平轴成对称关系
图像转置变换
图像转置变换是指将图像的行坐标和列坐标互换
【注意】图像转置和图像旋转是两回事,图像旋转是将图像旋转多少度
原图像不论是顺时针旋转90°,还是逆时针旋转90°都不会得到图像转置后的结果
图像缩放
图像缩放是指对图像进行缩小或放大,也即对数字图像的大小进行调整的过程
设原图像中位于 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 处的像素点,经对原图像的行和列按相同比例 r r r 缩放后,在缩放后的结果图像上的对应像素点为 ( x 1 , y 1 ) (x_1,y_1) (x1,y1) ,则图像缩放前后像素点的坐标可表示为:
{ x 1 = r x 0 y 1 = r y 0 \left \{ \begin{array}{c} x_1 = r~x_0\\ y_1 = r~y_0 \end{array} \right. {x1=r x0y1=r y0
图像缩小
图像缩小的目的:
- 使缩小后的图像符合显示区域的大小要求
- 为了生成原图像的缩略图
【实现方式】
按整数比例缩小图像(一般实现方式)
【举例】
图像放大
放大图像的目的一般是为了使放大后的图像更好地显示在更高分辨率的显示设备上
【实现方式】
-
按整数倍放大算法:如果需要放大 k 倍,则将原图中的每个像素,填在新图像中对应的 k×k 大小的子块中
-
**最近邻域插值法 **
放大前的原图像在显示坐标的 X 方向和 Y 方向的坐标值分别用 x o l d x_{old} xold 和 y o l d y_{old} yold 表示;图像高度(X方向)和宽度(Y方向)分别用 h o l d h_{old} hold 和 w o l d w_{old} wold 表示;
放大后的目标图像在显示坐标的 X 方向和 Y 方向的坐标值分别用 x n e w x_{new} xnew 和 y n e w y_{new} ynew 表示;图像高度(X方向)和宽度(Y方向)分别用 h n e w h_{new} hnew 和 w n e w w_{new} wnew 表示则最近邻域插值法的原图像和目标图像的坐标关系为:
{ x o l d = x n e w ⋅ ( h o l d / h n e w ) y o l d = y n e w ⋅ ( w o l d / w n e w ) \left \{ \begin{array}{c} x_{old} = x_{new}·(h_{old}/h_{new})\\ y_{old} = y_{new}·(w_{old}/w_{new}) \end{array} \right. {xold=xnew⋅(hold/hnew)yold=ynew⋅(wold/wnew)
【举例】设已知有一个 3×3 的灰度图像如图 (a) 所示,按非整数倍数放大图像的最近邻域插值法将该图像放大为 4×4 的图像
将距非网格点 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 最近的灰度值作为 ( x 0 , y 0 ) (x_0,y_0) (x0,y0) 的灰度值,之后再赋给 ( x , y ) (x,y) (x,y)
-
双线性内插法
用4个最邻近像素点的灰度值去估计给定位置的灰度
已知像素点(0,0)、(0,1)、(1,0)和(1,1),要插值的点为 (x,y)
双线性插值的基本思路:首先在 x 方向上线性插值,也即在 (0,0) 和 (1,0) 两个点之间插入点 (x,0),在 (0,1) 和 (1,1) 两个点之间插入点 (x,1);然后在 y 方向线性插值,也即通过计算出的点 (x,0) 和 (x,1),在 y 方向上插值计算出点 (x,y)
同时,在已知 f(0,0)、f(0,1)、f(1,0) 和 f(1,1) 的情况下,按如下的双线性方程计算处 f(x,y) 值
【举例】
⬇️