17、对ROI进行操作

一、并集    1

1union2(Region1, Region2 : RegionUnion : : )    对象是region    1

2union1(Region : RegionUnion : : ) 对象是region    2

3union2_closed_contours_xld(Contours1, Contours2 : ContoursUnion : : ) 对象是xld contours    3

4union2_closed_polygons_xld(Polygons1, Polygons2 : PolygonsUnion : : ) 对象是xld polygons    5

5union_adjacent_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : ) ----??????    6

6concat_obj(Objects1, Objects2 : ObjectsConcat : : ) 对象既可以使region也可以是xld polygonsxld contours    6

7union_cocircular_contours_xld(Contours : UnionContours : MaxArcAngleDiff, MaxArcOverlap, MaxTangentAngle,    7

8union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode : )    8

二、交集    8

1intersection(Region1, Region2 : RegionIntersection : : ) 对象是region    8

2intersection_closed_contours_xld(Contours1, Contours2 : ContoursIntersection : : ) 对像是xld    9

3intersection_closed_polygons_xld(Polygons1, Polygons2 : PolygonsIntersection : : ) 对象是xld polygons    10

三、差集    11

1difference(Region, Sub : RegionDifference : : )    对象为region    11

2、difference_closed_contours_xld(Contours, Sub : ContoursDifference : : ) 对象为xld contours    12

3difference_closed_polygons_xld(Polygons, Sub : PolygonsDifference : : ) 对象为xld polygons    13

四、对称差(异或)    14

1symm_difference(Region1, Region2 : RegionDifference : : ) 对象为region    14

2symm_difference_closed_contours_xld(Contours1, Contours2 : ContoursDifference : : ) 对象为xld contours    15

3symm_difference_closed_polygons_xld(Polygons1, Polygons2 : PolygonsDifference : : ) 对象为xld polygons    16

五、补集    17

1complement(Region : RegionComplement : : )    17

 

一、并集

 

 

 

 

 

 

1、union2(Region1, Region2 : RegionUnion : : )    对象是region

    功能:计算两个区域的并集

    read_image(Image,'lena')

draw_circle (3600, Row, Column, Radius)

gen_circle (Circle, Row, Column, Radius)

 

draw_rectangle1 (3600, Row1, Column1, Row2, Column2)

gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)

 

union2(Circle,Rectangle,eee)

2、union1(Region : RegionUnion : : ) 对象是region

    功能:把一个区域(这个区域中有很多小的区域,如connection()算子操作后的region),重新联合成一个整体。

        是connection()算子的反操作。

        read_image(Image,'lena')

*绘制圆并创建圆ROI

draw_circle (3600, Row, Column, Radius)

gen_circle (Circle, Row, Column, Radius)

*绘制矩形并创建矩形ROI

draw_rectangle1 (3600, Row1, Column1, Row2, Column2)

gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)

*把圆ROI和矩形ROI合并

union2(Circle,Rectangle,eee)

*进行连通域操作

connection(eee,out)

*在把合并,是连通域操作的反操作

union1(out,out1)

    注意:connection()操作后的out区域是把每个独立分开(out此时其实是一个数组)可以通过修改显示颜色数

        来显示不同颜色,而eeeout1是一个整体,无论它的颜色数量是多少都只能显示一种颜色。

3、union2_closed_contours_xld(Contours1, Contours2 : ContoursUnion : : ) 对象是xld contours

    功能:计算封闭轮廓的并集,如果输入的轮廓不是闭合的,算子会自动连接轮廓的首尾,把轮廓并集在进行运算

    

情形1:轮廓1不闭合,轮廓1与轮廓2相交

            结果:封闭轮廓1,再取两个轮廓的并集

    read_image(Image,'lena')

*/创建弧度轮廓1xld

gen_circle_contour_xld (ContCircle, 200, 200, 100, 0, 4, 'positive', 1)

*创建矩形region并白该region转换为xld类型

gen_rectangle1 (Rectangle, 40, 40, 200, 200)

gen_contour_region_xld (Rectangle, Contours, 'border')

*联合则这两个xld

union2_closed_contours_xld (ContCircle, Contours, ContoursUnion)

    情形2:轮廓1不闭合,轮廓2与轮廓1没有交集

            结果:合并为一个xld

        read_image(Image,'lena')

*/创建弧度轮廓1xld

gen_circle_contour_xld (ContCircle, 200, 200, 100, 0, 4, 'positive', 1)

*创建弧度轮廓2

gen_circle_contour_xld (ContCircle1, 100, 400, 100, 0, 2, 'positive', 1)

*联合

union2_closed_contours_xld (ContCircle, ContCircle1, ContoursUnion)

    注:最终联合起来的轮廓是用不同颜色来表示的,则说明它们一分开联通(像是用connection算子操作过的效果)

4、union2_closed_polygons_xld(Polygons1, Polygons2 : PolygonsUnion : : ) 对象是xld polygons

    功能:计算封闭多边形轮廓的并集

    draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

gen_contour_region_xld (Rectangle, xld1, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld1, Polygons1, 'ramer', 2)//xld contour转换为xld polygon

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

gen_contour_region_xld (Circle, xld2, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld2, Polygons2, 'ramer', 2)//xld contour转换为xld polygon

 

union2_closed_polygons_xld (Polygons1, Polygons2, PolygonsIntersection)

5、union_adjacent_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, Mode : ) ----??????

    功能:计算多个轮廓构成的并集。每个轮廓的端点分别与相邻最近的端点线连接。

    备注:暂未搞明白

6、concat_obj(Objects1, Objects2 : ObjectsConcat : : ) 对象既可以使region也可以是xld polygonsxld contours

    功能:把两个的对象合并(xldregion

    例子1:region

    draw_region(re1,3600)

draw_region(re2,3600)

*合并region

concat_obj (re1, re2, ObjectsConcat)

    例子2:合并xld

gen_circle_contour_xld (ContCircle1, 200, 200, 100, 0, 1, 'positive', 1)

 

gen_circle_contour_xld (ContCircle, 200, 200, 100, 2, 3, 'positive', 1)

*合并两个xld

concat_obj (ContCircle1, ContCircle, ObjectsConcat)

7、union_cocircular_contours_xld(Contours : UnionContours : MaxArcAngleDiff, MaxArcOverlap, MaxTangentAngle,

                MaxDist, MaxRadiusDiff, MaxCenterDist, MergeSmallContours, Iterations : ) 对象是xld contours

    功能:用直线连接同一个圆的轮廓

    Contours:输入被合并的轮廓

    UnionContours:输出合并后的轮廓

MaxArcAngleDiff:公园的第一圆弧的终点与第二圆弧的起点的最大角度

MaxArcOverlap:两个圆弧的最大重叠角度

MaxTangentAngle:养护的切线和连接线的最大角度

MaxTangentAngle:第一个圆弧终点与第二个圆弧起点之间的最大绝对距离

MaxRadiusDiff:两个圆弧你和的圆的半径的最大绝对误差

MaxCenterDist两个圆弧你和的圆的中心距离

MergeSmallContours:确定没有用来你和圆的小轮廓时候用来合并

Iterations:迭代次数

    例子:

gen_circle_contour_xld (ContCircle1, 200, 200, 100, 0, 1, 'positive', 1)

gen_circle_contour_xld (ContCircle, 200, 200, 100, 2, 3, 'positive', 1)

*连接,因为下面的同圆轮廓合并中要求输入的是一个轮廓数组

concat_obj (ContCircle1, ContCircle, ObjectsConcat)

 

union_cocircular_contours_xld (ObjectsConcat, UnionContours, 2, 1, 1, 100, 50, 30, 'false', 1)

8、union_collinear_contours_xld(Contours : UnionContours : MaxDistAbs, MaxDistRel, MaxShift, MaxAngle, Mode : )

    功能:合并共线的轮廓

二、交集

1、intersection(Region1, Region2 : RegionIntersection : : ) 对象是region

    功能:计算两个区域的交集

draw_circle (3600, y, x, R)

gen_circle (Circle, y, x, R)

 

draw_rectangle1 (3600, y1, x1, y2, x2)

gen_rectangle1 (Rectangle, y1, x1, y2, x2)

 

intersection (Circle, Rectangle, RegionIntersection)

2、intersection_closed_contours_xld(Contours1, Contours2 : ContoursIntersection : : ) 对像是xld

    功能:合并闭合区域的轮廓交集

draw_circle (3600, y, x, R)

gen_circle (Circle, y, x, R)

gen_contour_region_xld (Circle, xld1, 'border')//region转换为xld

 

draw_rectangle1 (3600, y1, x1, y2, x2)

gen_rectangle1 (Rectangle, y1, x1, y2, x2)

gen_contour_region_xld (Rectangle, xld2, 'border')//region转换为xld

 

intersection_closed_contours_xld (xld1, xld2, ContoursIntersection)

3、intersection_closed_polygons_xld(Polygons1, Polygons2 : PolygonsIntersection : : ) 对象是xld polygons

    功能:计算闭合多边形轮廓的交集

    draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

gen_contour_region_xld (Rectangle, xld1, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld1, Polygons1, 'ramer', 2)//xld contour转换为xld polygon

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

gen_contour_region_xld (Circle, xld2, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld2, Polygons2, 'ramer', 2)//xld contour转换为xld polygon

 

intersection_closed_polygons_xld (Polygons1, Polygons2, PolygonsIntersection)

 

三、差集

1、difference(Region, Sub : RegionDifference : : )    对象为region

    功能:计算两个区域的差集即Region - Sub

draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

 

difference (Rectangle, Circle, RegionDifference)

2difference_closed_contours_xld(Contours, Sub : ContoursDifference : : ) 对象为xld contours

    功能:计算闭合轮廓的差集

    draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

gen_contour_region_xld (Rectangle, xld1, 'border')//region转化为xld contour

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

gen_contour_region_xld (Circle, xld2, 'border')//region转化为xld contour

 

difference_closed_contours_xld (xld1, xld2, ContoursDifference)

 

3、difference_closed_polygons_xld(Polygons, Sub : PolygonsDifference : : ) 对象为xld polygons

    功能:计算闭合多边形轮廓的差集

    draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

gen_contour_region_xld (Rectangle, xld1, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld1, Polygons1, 'ramer', 2)//xld contour转换为xld polygon

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

gen_contour_region_xld (Circle, xld2, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld2, Polygons2, 'ramer', 2)//xld contour转换为xld polygon

 

difference_closed_polygons_xld (Polygons1, Polygons2, PolygonsDifference)

四、对称差(异或)

1、symm_difference(Region1, Region2 : RegionDifference : : ) 对象为region

功能:计算算两个区域的对称差(异或,取不相交部分)

draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

 

symm_difference (Rectangle, Circle, RegionDifference)

2、symm_difference_closed_contours_xld(Contours1, Contours2 : ContoursDifference : : ) 对象为xld contours

    功能:计算两个闭合轮廓的对称差(xld contuors不像region,region表示一块区域,而xld contuors只表示边界轮

            廓线)

    draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

gen_contour_region_xld (Rectangle, xld1, 'border')//region转化为xld contour

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

gen_contour_region_xld (Circle, xld2, 'border')//region转化为xld contour

 

symm_difference_closed_contours_xld (xld1, xld2, ContoursDifference)

    分析:由于xld contuors只表示边界轮廓线,所以xld1和xld2轮廓线相交时只有两个点重叠,说以进行对称差(异

        或)后就会去除这两个点,把整个xld分为两段(红色和蓝色)

3、symm_difference_closed_polygons_xld(Polygons1, Polygons2 : PolygonsDifference : : ) 对象为xld polygons

    功能:计算两个闭合多边形的对称差

draw_rectangle1 (3600, y2, x2, y3, x3)

gen_rectangle1 (Rectangle, y2, x2, y3, x3)

gen_contour_region_xld (Rectangle, xld1, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld1, Polygons1, 'ramer', 2)//xld contour转换为xld polygon

 

draw_circle (3600, y1, x1, R1)

gen_circle (Circle, y1, x1, R1)

gen_contour_region_xld (Circle, xld2, 'border')//region转化为xld contour

* gen_polygons_xld()用多边形逼近XLD轮廓

gen_polygons_xld (xld2, Polygons2, 'ramer', 10)

 

symm_difference_closed_polygons_xld (Polygons2, Polygons1, PolygonsDifference)

五、补集

1complement(Region : RegionComplement : : )

功能:计算区域的补集

draw_region (Region, 3600)

 

complement (Region, RegionComplement)

 

    

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2022-05-08 23:05  ihh2021  阅读(265)  评论(0编辑  收藏  举报