图像分割介绍,先定位一个大的特征->内部特征->分割****
灰度直方图:如下图所示
阈 值 分 割:
** threshold** 全局固定阈值分割
算子:threshold(Image : Region : MinGray, MaxGray : )
示例:threshold (GrayImage, Regions, 141, 214)
GrayImage(输入对象):输入灰度图像
Regions(输出区域):输出挑选的区域
141(输入控制参数最小值):输入下限值
214(输入控制参数最大值):输入上限值
binary_threshold 自动全局阈值分割
算子:binary_threshold(Image : Region : Method, LightDark : UsedThreshold)
示例:binary_threshold (Image, Region1, 'max_separability', 'dark', UsedThreshold)
Image(输入对象):输入灰度图像
Region1(输出区域):输出分割后的区域
'max_separability'(输入控制参数分割方法):包含’max_separability’:最大限度的可分性, ‘smooth_histo’:直方图平滑
'dark'(输入控制参数颜色):表示暗
UsedThreshold(输出参数阈值 ):输出自动阈值或者设置的阈值的值
mean_image+dyn_threshold 局部动态阈值分割
算子:mean_image(Image:ImageMean:MaskWidth,MaskHeight:)
示例:mean_image (GrayImage, ImageMean, 13, 13)
GrayImage(输入对象):输入灰度图像
ImageMean(输出对象):输出均值滤波后图像
13(输入控制参数):输入宽数值
13(输入控制参数):输入高数值
算子:dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : )
示例:dyn_threshold (GrayImage, ImageMean, RegionDynThresh, 10, 'light')
GrayImage(输入对象):输入灰度图像
ImageMean(输对象):输入灰度图像
RegionDynThresh(输出对象):输出区域
10(输入控制参数):差值控制数值 数值越大筛选的区域越少
'light'(输入控制类型):灰暗
4.3区域集合运算及变换
****集合运算
****将多个区域连接为一个区域:union1
算子:union1(Region : RegionUnion : : )
示例:union1 (ConnectedRegions, RegionUnion)
ConnectedRegions(输入对象):输入多个区域
RegionUnion(输出对象):输出一个整体的区域
****将两个区域连接为一个区域:union2
算子:union2( Region1 , **Region2 **: **RegionUnion **: : )
示例:union2 (ObjectSelected1, ObjectSelected2, RegionUnion1)
ObjectSelected1(输入对象):输入第一个区域对象
ObjectSelected2(输入对象):输入第二个区域对象
RegionUnion1(输出对象):输出合并的区域对象
两个区域相减:difference
算子:difference(Region, Sub : RegionDifference : : )
示例:difference (RegionUnion, ObjectSelected1, RegionDifference)
RegionUnion(输入对象):输入大的区域对象
ObjectSelected1(输入对象):输入小的区域对象
RegionDifference(输出对象):输出大的区域减去小的区域对象的区域
两个区域的交集:intersection
算子:
intersection(Region1, Region2 : RegionIntersection : : )
示例:intersection (Rectangle, Rectangle1, RegionIntersection)
Rectangle(输入对象):输入第一个区域对象
Rectangle1(输入对象):输入第二个区域对象
RegionIntersection(输出对象):输出两个区域相交的区域对象
** ** 区域变换
****断开不相连的区域:connection
算子:connection(Region : ConnectedRegions : : )
示例:connection (Region1, ConnectedRegions)
Region1(输入对象):输入一个连成一块的对象
ConnectedRegions(输出对象):输出断开不相连的各个区域
****区域填充:fill_up
算子:fill_up(Region : RegionFillUp : : )
示例:fill_up (Region, RegionFillUp)
Region(输入对象):输入需要填充的对象
RegionFillUp(输出对象):输出填充好的区域对象
抠图:reduce_domain
****算子:reduce_domain(Image, Region : ImageReduced : : )
示例:reduce_domain (GrayImage, RegionFillUp, ImageReduced)
GrayImage(输入对象):输入灰度图对象
RegionFillUp(输入对象):输入二值化区域
ImageReduced(输出对象):输出灰度图图像
区域变换为矩形或者是圆 内接或者是外接 参数控制shape_tran
算子:shape_trans(Region : RegionTrans : Type : )
示例:shape_trans (ObjectSelected1, RegionTrans, 'rectangle1')
ObjectSelected1(输入对象):输入一个区域对象
RegionTrans(输出对象):输出变换后的区域对象
'rectangle1'(输入控制参数):输入需要变换成什么类型 内接外接矩形 内接外接圆等等
求取区域骨架:skeleton
算子:skeleton(Region : Skeleton : : )
示例:skeleton (RegionTrans, Skeleton)
RegionTrans(输入对象):输入一个区域对象
Skeleton(输出对象):输出这个区域的骨架 骨架是由单个像素连接起来的
对多个区域进行排序:sort_region
算子:sort_region(Regions : SortedRegions : SortMode, Order, RowOrCol : )
示例:sort_region (SelectedRegions, SortedRegions, 'first_point', 'true', 'column')
SelectedRegions(输入对象):输入多个区域
SortedRegions(输出对象):输出排序后的多个区域
'first_point'(输入控制参数类型):排序模式
'true'(输入控制参数顺序):是否是按顺序
'column'(输入控制参数方向):low是从上到下 column是从左到右排序 方向选择
对多个队形进行数数:count_obj
算子:count_obj(Objects : : : Number)
示例:count_obj (SortedRegions, Number)
SortedRegions(输入对象):输入多个区域对象
Number(输出控制参数):输出区域的个数
4.4形态学处理初级。(fin.hdev,dyn_threshold.hdev,hull.hdev,rim.hdev)
开运算opening 以输入的参数形成的区域为基准,对目标区域进行模拟放置,能将参数形成的区域填满的保留,填不满开掉去除 先腐蚀后膨胀 作用 祛杂点
扩展链接:blog.csdn.net/qq_31671139…
算子:opening_rectangle1(Region : RegionOpening : Width, Height:)
示例:opening_rectangle1 (ObjectSelected1, RegionOpening, 33, 33)
ObjectSelected1(输入对象):输入区域对象
RegionOpening(输出对象):输出开运算后的区域对象
33(输入控制参数1):形成区域矩形的宽
33(输入控制参数2):形成区域矩形的高
闭运算closing 以输入的参数形成的区域为基准,对目标区域进行模拟放置,能将参数形成的区域填不满的保留,能填满去除 先膨胀后腐蚀 作用 保留目标区域
算子:closing_rectangle1(Region : RegionClosing :Width,Height:)
示例:closing_rectangle1 (ObjectSelected1, RegionClosing, 33, 33)
ObjectSelected1(输入对象):输入区域对象
RegionClosing(输出对象):输出闭运算后的区域对象
33(输入控制参数1):形成区域矩形的宽
33(输入控制参数2):形成区域矩形的高
****膨胀dilation 对区域进行向外放大
算子:dilation_rectangle1(Region :RegionDilation :Width, Height:)
示例:dilation_rectangle1 (ObjectSelected1, RegionDilation, 33, 33)
ObjectSelected1(输入对象):输入区域对象
RegionDilation(输出对象):输出膨胀后的区域对象
33(输入控制参数1):输入膨胀区域的宽
33(输入控制参数2):输入膨胀区域的高
腐蚀erosion 对区域进行向内缩小****
算子:erosion_rectangle1(Region:RegionErosion : Width, Height : )
示例:erosion_rectangle1 (ObjectSelected1, RegionErosion, 33, 33)
ObjectSelected1(输入对象):输入区域对象
RegionErosion(输出对象):输出腐蚀后的区域对象
33(输入控制参数1):输入腐蚀区域的宽
33(输入控制参数2):输入腐蚀区域的高
边缘提取boundary 适用于边界 灰度值差异大的图像
算子:boundary(Region : RegionBorder : BoundaryType : )
示例:boundary (SortedRegions, RegionBorder, 'inner')
SortedRegions(输入对象):输入区域对象
RegionBorder(输出对象):输出边缘区域
'inner'(输入控制参数):输入提取类型 向内还是向外
4.5特征提取
测量区域中心点area_center
算子:area_center(Regions : : : Area, Row, Column)
示例:area_center (ObjectSelected1, Area, Row, Column)
ObjectSelected1(输入对象):输入需要测量的区域
Area(输出参数1):输出面积
Row(输出参数2):输出中心点的行坐标
Column(输出参数3):输出中心点的列坐标
筛选目标区域select_shape
算子:select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )
示例:select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 201841, 990793)
ConnectedRegions(输入对象):输入多个区域对象
SelectedRegions(输出对象):输出筛选后的目标区域
'area'(输入模式类型):按面积筛选
'and'(输入条件):条件与
201841(输入控制参数下限值):筛选面积的最小值
990793(输入控制参数上线值):筛选面积的最大值
****测量目标区域的半径或是矩形的对角坐标inner_
算子:inner_circle(Regions : : : Row, Column, Radius)
示例:inner_circle (ObjectSelected1, Row1, Column1, Radius)
ObjectSelected1(输入对象):输入需要测量的区域对象
Row1(输出参数1):输出区域中心的行坐标
Column1(输出参数2):输出区域中心的列坐标
Radius(输出参数3):输出区域半径
****测量矩形的长宽smallest_,
算子:smallest_rectangle1(Regions : : : Row1, Column1, Row2, Column2)
示例:smallest_rectangle1 (ObjectSelected1, Row12, Column12, Row21, Column21)
ObjectSelected1(输入对象):输入一个区域对象
Row12(输出参数1):输出区域左上角的点行坐标
Column12(输出参数2):输出区域左上角的点列坐标
Row21(输出参数3):输出区域右下角的点行坐标
Column21(输出参数4):输出区域右下角的点列坐标
测量矩形的角度orientation_ region
算子:orientation_region(Regions : : : Phi)
示例:orientation_region (ObjectSelected1, Phi)
ObjectSelected1(输入对象):输入一个区域对象
Phi(输入对象):输出该区域相比于水平线的角度