四连通、八连通、m连通
转自:像素间的基本关系-连通性(邻接性)
连通性(邻接性)是描述区域和边界的重要概念。
两个像素连通的两个条件是:
1. 两个像素的位置是否相邻
2.两个像素的灰度值是否满足特定的相似性准则(同时满足某种条件,比如在某个集合内或者相等)
我们令V是用于定义连通性的灰度值集合。比如V={x|0<x<125} (x是指像素点的灰度值)。那么:
4连通
对于灰度值在V集合中的像素p和q,如果q在p的4邻域中(即N4(p)),那么称像素p和q是4连通的
4连通示意图
8连通
对于灰度值在V集合中的像素p和q,如果q在p的8邻域中(即N8(p)),那么称像素p和q是8连通的
8连通示意图
m连通(混合连通)
对于灰度值在V集合中的像素p和q,如果:
1. q在p的4邻域中,或者
2. q在p的D邻域中,并且p的4邻域与q的4邻域的交集是空的(即没有灰度值在V集合中的像素点)
那么称这两个像素是是m连通的,即4连通和D连通的混合连通。
m连通示意图
注:m连通(混合连通)是8连通的改进版,这个概念的提出就是为了消除8连通的二义性
转自:像素的邻接性、连通性与距离度量
在介绍像素间的基本关系之前,需要先介绍一个基本概念。
相邻像素:位于坐标(x, y)处的像素p有4个水平和垂直的相邻像素,这组像素成为p的4邻域,用N4(p)表示。
p的4个对角相邻像素用ND(p)表示。它们共同构成了p的8邻域,用N8(p)表示,即N4(p)+ND(p)=N8(p)。
邻接性:看图说话
定义V为邻接性的灰度值集合。在二值图像中,我们把具有1值得像素归诸于邻接像素,即V={1}。看图
4邻接:如果q在集合N4(p)中,则具有V中数值的两个像素p和q是4邻接的。同理,
8邻接:如果q在集合N8(p)中,则具有V中数值的两个像素p和q是8邻接的。
m邻接:如果q在N4(p)中,或者在ND(p)中,而且集合N4(p)与N4(p)的交集没有V中的像素,此为1,则具有V中数值的两个像素p和q是m邻接的。(此处,可直接将V理解为1,更容易理解)。
为什么m邻接少一条?
如果m邻接跟8邻接同样的连接方式看一下,此时是不满足m邻接的定义的。
从图中可以看出8邻接有多条通路,而m邻接只有一条通路,说明了m邻接的引入是为了消除8邻接的二义性。
上图8邻接右上点与右下点的通路为8通路,m邻接的通路为m通路。
连通性:令S为图像中的一个像素子集,s中的全部像素之间存在通路,则可以说两个像素p和q在S中是连通的。对于S中任何像素p,S中连通到该像素的像素集称为S的连通分量。如果S仅有一个连通分量,则集合S称为连通集。(更多解释见数字图像处理第三版P38)
距离度量D:
对于坐标分别为(x, y), (s, t), (v,w)的像素p,q, z
p和q的欧几里得距离:
De(p, q) = [(x - s)2 + (y - t)2]1/2
p和q间的距离D4:
D4(p, q) = |x - s| + |y - t|
这时候距(x, y)的距离D4小于等于某个值r的像素形成一个中心在(x,y)的菱形。距离小于等于2的像素如图
其中D4 = 1的像素就是(x, y)的4邻域
p和q间的距离D8距离:
D8(p, q) =max(|x - s|, |y - t|)
此时距(x, y)的距离D8小于等于某个值r的像素形成一个中心在(x,y)的菱形。距离小于等于2的像素如图
其中D8 = 1的像素就是(x, y)的8邻域。
如果选择m邻接,则两点之间的距离用最短通路定义。(数字图像处理第三版 p41)
四连通、八连通、m连通相关推荐
- 联通块 【题目描述】 一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0。问有多少个四连通的黑色格子连通块。四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每
联通块 [题目描述] 一个n * m的方格图,一些格子被涂成了黑色,在方格图中被标为1,白色格子标为0.问有多少个四连通的黑色格子连通块.四连通的黑色格子连通块指的是一片由黑色格子组成的区域,其中的每 ...
- python 连通区域_二值图像连通区域标记
原像素矩阵M为: 根据原像素矩阵M大小,初始化标记矩阵labelM: 算法流程 1. 首先要确定是标记8邻域连通还是4邻域连通,如果是8邻域连通,就用模板1,如果是4邻域连通,就用模板2.中间像 ...
- 极大连通子图与极小连通子图(带图讲解)
因为本人对于这一块知识存在疑惑,在学习了相关知识后将自己的理解分享给大家,如有错误,欢迎纠正. 首先我们先明确一下,极小连通子图与极大连通子图是在无向图中进行讨论的. 极大强连通子图是在有向图中进行讨 ...
- java 数据类型转换的一场_Java基础 — 四类八种基本数据类型
整型:整数类型int 一般的数据. long 极大的数据. short 用于特定的场合,比如底层的文件处理或者需要控制占用存储单元空间量的大数组. byte 用于特定的场合,比如底层的文件处理或者需要 ...
- OpenCV学习笔记(四十六)——FAST特征点检测features2D OpenCV学习笔记(四十七)——VideoWriter生成视频流highgui OpenCV学习笔记(四十八)——PCA算
OpenCV学习笔记(四十六)--FAST特征点检测features2D 特征点检测和匹配是计算机视觉中一个很有用的技术.在物体检测,视觉跟踪,三维常年关键等领域都有很广泛的应用.这一次先介绍特征点检 ...
- i5四核八线程怎么样_同样四核八线程,Ryzen 3 3100和3300X区别大了!
AMD在21号晚上发布了Ryzen 3 3100和Ryzen 3 3300X两款主流级处理器,正好对位英特尔即将在月底发布的Core i3-10100和Core i3-10300.除了频率差别之外,这 ...
- 造型奇葩!后置四边角八摄手机曝光:但被吐槽毫无作用
不得不说,这两年各大手机厂商在全面屏和摄像头和像素等方面下足了功夫,特别是后置摄像头,从最开始的单摄到如今的四摄五摄,未来真能凑成一副麻将的感觉,但问题是,要这么多摄像头有什么用?大多数都只是摆设,更 ...
- java四类八种基本数据类型
java基本数据类型就8种,除了这些都是引用型的了. 一.java四类八种基本数据类型 第一类:整型 byte short int long 第二类:浮点型 float double 第三类:逻辑型 ...
- 面试准备每日系列:计算机底层之并发编程(一)原子性、atomic、CAS、ABA、可见性、有序性、指令重排、volatile、内存屏障、缓存一致性、四核八线程
文章目录 1. 什么是进程?什么是线程? 2. 线程切换 3. 四核八线程是什么意思 3.1 单核CPU设定多线程是否有意义 4. 并发编程的原子性 4.1 如何解决原子性问题 & atomi ...
- 【零基础学Java】—自定义异常(四十八)
[零基础学Java]-自定义异常(四十八) 自定义异常类:java提供的异常类,不够我们使用,需要自己定义一个异常类 格式: public class XXXException extends Exc ...
最新文章
- springboot取yml中的值_SpringBoot 中从yml配置文件中读取常用的参数值
- 什么叫「真的理解」?我们对 AI 的要求或许有点过分
- MessageBox不能应用皮肤的解决办法
- 华为有造车实力,却坚决不造整车,这背后有着怎样的无奈与思考?
- FPGA视频加速的未来
- 【计算机网络复习】1.1.1 概念、组成、功能和分类
- 首期「线上开发」直播出炉!轻量算法+轻量开发:AI 小白也能上手实操的一款图像分类器...
- Java 内存管理、JVM 工作原理与 Java 运行时系统
- python︱模块加载(pip安装)以及pycharm安装与报错解决方式
- JavaMail简单版实验测试
- STC8H开发(十): SPI驱动Nokia5110 LCD(PCD8544)
- 解决chrome 停止搜索的解决办法之-- Steganos Internet Anonym 导致
- 用pandas和numpy分析药店的营业数据
- 一文带你了解什么是云计算网络运维工程师,以及2023年的就业前景
- 求求你别再写上千行的类了,试试 IDEA 这些牛逼的重构技巧吧
- echarts 词云图使用 + vue
- matlab 变分不等式,求解变分不等式的matlab程序
- #define用法【转】
- ActiveX控件的MFC实现(VS2017,OpenGL)
- iphone7运行linux,iPhone 7成新一代刷机神机!继安卓后,又成功运行Linux