文章目录

  • 前言
  • 一、灰度反转
  • 二、对数变换
  • 三、灰度直方图
    • 3.1、灰度直方图的概念及分布特征
    • 3.2、归一化灰度图像直方图
    • 3.3、灰度直方图的特征
  • 四、图像的代数运算
    • 4.1、图像的相加运算
    • 4.2、图像的相减运算
  • 结束!

前言

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


一、灰度反转

黑白图像的反转就是使灰度值为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)


执行代码:

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)=c⋅log(1+f(x,y))

对数变换曲线如下图所示:

对数变换的作用:

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

代码如下:

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

三、灰度直方图

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

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

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

设一幅数字图像的灰度级范围为 [ 0 , L − 1 ] [0,L-1] [0,L−1]则该图像的灰度直方图可定义为: 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,...,L−1其中, 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,M−1], y ∈ [ 0 , N − 1 ] y\in[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灰度级图像对应坐标位置像素值的相加,其结果可能会超过其最大的灰度表示范围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灰度级图像对应坐标位置像素值相减的结果大于或等于零时,则取其为结果图像中对应位置像素的灰度值;当相减结果小于零时,一般都是取零为结果值。当然,对于某些特殊的应用目的,也可以取其绝对值为结果值。

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

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

结束!

图像处理与机器视觉_第二篇相关推荐

  1. 图像处理与机器视觉_第一篇

    绪论部分就不写了,直接第二章走起! 文章目录 前言 一.电磁波谱与可见光谱 1.1.电磁辐射波 1.2.可见光谱 1.3.相关概念 1.4.电磁辐射波的成像方法及其应用领域 二.人眼的亮度视觉特性 2 ...

  2. 图像处理与机器视觉_第三篇

    文章目录 前言 一.图像几何变换 二.解决几何变换问题的思路 三.图像镜像 3.1.水平镜像的变换公式 3.2.垂直镜像的变换公式 四.图像转置 4.1.图像转置的公式 4.2.图像转置的程序实现 五 ...

  3. 数字图像处理与机器视觉_简单自动智能识别物体程序(机器视觉+数字图像处理)...

    非常好的识别物体的机器视觉程序.附有完整的说明文档和代码.代码由matlab写成,并附有测试图片.图片中含有各种物体,通过数字图像处理的知识,自动识别出图片中的各类物体. 文件:n459.com/f/ ...

  4. 软件使用_第二篇 Latex基础知识

    目录 1. 基础知识 1.1 Latex 源文件 1.1.1 空白距离 1.1.2 特殊字符 1.1.3 Latex命令 1.1.4 注释 1.1.5 纵向固定间距控制命令 1.1.6 页面控制命令 ...

  5. 单选选择才可以提交_第二篇:DJANGO开发产品选择表amp;调查问卷

    锅大虾:第一篇:DJANGO开发产品选择表&调查问卷​zhuanlan.zhihu.com 三.调查问卷部分 前端实现效果:首页 首页效果图 需求: 1.单项.多项选择,并且随意增加" ...

  6. 第二部分 Mysql数据库管理_第二篇 数据库MySql

    <1> 在数据库系统中,SQL语句不区分大小写(建议用大写) .但字符串常量区分大小写.建议命令大写,表名库名小写: <2> SQL语句可单行或多行书写,以";&qu ...

  7. 2字节取值范围_第二篇——整数和浮点数在计算机中的表示(2)

    下面,我们描述一下用位来编码整数的两种不同方式:一种只能表示非负数,而另一种能表示负数.正数和零. 1.无符号数的编码 原理:无符号数编码的定义 对向量 : 函数 将一个长度为w的0,1串映射到一个非 ...

  8. activty在哪个栈里面_第二篇Activity:2、任务和返回堆栈(Tasks and Back Stack)之基本介绍...

    参考:http://developer.android.com/guide/components/tasks-and-back-stack.html 在Android中,一个应用程序里面,通常包含了多 ...

  9. 设计模式_第二篇_策略模式

    本文是我通过学习<Head First 设计模式>而写. 作为我要描述的第一个模式,首先要说什么是设计模式,然后,用一个实例,并对这个实例不断的改进,引出策略模式. 与其空泛地给出一堆描述 ...

最新文章

  1. 管理不再是交换,而是相互成全!做到这三点,管理更有成效!
  2. JavaScript 动态创建标记
  3. java连接sqlserver2008
  4. 前端学习(2618):vue插槽--默认插槽
  5. python中文件最重要的功能是什么和接收数据_Python测试题
  6. python怎么在散点图上画圆圈_matplotlib散点中的标记点
  7. Ubuntu 16.04 软件安装
  8. 常用技巧性CSS:颜色渐变,截断英文单词,阴影文字.
  9. 什么是联表查询?(深度刨析,建议收藏)
  10. 关于Opencv出现的错误“ 0x000007fefdf6a06d (KernelBase.dll) Microsoft C++ 异常的几种尝试解决方式
  11. 2021金山WPS秋招前端笔试题
  12. JavaScript 移动端点击事件延迟问题
  13. SylixOS操作系统自学经历(一)
  14. 在Outlook中如何实现自动密送
  15. Invalid bound statement (not found): com.kuang.dao.bookMapper.queryAllbook
  16. 孕期饮食新理念——初光孕妇餐 让孕期营养更科学
  17. 免费WebCamps-北美,亚洲和欧洲-*立即注册*
  18. 小区规划开发商想妻子的谎言改就能改(图)2015年05月02
  19. 32位古董级CPU-N270群晖系统安装手册
  20. Mybatis源码学习-动态代理

热门文章

  1. 一朝发祥地,两代帝王城
  2. 嵌入式如何与AI相结合,什么是端侧AI~
  3. Angular.js之ng-options用法
  4. 缺氧游戏计算机用水,缺氧用水裂解套路一览 缺氧游戏用水怎么玩法
  5. Oracle根据行号达到分组排序取第一条的效果,排序后取第一条
  6. 【学习笔记】Visual Cortex of Human‘s Brain
  7. 画时序图在线工具-ProcessOn
  8. 矩阵分析学习笔记(四):λ矩阵及其Smith标准型
  9. 分布式下的 ID 实现
  10. 程序员如果到了30岁还一事无成,就别只想着琢磨技术了!