声明:内容大部分从某文档中搬砖过来,部分自己理解的标注。最开始接触相关内容的文档只是为了个人学习,顺便做个笔记,我之所以将此文档搬运到博客上是因为我觉得它很有用(对于基础)想借此分享给大家学习。

图像的数字化

一般的图像(模拟图像)不能直接用计算机来处理,必须首先转化为数字图像

把模拟图像分割成一个个称为像素的小区域,每个像素的亮度或灰度值用一个整数表示

数字化的含义:

使模拟图像的灰度、亮度和色彩数据化

图像数字化的步骤:

两个步骤:

1、在空间坐标对图像离散化——图像采样

2、在幅度上离散化——灰度级量化(取整)

图像采样示意图:

也就是在xy轴上(空间坐标)将完整的一幅图像定义在从某些位置上“拆解”(离散)成最小单位即像素快,用坐标(x,y)表示像素点之间的位置关系。

将虚拟图像转换为数字图像是为了达到计算机进行处理的目的。虚拟图像转换为数字图像的方式就是把虚拟图像由像素点来表示。

数字图像,它是由像素点(图像的最小单位)构成的,每个像素点表示着一个灰度值在平面坐标系上矩阵排布,这些灰度值按照一定的关系组合在一起形成了图像。至此,既然图像的操作单元以及它的排布关系已经确定了,那么就可以通过计算机对其计算处理。

为什么是灰度?

这个问题我最早也困惑为什么不是红度?绿度?蓝度?,后来想想无论红的绿的蓝的黑的都可以,确定图像完全可以由任意颜色的0~255之间的值来表示。偏向于灰度可能是因为灰的极端为黑白两种鲜明的对比色也或许是因为早期的成像都是黑白。

灰度值量化

经过采样,模拟图像已在空间上离散化为像素,但抽样所得的像素值仍是连续量(非整数),必须将其化为正整数——灰度级的量化。

若抽样点(橡素)的连续浓淡值为Zi ,Zi-1 <= Zi < Zi+1,则Zi = qi,即Zi量化为整数qi,qi称为像素的灰度值

(所谓量化,就是把经过抽样得到的瞬时值将其幅度离散,即用一组规定的电平,把瞬时抽样值用最接近的电平值来表示。经过抽样的图像,只是在空间上被离散成为像素(样本)的阵列。而每个样本灰度值还是一个由无穷多个取值的连续变化量,必须将其转化为有限个离散值,赋予不同码字才能真正成为数字图像。这种转化称为量化。)

一般,灰度图像常量化为8位图像。

数字图像数据量的计算

抽样点数越多,图像像素数目越多,图像数据量越大

量化级别越高,图像每个像素所占用的字节越长,图像数据量越大。

一幅数字图像的总数据量可用公式计算:

数据量=M*N*b

M——每行像素量

N——每列像素量

b——灰度量化所占用的位数或字节数

例如:一幅8位灰度图像,大小为512*512,其数据量多大?

512*512*8bit = 512*512*1k = 512*512 / 1024 = 256 kb

数字图像处理的实质:

通过对数字图像中像素数据的判断,依据处理或识别要求,最后逐个修改像素的灰度值。

数字图像的数据以矩阵形式排列

一幅M*N个像素的数字图像,其像素灰度值的排列实际形成了一个M行N列的矩阵F,数字图像中的像素与矩阵元素是一 一对应的

矩阵可用二维数组来表示

一个M*N像素的矩阵,在算法语言中,可以用一个M*N的二维数组来表示。

此后对像素的处理就代之以对数组元素的处理,很容易用计算机来实现。

如何用高级语言实现图像处理?

在图像处理中,一般都是顺序完成对整幅画面的存取和处理操作的,具有代表性的是以光栅扫描方式——逐行逐列存取与处理。

若数字图像的大小为M*N(width*height)个像素,数组元素灰度值为 f(x,y),则C语言处理程序的基本框架为:

从程序显而易见,计算机处理数字图像是从每个像素点逐个处理。

图像二值化流程:

二值化处理的程序(一个CVI例子程序)

程序逐个判断像素点的pixel_value > Th ? 如果为true 设置此像素点的灰度值为255,为false设置此像素点的灰度值为0,由此处理后的图像会呈现黑白鲜明的对比。

处理结果:

图像处理的方法多种多样,从实现处理的过程看有两类:空域处理 和 频域处理。

空域:即空间域,指灰度图像本身,图像是一种灰度在二维空间变化的信息

空域处理:对源图像像素的灰度值直接运算,生成新的图像,被操作者是像素的灰度值。

空域处理可分为以下几种方式:

点处理

区域处理

迭代处理

跟踪处理

点处理:是指输出像素值仅取决于对应输入像素的像素值。

若输入像素灰度值为f(x,y),

输出像素灰度值为g(x,y),

则g(x,y) = ▲f(x,y) ,

▲代表某种函数关系式。

点处理的典型用途:

调整图像的灰度分布,如灰度变换(线性、非线性)和灰度修正;

图像的二值化;

图像反色;

点处理方法的优点:

可用LUT方法快速实现;

区域处理——领域处理

算法:

根据输入图像某像素f(x,y)的一个小领域N(f(x,y))的像素值,按某种函数关系▲得到输出像素g(x,y)的值,即g(x,y)=▲(N(f(x,y)))

区域处理中的领(区)域的形状

领域N(f(x,y))的形状是多种多样的;实用中多采用以像素(x,y)为中心的矩形对称领域如3*3、5*5等

领域越大,计算量越大,若图像大小为M*N,领域为K*L,则领域处理时总计算量为M*N*K*L。

领域处理的用途

图像的平滑(滤波)

图像的锐化(增强)

图像的形态学处理等

迭代处理:

迭代是指反复进行某种处理运算。

迭代处理多用于图像细化、图像增强、图像平滑及边缘探测等方面。

跟踪处理:

跟踪处理一般用于图像边界、边缘的提取,以便进行图像的分割、识别及特征参数的计算。

边缘提取的原理在于判断目标里外两像素点灰度值差,若差大于某个特定值即可断定这个像素点的位置为目标边缘。

图像处理方法二:频域处理

为什么要采用频域处理?

灰度图像的边缘、线条——高频成分

其余部分灰度值改变不大——低频成分

观察图像的高频和低频成分。因此采用频率分析——变换方法有利于对图像进行特征提取及图像增强的处理。

图像在频域上处理的一般过程:

频域处理是建里在修改图像傅里叶变换基础之上的——增强感兴趣的频率分量,然后将修改后的傅里叶变换直再做逆傅里叶变换,以得到增强的图像,一般过程:

xxx

机器视觉(图像处理)入门金典之图像数字化及处理方法相关推荐

  1. c语言求正整数连续数的和大数字_机器视觉(图像处理)入门金典之图像数字化及处理方法...

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 声明:内容大部分从某文档中搬砖过来,部分自己理解的标注.最开始接触 ...

  2. 机器视觉/图像处理可能用到的三方库(各个库的优缺点)

    整理目前我所了解的视觉库,常用的,整理.机器视觉处理软件:用来完成输入图像数据的处理,通过一定的运算得出结果,这个输出的结果可能是PASS/FAIL信号.坐标位置.字符串等. 常见的机器视觉软件以C/ ...

  3. 免费送书啦!《 OpenCV图像处理入门与实践》一本全搞定

    OpenCV 的基础图像操作都只是针对图像中的像素点,并不是直接对图像整体进行的操作.而很多时候并不能仅通过改变像素点来进行图像的操作,为此我们需要学习关于图像的算术操作. 1.图像加法 对于两张相同 ...

  4. 图像处理入门 100 题,有人把它翻译成了中文版!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 但是,这份资源教程是由日本人写的,日文版,读起来非常不方便.好消息,最近我在逛 GitHub ...

  5. [Python图像处理] 三十五.OpenCV图像处理入门、算数逻辑运算与图像融合(推荐)

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

  6. c#图像处理入门(-bitmap类和图像像素值获取方法)

    c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...

  7. 职业:图像处理入门教程

    公司里有哥们想学图像处理,认为这东西看起来挺简单,应该可以很快入门进阶.他人之心,吾忖度之,不能再忖度了,否则会变成以小人之心度君子之腹.所以,应哥们的要求,我给他介绍一个图像处理入门教程.看起来入门 ...

  8. opencvpython教程百度云资源_Python+OpenCV图像处理入门,视频教程下载

    课程介绍: 李老师讲课生动.深入浅出,出版OpenCV编程案例详解.Python-OpenCV图穷录.MATLAB图像处理.MATLAB图像案例教程等在线课程. 本课程系统概括了Python-Open ...

  9. c++opencv显示中文_图像处理入门 100 题,有人把它翻译成了中文版!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 之前,我发文推荐过一份图像处理入门 100 题,主要针对图像处理的一些基本操作,非常适合入门! ...

最新文章

  1. 图灵奖得主LeCun力推无监督学习:要重视基于能量的学习方法
  2. 【DBA】DBA——数据库管理员
  3. freemarker的测试结果框架_TestNG框架Listener介绍及测试结果的收集
  4. javaScriptDay01
  5. SVN的VS.NET插件——AnkhSVN
  6. linux把2块盘挂到一个分区,linux系统如何挂载第二块硬盘
  7. php中svn上传项目直接访问不了,phpstorm8 通过svn导入项目后项目右键列表里没有subversion选项,无法提交和更新啊?...
  8. win10计算机管理字体糊,完美解决:Win10系统字体模糊解决教程
  9. gps l1带宽_请问GPS带宽是多少?
  10. Linux---带你区分根目录 和 家目录
  11. HarmonyOS原子化服务案例分享-成语心情
  12. pytorch学习五、深度学习计算
  13. 卸载kerberos
  14. -source 1.6 中不支持 diamond 运算符
  15. 用php编写多项选择题_php 多选框问题(类似一道多选题)多选题的答案 以及正确答案都记录到数据库里了,读取修改问题...
  16. ACM-ICPC 2017 Asia QingDao:喜,抑或是悲?幸运,抑或是倒霉?退役!!!
  17. 大厂秋招_春招面试全流程如何拿到大厂offer?Java进阶图谱
  18. php采集新闻数据插入数据库,PHP采集www.php.cn的文章,并存入数据库。
  19. 5*6的扫雷游戏的MATLAB程序(随机布雷与显示雷数部分)
  20. 文献推荐:大区域生态系统服务与社会生态驱动的空间关系——以黄河流域为例

热门文章

  1. 【速度收藏】16条有趣的Python一行代码实现
  2. java define 宏_#define 用法总结
  3. VUE代码在html中的哪个片段,vue渲染的数据是html片段的时候,怎么处理
  4. 淅川一高2021年高考成绩查询,淅川一高2019年高考录取金榜
  5. JAVA连接数据库(mysql)-executeUpdate,executeQuery和execute的使用
  6. BlackAndWhiteChess
  7. li标签:list-style
  8. Enfocus PitStop Pro 2019(PDF增强插件)
  9. html 百度语音合成,百度语音合成
  10. AspNetPager 分页显示