图像处理与机器视觉_第二篇


前言

从一般意义上来说,图像运算仅指对图像中的所有像素实施了相同处理的那些运算,比如对图像的直方图运算、代数运算、几何运算等。


一、灰度反转

黑白图像的反转就是使灰度值为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)=L1f(x,y)

在这里插入图片描述
执行代码:

invert_image(image, imageinvert)

二、对数变换

对原图像 f ( x , y ) f(x,y) f(x,y)进行对数变换的解析式可表示为: g ( x , y ) = c ⋅ l o g ( 1 + f ( x , y ) ) g(x,y)=c\cdot log(1+f(x,y)) g(x,y)=clog(1+f(x,y))

对数变换曲线如下图所示:
在这里插入图片描述
对数变换的作用:

  • 通过对图像的灰度值的动态范围进行压缩,主要用于调高输入图像的低灰度值
  • 人的视觉感觉与进入人眼的光的强度成对数关系,常先给图像进行对数变换后再显示输出。

代码如下:

log_image(Image, LogImage, 'e')
Base:e, 2, 10

三、灰度直方图

3.1、灰度直方图的概念及分布特征

灰度图像的直方图是一种表示数字图像中各级灰度值及其出现频数的关系的函数,一般用一个二维坐标来表示。

描述灰度图像直方图的二维坐标的横坐标用于表示像素的灰度级别,纵坐标用于表示该灰度出现的频数(像素的个数)

设一幅数字图像的灰度级范围为 [ 0 , L − 1 ] [0,L-1] [0,L1]则该图像的灰度直方图可定义为: h ( r k ) = n k , r k = 0 , 1 , 2 , . . . , L − 1 h(r_k)=n_k,r_k=0,1,2,...,L-1 h(rk)=nk,rk=0,1,2,...,L1其中, r k r_k rk表示第k级灰度值; n k n_k nk表示图像中灰度值为 r k r_k rk的像素的个数; h ( r k ) h(r_k) h(rk)是灰度图像的直方图函数。

灰度直方图表明图像中每一个灰度级有多少个像素。
在这里插入图片描述

以下为四种基本图像类型及其灰度直方图:
在这里插入图片描述
在这里插入图片描述


3.2、归一化灰度图像直方图

归一化灰度图像直方图的引入:
由于之前所定义的灰度直方图反映的是图像中各灰度的实际出现频数。这样当某个灰度值的频数(计数值)远远大于其它灰度值的频数时,根据图像的某个或某些像素出现的最大频数来确定直方图的纵坐标的最大尺度既不方便也不现实,所以就引入了归一化直方图的概念。

r k r_k rk为图像 f ( x , y ) f(x,y) f(x,y)的第k级灰度值, n k n_k nk是图像 f ( x , y ) f(x,y) f(x,y)中具有灰度值 r k r_k rk的像素的个数,n是图像 f ( x , y ) f(x,y) f(x,y)中的像素总数,则图像 f ( x , y ) f(x,y) f(x,y)的灰度直方图定义为: P ( r k ) = n k n , k = 1 , 2 , . . . , L P(r_k)=\frac{n_k}{n},k=1,2,...,L P(rk)=nnk,k=1,2,...,L


3.3、灰度直方图的特征

灰度直方图具有如下一些特征:

  • 直方图仅能描述图像中每个灰度值具有的像素个数,不能表示图像中每个像素的位置(空间)信息;
  • 任一特定的图像都有唯一的直方图,不同的图像可以具有相同的直方图
  • 如果一幅图像由两个不连接的区域组成,则整幅图像的直方图等于两个不连接的区域的直方图之和。

直方图反映的总体性质:明暗程度、细节是否清晰、动态范围大小等。

在这里插入图片描述

代码如下:

gray_histo(Rectangle1, Image, AbsoluteHisto, RelativeHisto)

示例代码如下:

read_image(Image, '图像路径')
get_image_size(Image, Width, Height)
gen_rectangle1(Rectangle1, 0, 0, Height, Width)
gray_histo(Rectangle1, Image, AbsoluteHisto, RelativeHisto)
gen_region_histo(Histo1, AbsoluteHisto, 200, 200, 1)

四、图像的代数运算

4.1、图像的相加运算

图像相加是通过对两幅大小相同的图像对应位置像素的相加运算,以产生一幅新的含有两幅图像信息的图像的方法。图像相加也称为图像合成

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\times 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\in[0,M-1] x[0,M1] y ∈ [ 0 , N − 1 ] y\in[0,N-1] y[0,N1],则两幅图像的相加运算可表示为: 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灰度级图像对应坐标位置像素值的相加,其结果可能会超过其最大的灰度表示范围255,显然对图像相加运算的结果都需要进行处理,基本方法有三种:

  • 一种是将两像素灰度值相加后的平均值作为相加结果。
  • 二是根据两幅图像所有像素灰度值相加结果的最小值和最大值情况,作等比例缩小,使其结果灰度值符合0至255的灰度值范围。
  • 三是当两像素灰度值相加后的值超过255时,取255即可。

代码如下:

add_image(Image1, Image2: ImageResult: Mult, Add: )

g ′ : = ( g 1 + g 2 ) ∗ M u l t + A d d g':=(g1+g2)*Mult+Add g:=(g1+g2)Mult+Add


4.2、图像的相减运算

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\times 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 , − 1 ] x\in[0,-1] x[0,1] y ∈ [ 0 , − 1 ] y\in[0,-1] y[0,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)

在这里插入图片描述
代码如下:

sub_image(ImageMinuend, ImageSubtrahend: ImageSub: Mult, Add: )

当两幅256灰度级图像对应坐标位置像素值相减的结果大于或等于零时,则取其为结果图像中对应位置像素的灰度值;当相减结果小于零时,一般都是取零为结果值。当然,对于某些特殊的应用目的,也可以取其绝对值为结果值。

图像相减运算的典型应用:

  • 消除背景的影响
  • 检测同一场景下两幅图像的变化

结束!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

禁筱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值