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 ...
随机推荐
- BZOJ2121: 字符串游戏(DP)(字符串删单词,求最多可以删去多少)
2121: 字符串游戏 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 672 Solved: 376[Submit][Status][Discuss ...
- web程序2
.
- 对Linux内核中进程上下文和中断上下文的理解
内核空间和用户空间是操作系统理论的基础之一,即内核功能模块运行在内核空间,而应用程序运行在用户空间.现代的CPU都具有不同的操作模式,代表不同的 级别,不同的级别具有不同的功能,在较低的级别中将禁止某 ...
- Android分类导航
新的一年,将在2017下半年所写的博文作了个总结,也是方便自己以后查阅,整理完也是发现在这半年而是学到了许多,新的一年,继续努力! 我的第一个Android开源库——CirclePointMove中文 ...
- 说说 PADS Layout 中的第 20 层和 第 25层
说说 PADS Layout 中的第 20 层和 第 25层 PADA Layout 有一个不成文的说明,第 20 层和第 25 层各有各的用途. 第 20 层是 Placement Outline ...
- hadoop之 hadoop 机架感知
1.背景 Hadoop在设计时考虑到数据的安全与高效,数据文件默认在HDFS上存放三份,存储策略为本地一份,同机架内其它某一节点上一份,不同机架的某一节点上一份.这样如果本地数据损坏,节点可以从同一机 ...
- docker基于commit命令创建支持ssh服务的镜像
以centos为基础,目的使用ssh服务远程连接docker容器. 环境:宿主机centos7(宿主机ip地址为192.168.164.130),直接搜索docker的centos镜像,下载最新版本. ...
- coding github 配置ssl 免密拉取代码
详细介绍: https://www.cnblogs.com/superGG1990/p/6844952.html 注:其中检验过程与下述不同,可以先在对应git库使用 git pull 一次,选择信任 ...
- Linux学习系列之Nginx调优实战
Nginx配置文件性能微调 全局的配置 user www-data; pid /var/run/nginx.pid; worker_processes auto; worker_rlimit_nofi ...
- [转]Docker 为什么这么火
本文来自:Docker为什么这么火 以及此文:http://cloud.51cto.com/art/201408/447966_1.htm Docker 我的理解是,相对于 VMware 的一个分支. ...