Region在connection前后进行“交并差”等操作的异同
connection直译为“连接”。其实它的功能不是连接,它的功能是确定区域之间的连接关系,如果简单粗暴地解释的话,可以认为:connection的意思是“打散”,将不连接的区域打散成一个一个的区域。
一、difference操作
1、用connection之后的region集合减去单一region
以下为待处理的图:

read_image (Right, '未标题-1.jpg')
threshold (Right, One_Circle, , )
opening_circle (One_Circle, One_Circle, 3.5) threshold (Right, Four_Reg, , )
opening_circle (Four_Reg, Four_Reg, 3.5) dilation_circle (One_Circle, One_CircleDilation, 29.5)
*ConnectedRegions有几个值,xxx里就有几个值,这里是4个
connection (Four_Reg, ConnectedRegions)
difference (ConnectedRegions, One_CircleDilation, xxx)
area_center (xxx, Area, Row, Column) *这里yyy只有3个值
difference (Four_Reg, One_CircleDilation, RegionDifference1)
connection (RegionDifference1, yyy)
area_center (yyy, Area1, Row1, Column1)
相关region的形状如下:

结果是:
Area := [1307, 4448, 4534, ]
Area1 := [1307, 4448, 4534]
明明区域xxx和yyy看起来一模一样,但是xxx中有4个量,yyy中只有3个(通过Area/Area1元组可明确看出这一点)。
2、用connection之后的region集合减去多个region
用下面左面的4个region集合difference右边的2个region的集合:

效果如下,但是结果region集合里还是有4个量。

再举一个类似的例子:
用下面左面的4个region集合difference右边的2个region的集合:

结果region集合里还是有4个量。

但是对结果再执行一次connection算子之后,变成了6个量。
请注意,对于本文第一个例子中,如果对xxx执行connection算子的话,还是有4个量,那个面积为0的region并没有消失。但是如果再执行union1,然后再执行connection的话,就只有3个量了!
3、用单个region减去其他region在connection之后的region集合
read_image (Right, '未标题-1.jpg')
threshold (Right, One_Circle, , )
opening_circle (One_Circle, One_Circle, 3.5) threshold (Right, Four_Reg, , )
opening_circle (Four_Reg, Four_Reg, 3.5)
gen_rectangle1 (ROI_0, , 190.5, , 242.5)
union2 (ROI_0, Four_Reg, RegionUnion) connection (RegionUnion, RegionUnion) dilation_circle (One_Circle, One_Circle_Dilation, 29.5) difference (One_Circle_Dilation, RegionUnion, Region_Result)
connection (Region_Result, Region_Result_Connected)
用下面左面的单个region减去右边的5个region的集合:


结果是一个region,如果再执行connection的话,则会变成2个。

总结:
difference(Region, Sub : RegionDifference : : )
1、如上,对于difference算子来说,它的效果形状约等效于签名中的Region区域union1之后减去Sub区域union1之后的结果。简记为:union1(Region) - union1(Sub). (注意,仅仅是效果形状)
2、签名中,差集结果RegionDifference 中元素的个数和Region一致,其中可能有些region的面积为0,或者有单个region被分隔开没有连在一起。
二、intersection 操作

上面左图是RegionUnion,右图是One_Circle_Dilation:
read_image (Right, '未标题-1.jpg')
threshold (Right, One_Circle, , )
opening_circle (One_Circle, One_Circle, 3.5) threshold (Right, Four_Reg, , )
opening_circle (Four_Reg, Four_Reg, 3.5)
gen_rectangle1 (ROI_0, , 190.5, , 242.5)
union2 (ROI_0, Four_Reg, RegionUnion) connection (RegionUnion, RegionUnion) dilation_circle (One_Circle, One_Circle_Dilation, 29.5)
intersection (One_Circle_Dilation, RegionUnion, RegionIntersection)
intersection (RegionUnion, One_Circle_Dilation, RegionIntersection1)
area_center (RegionIntersection1, Area, Row, Column)
union1 (RegionIntersection1, RegionUnion1)
connection (RegionUnion1, ConnectedRegions)
RegionIntersection 和 RegionIntersection1的形状都是一样的,注意仅是形状。

但是RegionIntersection 中只有1个对象,而RegionIntersection1中有5个对象,其中还有一个面积为0的对象。
可以看出,intersection 和difference的规律极为类似。
二、union2 操作
union2(Region1, Region2 : RegionUnion : : )
为节省篇幅,直接说结论:
1、签名中,RegionUnion中对象的个数和Region1一致,如果Region1含多个对象并且Region2只有一个对象,则Region1中每一个对象都和Region2 合并。
2、如果Region1只有1个对象,Region2有多个对象,相当于先将Region2合并,然后再和Region1合并,结果RegionUnion 中只有一个对象。
3、如果Region1有2个对象,Region2有多个对象,相当于先将Region2合并,然后再和Region1的每个对象逐个合并,结果RegionUnion 中有2个对象。
Region在connection前后进行“交并差”等操作的异同的更多相关文章
- C# List 集合 交集、并集、差集、去重, 对象集合、 对象、引用类型、交并差补、List<T>
关键词:C# List 集合 交集.并集.差集.去重, 对象集合. 对象.引用类型.交并差.List<T> 有时候看官网文档是最高效的学习方式! 一.简单集合 Intersect 交集, ...
- PPT导出图片质量太差?简单操作直接导出印刷质地图片
PPT导出图片质量太差?简单操作直接导出印刷质地图片 PPT不仅可以用于展示文档,还可以用于简单图片合成处理,同时,PPT文档还可以全部导出为图片. 默认情况下,PPT导出的图片为96DPI ...
- 用SQL表达交并差操作
交-并-差的处理 SQL语言:并运算UNION,交运算INTERSECT,差运算EXCEPT 基本语法形式: 子查询{UNION [ALL] | INTERSECT [ALL] | EXPECT [A ...
- MySQL中的交并差
Mysql只提供了并集(union),没有提供差集,和交集,但是我们可以用union来实现交和差,下面即是实现方式: 首先创建两个表: ERROR 1064 (42000): mysql> cr ...
- shell 计算文件交并差
交集 $ sort a b | uniq -d 并集 $ sort a b | uniq 差集a-b $ sort a b b | uniq -u 文件乱序 cat tmp.txt | awk 'BE ...
- oracle 的交并差函数,intersect;union;minus。
创建表并添加数据: --创建TABLE_A create table TABLE_A ( A ), B ) ); --给TABLE_A添加数据 insert into TABLE_A values(' ...
- c#数据处理总结(分组、交并差与递归)
前言:最近项目比较忙,完全没有时间写下总结笔记,今天抽出时间来写下笔记,供写后台的你来做数据处理后台代码编写的参考. 一.分组 var GroupForList = numberList.GroupB ...
- 基于C#的MongoDB数据库开发应用(4)--Redis的安装及使用
在前面介绍了三篇关于MongoDB数据库的开发使用文章,严格来讲这个不能归类于MongoDB数据库开发,不过Redis又有着和MongoDB数据库非常密切的关系,它们两者很接近,Redis主要是内存中 ...
- [转载] Redis 起步
转载地址:http://www.cnblogs.com/shanyou/archive/2012/01/28/2330451.html Rdis和JQuery一样是纯粹为应用而产生的,这里记录的是在C ...
随机推荐
- 新转移注意(caffe):ImportError: libcudart.so.7.0: cannot open shared object file: No such file or directory
https://github.com/NVIDIA/DIGITS/issues/8 For this error ImportError: libcudart.so.7.0: cannot open ...
- ImportError: No module named 'serial'
/******************************************************************************** * ImportError: No ...
- form表单传递对象数组
ajax传递数组.form表单提交对象数组 在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用 form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致 ...
- cocos2dx ui显示机制
实验1 1,a.addChild(b); a的宽高没变,还是自己的宽高. 层级添加 不会改变原层大小. 2.node.addChild(sprite);node的宽和高也没变 感觉2dx的显示不是树 ...
- linux下nginx安装、配置实战
1什么是Nginx Nginx("enginex")是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器,在高连接并发的情况下Nginx是Apac ...
- LDAP基本概念
LDAP(Lightweight Directory Access Protocol)是一种基于计算模型的客户机/服务器X.500目录服务访问协议.LDAP是从X.500目录访问协议的基础上发展过来的 ...
- 设置JAVA HOME环境变量的秕处理
echo "放在JDK目录下,win xp需要下载SETX.EXE" setx /m Java_Home "%cd%" setx /m ClassPath &q ...
- VHF、UHF的频率范围
1.VHF意思是甚高频,2.UHF意思是超高频,即ultra-high freqency ,电视搜台显示的是当前频率段名,最高不超过470M,因为带增补的高频头标准就是470M3.这是对讲机专业机的工 ...
- c++中头文件与实现文件的关系
转自:http://xiangyanglai.blog.163.com/blog/static/2047252022012715103338279/ 关于两者以前的关系,要从N年以前说起了~ long ...
- websocket之四:WebSocket 的鉴权授权方案
引子 WebSocket 是个好东西,为我们提供了便捷且实时的通讯能力.然而,对于 WebSocket 客户端的鉴权,协议的 RFC 是这么说的: This protocol doesn’t pres ...