数字图像处理复习(part3)

前面提到了空间域变换,接下来开始频率域变换,然后各种滤波,最后还了解了彩色图像和压缩。进入最后的部分。

Chapter9 形态学图像处理

引入:为什么叫形态学呢?形态学是生物学的定义,用于处理动物和植物的形状和结构。
数学形态学mathematical morphology,MM
集合运算
映像 {w|w=-b, b∈B} ,翻转变换
平移 {c|c=a+z, a∈A},平移

子弹只要擦着你的皮,你就伤了,这就算hit了!
击中 hit,是结构元素(小)只要和大的块求交不为空就行
不击中 miss,是结构元素(小)只要和大的块求交为空

膨胀和腐蚀(二值图像)

加号是膨胀,减号是腐蚀,好理解吧
膨胀 dilate,加长或变粗的操作,由一个称为结构元素的集合来控制。结构元素必须指明原点
A⊕B = { z | (B)z ∩ A ≠ ∅ },表示图像A用结构元素B膨胀

一句话概括,只要击中了,就以这个点为中心,套上结构元素。
可用来补全残缺文字。(本来断了线,一变粗就连起来了)

结构元素的分解,提高计算效率。(数电知识,异或的结合律)
A⊕B = A⊕(B1⊕B2) = A⊕B1⊕B2

matlab里有专门分解结构元素的函数

腐蚀 erode,收缩或细化的作用
A⊙B = {z|(B)z ∩ AC ≠ ∅ } 图像A用结构元素B腐蚀,是和A补集的运算


一句话概括:必须是包含关系,才可以把这个结构元素的中心的值给要了。

膨胀和腐蚀的组合运算


公式太难打了,直接上图…
开运算(把你们给分开):平滑对象轮廓,断开狭窄的连接,取消细小的突出部分。先腐蚀,再膨胀。
闭运算(把你们给连起来):将狭窄的缺口连接起来形成细长的弯口,填充比结构小的孔洞。先膨胀,再腐蚀。

开运算像中学老师,看见一点恋爱苗头就要扼杀在摇篮里,然后让两个人自己涨自己的。(主要目的是分开,所以叫“开运算”。好,就这么记吧)
闭运算像媒婆/丘比特,人家还犹犹豫豫呢就要把两个人连起来,然后把周围的干扰项踢开。


正经点的理解方式:
开运算,是圆在图形的内部各种平移,最后取圆的部分作为结果。
闭运算:是圆在图形外部各种平移,取圆没有移动到的地方。

开运算 去除指纹噪声,先去噪,再膨胀连接(上面噪音太多了,先把米掏干净再蒸)

击中击不中变换,hitmiss 需要结构元素组B =(B1, B2)

用来识别特定形状

给个例题加深理解,感觉题目出的很好!

Step1:确定结构元素

注意:B1和B2应该是互斥的,并集 正好是个正方形。

Step2:求B1求腐蚀
所以只有左边和下方的图形能够被包含,显示。

Step3:对AC求B2的腐蚀
取反了。看B2这个框能框住谁?这次左侧和右上的可以。
Step4:求交集。

然后我们就找到想要的正方形的位置了!

matlab工具箱里还有很多东西,应用如 细化指纹、对图像物体进行骨骼化。

连通分量

基本概念:
N4( p ), ND( p ), N8( p )
4邻接,8邻接;
4连接,8连接;

一张图搞定这些概念
第一行分别是4、D、8连接。D是指对角相邻元素
Diagonal adjoining
第二行:左图:p和q满足4、 8邻接。右图:p和q只满足8邻接。因为4邻接只能是上下左右
第三行:左图是4、 8邻接,右图是只满足8邻接(45度了)
。。。这一节看起来蛮有来扫雷连连看十滴水的感觉呢。。。
matlab中有标记连通分量的函数,分为4邻接和8邻接两种。
bwlabel(f, conn), f是图像(二值矩阵),conn是连接方式,4或8

形态学重构

重构变换涉及两幅图像和一个结构元素(原谅我没看懂这些概念)
标记marker,变换的初始状态
掩膜mask,变换的限制区域
结构元素,决定连接性,通常为ones(3,1)
用图片例子方便理解。掩膜mask,相当于最大可能给的范围
标记是初始,种子。
种子依靠结构元素的连接性,每次连接延伸一下。然后不停延伸,但一定不能超过掩膜的范围。

应用

  • 由重构做开运算。因为传统开运算,恢复过程不是很精确,重构可以精确恢复
  • 填充孔洞:定义标记图像fm,

    matlab函数,g=imfill(f,‘holes’);
  • 清除边界对象: 定义标记图像fm。原图像做掩膜
    g=imclearborder(f,conn);

灰度图像的形态学

需要一个结构元素b
膨胀是在结构元素确定的邻域块中,选择原图像值f与结构元素的和的最大值。
腐蚀是在结构元素确定的邻域块中,选择原图像值f与结构元素的差的最小值。
膨胀 f⊕b,取最大值
(f⊕b)(x,y) = max{f(x-x’,y-y’) + b(x’,y’) | (x’,y’)∈Db}
当b(x,y)是平坦的,都为0时,(f⊕b)(x,y) = max{f(x-x’,y-y’)|(x’,y’)∈Db}

腐蚀 f⊙b,取最小值
(f⊙b)(x,y) = min{f(x+x’,y+y’) - b(x’,y’) | (x’,y’)∈Db}

重点应用:开运算/闭运算
过程
1扫描一个单行的灰度值。

  1. 开:去掉亮度高 但 持续范围比较短的部分
    去除比结构元素更小的亮度细节
  2. 闭:填充亮度低 但 持续范围比较短的部分
    去除比结构元素更小的暗色细节

2重复扫描完所有的行

顶帽、低帽
开运算可以用来补偿不均匀的亮度背景。比如一幅图片中,背景亮度不是一样的,这边亮那边暗,可能会使某些部分被错误弄成物体。
根据图像进行解释,从左到右,从上到下分别为abcde
a是原图
b是傻白甜,直接用阈值处理的图像。大的给1,小的给0,无情地把右下角那几颗香喷喷的米粒给无视了(说明我黑到没被认出来,不是我的原因,是背景的错!)
c对原图进行开运算。联想开运算的定义,是去掉局部较亮的部分。所以得到一个去掉比较亮的大米粒的背景板(这个背景板和原图的基本相同)
d原图减去开运算,把粉底揭掉,看看真面目
e对其进行二值化处理

颗粒分析,取不同大小的结构元素

灰度图像的重构

其实跟顶帽的思想也差不多。都是减去背景,突出细节

Chapter11 图像分割

引入:把图像细分成各个区域和组成对象
难点:分割程度,分的太粗或太细都不好
思路:单色图像分割,基于图像亮度值的
不连续性:亮度突变(如边缘)
相似性:基于事先定义的规则

点、线、边缘的检测

  • 基于点检测模版:用模版w处理图像,并通过阈值T处理提取图像中孤立点。
  • 基于局部(邻域)亮度差:根据领域内亮度最大值和最小值之差是否超过阈值T,比点检测模版灵活。

线检测
基于四个线检测模版:
依次用四个模版处理图像得到g1、g2、g3、g4;
寻找各gi中超过阈值T的像素点集合。
为什么用4个模版?为了比较看谁的值最大,就最可能是哪条线?!

边缘检测

  • 使用edge函数的边缘检测
    基于亮度值的不连续性,找到图像亮度快速变化的地方。
    图像亮度一阶导数超过阈值的地方
    亮度的二阶导数有零交叉的地方
    sobel边缘检测器(老师强调了)
    prewitt边缘检测器
    Roberts边缘检测器(易于硬件实现)

    今天做实验看到的大米图用的是[1 2; -1 -2]

LoG边缘检测器(Laplacian of a Gaussian)
这么怪的公式会考?(不会的吧。滑稽)

零交叉检测器,类似于LoG,但使用指定滤波函数,而非高斯
Canny边缘检测器,重点
比前几种好。基于边缘梯度方向的非极大值抑制;双阈值的滞后阈值处理。

  1. 高斯平滑
  2. 计算梯度幅度和方向。可以选用前几种算子。
  3. 根据角度对幅值进行非极大值抑制
    (沿着梯度方向)为了细化边缘。邻域中心与沿着其对应的梯度方向的两个像素相比,如果中心像素为最大值,保留。否则中心置零。
  4. 双阈值算法检测、连接边缘
    选取系数TH,TL。比例为2:1或3:1。
    小于底阈值不要,赋0;大于高阈值要,赋1或255;
    中间的点,采用8连通区域。在8邻域内,遇到大于高阈值的像素,接受,同样作为边缘点,赋1或255。

霍夫变换 线检测

引入:因为噪声、不均匀照明,使算法得到的边缘不连续,难以得到完整的边缘特性,所以需要把不完整的边缘组装成完整的边缘。Hough Transform
把(x,y)转换成(ρ,θ)
对于点x(xi, yi),经过其的所有直线对应(ρ, θ)平面内的一条正弦直线。但我好奇k怎么知道的呢?或许是把ρ计算出来当做已知吧,毕竟ρ用距离公式就能算啊…

阈值处理

全局阈值处理,首先选一个T,然后分成两组,计算两组的像素平均亮度值μ1和μ2
计算一个新阈值T=1/2(μ12),循环(统计均值,计算)。直到连续迭代中T的差比预先指定的参数T0小为止。
or ,利用人眼,挑个中位数
比如在pdf图像中,使文字更加清晰,提高对比度。

局部阈值处理
为什么呢?因为背景照明可能不均匀。
顶帽运算,属于局部阈值处理。顶帽运算是原图像与“开运算”的结果的差

图像f0是f的形态学开运算,常数T0是对f0应用函数graythresh后的结果。

基于区域的分割

把R分成R1、R2、R3,…,Rn
要求是:所有的Ri,并集为R;每个Ri自身是连接区域;彼此交集为空;P(R i)=TRUE;
P(Ri∪Rj)=FALSE,对于任何邻接区域
第四第五条的意思是,一个区域内像素点必须满足某种谓词P的性质。

区域生长,根据预先定义的生长准则,把像素或子区域集合成较大区域。首先找“种子”,然后找邻居(指定的灰度级或颜色)。有点像掩膜标记的思路

区域分离与合并
先分离
然后合并任何满足P(Ri∪Rj)=TRUE的区域
不能再进行合并时,停止。

基于分水岭的分割

使用距离变换的分水岭分割二值图像
通常用背景像素距离前景像素的最近距离来代表相应背景像素的灰度。
D=bwdist(f)
L=watershed(f)
abcdefghi,挨个分析
1原图g
2补,反一下
3 使用了bwdist,让背景的1变零,然后黑色的地方,根据离背景1最近距离,来变成不同的正数
4补,反一下
5分水岭算法
6,图w,将L==0的那些纯黑边界找出来(目前看来,不够连续,离散)
7 原始图像g和图w的叠加
8 黑色线叠加在原始图像上,g&~w
9 xor(g,w),异或


基于梯度的分水岭分割灰度图像
使用梯度作为地形数据
2 梯度图像,越亮的地方,变化越明显
4 平滑处理,ones(3,3)

基于标记区域的分水岭分割灰度图像
选择内部(前景)标记区域和外部(背景)标记区域,指导分水岭分割。

Chapter11 表示与描述

嗯,感觉自己越来越不想写了。。。加油,最后一章,写完我也就算是复习了一遍啦!
引入,刚刚咱们完成了分割操作,接下来要对各区域进行形式化地表达和描述
对区域进行表示,涉及到两个基本选择:
1.形状特性焦点,用区域外部特征(区域的边界)表示区域
2.反射率特性焦点,用区域内部特征(组成区域的像素)表示区域

确定表示方案后,需要对区域进行描述

表示

Freeman链码

链码通过一个指定长度和方向的直线段的连接序列来表示边界。
一般采用4或8个方向,正右方为0,然后逆时针转。


循环差分链码:用相邻链码的差代替链码
(2)10103322 ——>33133030
3,3,1,3,3,0,3,0(想象成向左转向右转)

多边形逼近,有点像老祖宗的求圆周率方法
基本思想:用最少的多边形线段,获取边界形状的本质。
两种方法:点合成法、点分裂法

  • 合成,merging:
    1沿着边界选两个相邻点对,计算首尾连接直线段与原始折线段的误差。
    2如果误差<阈值,去掉中间点,选择新点与下一个相邻点对,重复上一部;否则,存储点和线段,置误差为0,选被存储线段的终点为起点,重复1,2.
    当程序的第一个起点被遇到,程序结束

problem:顶点一般不对应于边界的拐点(如拐角)。因为新的线段知道超过误差的阈值才开始。

  • 边分裂 splitting
    1连接边界线段的两个端点(如果是封闭边界,连接最远点)
    2统计其他点到该线的距离,如果最大正交距离大于阈值,边界分成两段,最大值点为分成两端的公共顶点,重复1
    如果没有超过阈值的正交距离,结束。

最小周长多边形(MPP)的多边形近似
关键词:凸角(黑点)、凹角(白点)
1获取区域边界后,确定边界的凹顶点(白)和凸顶点(黑)。黑顶点就是边界的点,白顶点是边相邻但没有被填充的正方形的对角顶点。
2连接所有的凸黑顶点构成初始多边形,删除该多边形之外的白顶点边界和内部白顶点保留!!!
3用剩余的黑白顶点,连接构造多边形,删除所有凹(顺时针转,内角不是90°而是270°)的黑顶点,重复此步只到不再发生变换。

标记,用一维函数表达边界,降维
最简单的方法是用极坐标思想

problem:函数过分依赖于旋转和比例的变化
改进
旋转:

  • 选择离之心最远的点作为起点
  • 选择从质心到主轴最远的点作为起点
    比例变换:
    规范化normalization,使函数值总是分布在相同的值域里,比如[0, 1]
    边界线段
    把边界分解成片段,可以降低边界复杂度
    凸壳:任何集合s的凸壳H是包含S的最小凸集
    凸缺:集合的差H-S
    骨架,想要表示结构形状,把它削减成图形Graph,可以通过细化thiniing(别名,抽骨架 skeletonizing)来实现

MAT方法:R是一个区域,B为R的边界,对于R内的点p,找p在B上最近的点,如果p有多于一个最近的邻点,则属于R的中轴(骨架)。

边界描述子

简单描述子,边界的长度,连接方式(4/8),边界的直径、长短轴、基本矩形、偏心率等
形状数,具有最小整数值的差分链码串。形状数的阶,定义为形状数中数字的个数。
生成形状数的步骤:
旋转边界坐标到长轴方向;从左上角开始,按顺时针方向写出链码串;求链码串的差分串;移位差分串,获得结果。

傅里叶描述符 ,优点是使用复数作为描述符,对于旋转、平移、放缩等操作和起始点的选取不十分敏感。
统计矩,跟极坐标差不多,还是降维,旋转到坐标系

区域描述符,matlab提供了很多纹理描述符
还有基于频域的方法,纹理的频谱度量。。。(俺真的搞不懂)

不变矩,有些二维不变矩,对于平移、缩放、镜像、旋转不敏感。

主分量描述

像物理的坐标系变换。主分量是变化更大的量。又提到了特征值,特征向量。

数字图像处理复习(part3)相关推荐

  1. 数字图像处理复习(part1)

    数字图像处理复习(part1) 之前看学长大四发了学习笔记,看着复习挺方便的,我也试试吧.初次在CSDN上写东西,写的还不是代码,本人学习能力也一般,可能写的不是很好啊.见谅~ Chapter1 绪论 ...

  2. 数字图像处理复习笔记

    数字图像处理基础 1.绪论 1.1 数字图像的概念 图像:用各种观测系统以不同的形式或者手段观测客观世界从而获得的可以直接或者间接作用于人的视觉系统而产生的视知觉实体.其中图像可分成"图&q ...

  3. 2020高级数字图像处理复习笔记

    学习高级图像处理课程,以及<数字图像处理>书本的内容总结 第一章 绪论 模拟图像就是生活中接触到的各类图像,照相机所拍的照片.医学所用的光底片一类的光学图像以及眼睛所看到的一切景物图像等, ...

  4. MATLAB数字图像处理复习概览

    MATLAB数字图像处理 第1章 绪论 数字图像的概念 数字图像处理 第2章 数字图像处理基础 数字图像的生成与表示 数字图像的数值描述 第3章 图像基本运算 图像几何变换 几何变换基础 位置变换 几 ...

  5. 数字图像处理复习提纲

    数字图像处理 第一章 数字图像基础 什么是数字图像(理解) 数字图像是由图像数字化得到的.以像素为基本元素的可以用数字计算机或数字电路存储和处理的图像 数字化的空间位置称为像素,数字化的亮度称为灰度值 ...

  6. 数字图像处理-图像基础-复习总结

    文章目录 数字图像处理复习总结 数字图像基础 数字图像基础概念 采样和量化 非均匀采样与量化 数字图像常见失真类型 数字图像处理基础 数字图像处理基本概念 数字图像处理研究内容 数字图像处理关键阶段 ...

  7. 830数字图像处理(冈萨雷斯版)考研笔记(一):大纲与题型

    前言 上一个周末,2020年考研结束.对于自己而言,虽然有很多不尽人意的地方,但是我始终觉得,每一个阶段都要留下点什么,如果最后仅仅得到两个词语,成了或者没成,对于我来说将会是更大的打击.我喜欢把每一 ...

  8. matlab 图像 幅度谱 低通滤波_数字图像处理期末复习2018-12-21

    数字图像处理期末复习2018-12-21 愉快先生 0.204 · 字数 5547 · 阅读 1834 2018-12-22 19:35 (数字图像冈萨雷斯第二版教材) 一.基本原理 图像的读取.存储 ...

  9. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part3

    本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part3,辑录该书第135至第184页之代码,供有需要读者下载研究使用.代码执行结果请参见原书配图. --------- ...

最新文章

  1. 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
  2. phonegap+jquerymobile开发android的心得(6)
  3. 人生最浪费生命的四件事,2017年别再做了!
  4. Chinaren,逐渐变为垃圾了。
  5. TCP/IP , HTTP Protocol
  6. html ui 下拉列表,Atitit.ui控件-下拉菜单选择控件的实现select html_html/css_WEB-ITnose...
  7. 服务台与事件管理解决方案
  8. js 倒计时 php,2种简单的js倒计时实现方法
  9. eclipse中创建最简单的maven结构的项目
  10. 安卓APK文件结构解析 怎样去除内置广告 及修改图标和文字
  11. 2021-03-17 工作中服务乱码问题解决措施
  12. 优化 AIX 6.1 的性能
  13. IPMI用户名密码忘记了怎么处理?
  14. Linux(RHEL7及CentOS7)下DNS服务器的搭建与配置
  15. System.setOut(ps)重定义了输出流后,如何重定向控制台输出
  16. 《工程伦理与学术道德》期末考试
  17. Fiddler下载安装及手机抓包--小白版
  18. Xamarin 总结 (官方文档笔记)
  19. Deep Spatio-Temporal Representation for Detection of Road Accidents Using Stacked Autoencoder
  20. Qt连接MySql数据库(本地和远程数据库均可)

热门文章

  1. atlas200dk踩坑
  2. c语言最新编程技巧200例,C语言最新编程技巧200例(修订本)
  3. FutureTask 概览
  4. 4个万能的扫描工具,各种文件3秒扫描成电子档
  5. 2019 ICCV best paper:sinGAN: Learning a Generative Model from a Single Natural Image解读
  6. nif 与 HiPE
  7. 2022学校体育教育及设施展览会
  8. UE4/UE5 C盘变大处理
  9. 北京站 Meetup 预告 | 这次我们聊聊 H5、WebAssembly 与 Flutter
  10. c语言计算圆的周长和面积用getchar,c语言求圆的周长和面积,已知圆的周长求面积...