4 图像区域有关操作

4 图像区域有关操作

4.1 全局阈值分割介绍

4.1.1 知识点

在这里插入图片描述
备注(Ctrl+鼠标查看灰度值,使用灰度直方图查看阈值)(连通域操作可以使得区域保持独立)

4.1.2 程序代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
*阈值算子
threshold (GrayImage, Regions, 247, 255)
*阈值算子,多了一个面积影响因子为20
fast_threshold (GrayImage, Region, 247, 255, 60)
*连通域算子
connection (Region, ConnectedRegions)

4.2.1动态阈值分割介绍知识点在这里插入图片描述

4.2.2 程序代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
*均值滤波和动态阈值分割相结合
mean_image (GrayImage, ImageMean, 60, 60)
dyn_threshold (GrayImage, ImageMean, RegionDynThresh, 105, 'light')
*动态阈值分割一步到位
local_threshold (GrayImage, Region, 'adapted_std_deviation', 'light', [], [])

4.3其他阈值分割

4.3.1 知识点

在这里插入图片描述

4.3.2 程序代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
*自动阈值分割
auto_threshold (GrayImage, Regions, 25)
*二值化阈值分割
binary_threshold (GrayImage, Region, 'max_separability', 'light', UsedThreshold)
*分水岭阈值分割
watersheds_threshold (GrayImage, Basins, 5)

4.4 形态学介绍

4.4.1 形态学膨胀介绍知识点

在这里插入图片描述

4.5.2 程序代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
*阈值分割
threshold (GrayImage, Region, 128, 255)
*圆形膨胀(使用在文字填补上)
dilation_circle (Region, RegionDilation, 3.5)
*矩形膨胀(长度方向膨胀)
dilation_rectangle1 (RegionDilation, RegionDilation1, 1, 11)
*宽度方向膨胀
dilation_rectangle1 (RegionDilation, RegionDilation1, 11, 1)

4.6 形态学腐蚀介绍

4.6.1 知识点

在这里插入图片描述

4.6.2 程序代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
*阈值分割
threshold (GrayImage, Region, 128, 255)
*圆形腐蚀
erosion_circle (Region, RegionErosion, 3.5)
*矩形腐蚀
erosion_rectangle1 (RegionErosion, RegionErosion1, 11, 11)
*灰度腐蚀,会变暗
gray_erosion_rect (GrayImage, ImageMin, 11, 11)
*灰度膨胀,会变亮
gray_dilation_rect (GrayImage, ImageMax, 11, 11)
*腐蚀和膨胀的最好用法:边缘检测
dilation_circle (Region, RegionDilation, 1.5)
erosion_circle (Region, RegionErosion2, 1.5)
difference (RegionDilation, RegionErosion2, RegionDifference)

4.7 形态学开闭运算

4.7.1 形态学知识点

在这里插入图片描述

4.7.2 程序代码
dev_open_file_dialog ('read_image', 'default', 'default', Selection)
read_image (Image, Selection)
rgb1_to_gray (Image, GrayImage)
*阈值分割
threshold (GrayImage, Region, 128, 255)
*开运算(圆形和矩形)
* opening_circle (Region, RegionOpening, 3.5)
* opening_rectangle1 (Region, RegionOpening1, 10, 10)
*闭运算(圆形和矩形)
closing_circle (Region, RegionClosing, 3.5)
*连通域
connection (RegionClosing, ConnectedRegions)
* closing_rectangle1 (Region, RegionClosing1, 10, 10)
*灰度图像开运算
* gray_opening_rect (GrayImage, ImageOpening, 11, 11)
* gray_closing_rect (ImageOpening, ImageClosing, 11, 11)
*求交集
draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2)
gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2)
intersection (Rectangle, Region, RegionIntersection)

4.8 区域操作

4.8.1 知识点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.8.2 程序代码
*画矩形
gen_rectangle1 (Rectangle, 120, 200, 160, 390)
*画矩形1
gen_rectangle1 (Rectangle1, 120+20, 200+20, 160-10, 390-10)
*矩形做差
difference (Rectangle, Rectangle1, RegionDifference)
*矩形合并
union2 (RegionDifference, Rectangle1, RegionUnion)
*矩形组成集合
concat_obj (Rectangle, Rectangle1, ObjectsConcat)
*选择几何单元
select_obj (ObjectsConcat, ObjectSelected, 2)
*填充几何
fill_up (RegionDifference, RegionFillUp)
*根据面积大小填充几何
fill_up_shape (RegionDifference, RegionFillUp1, 'area', 1, 9999)
*骨架算子
skeleton (RegionFillUp1, Skeleton)
*(几何合并union1)

4.9 区域的特征分析

4.9.1 知识点

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.9.2 程序代码
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*画原型区域
draw_region (Region, WindowHandle)
*用来显示区域的涂鸦还是只有轮廓
dev_set_draw ('margin')
*最小外接圆
smallest_rectangle2 (Region, Row, Column, Phi, Length1, Length2)
*绘制最小外接圆
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*最小外接圆1
smallest_rectangle1 (Region, Row1, Column1, Row2, Column2)
*绘制外接圆1
gen_rectangle1 (Rectangle1, Row1, Column1, Row2, Column2)
*绘制区域的凸性圆
shape_trans (Region, RegionTrans, 'convex')
*求区域的凸性大小
convexity (RegionTrans, Convexity)
*求区域的圆度大小
circularity (RegionTrans, Circularity)
*绘制圆形区域
gen_circle (Circle, Row, Column, 10.5)
*求圆的圆度
circularity (Circle, Circularity1)
*求区域最小外接圆
smallest_circle (Region, Row3, Column3, Radius)
*绘制最小外接圆
gen_circle (Circle1, Row3, Column3, Radius)
*求特征参数(面积等)
region_features (Circle1, 'area', Value)
*组合集合
concat_obj (Region, Circle1, ObjectsConcat)
*求集合的数量
count_obj (ObjectsConcat, Number)
*筛选区域
select_shape (ObjectsConcat, SelectedRegions, 'area', 'and', 85222, 99999)

4.10 字符提取并计算字符面积

4.10.1 知识点

在这里插入图片描述

4.10.2 程序代码
read_image (Image, 'E:/halcon/素材.jpg')
rgb1_to_gray (Image, GrayImage)

threshold (GrayImage, Region, 150, 255)
*区域开运算
*opening_circle (Region, RegionOpening, 3.5)
*连通域操作,可以划分区域
connection (Region, ConnectedRegions)
*根据面积最大选择
select_shape_std (ConnectedRegions, SelectedRegions, 'max_area', 70)
*填充(必须的)
fill_up (SelectedRegions, RegionFillUp)
*裁剪
reduce_domain (GrayImage, RegionFillUp, ImageReduced)
*快速阈值分割
fast_threshold (ImageReduced, Region1, 0, 100, 20)
*水平旋转
orientation_region (Region1, Phi)
area_center (Region1, Area, Row, Column)
vector_angle_to_rigid (Row, Column, Phi, Row, Column, -3.14/2, HomMat2D)
affine_trans_region (Region1, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
*膨胀,去掉逗号
closing_circle (RegionAffineTrans, RegionClosing, 3.5)
dilation_rectangle1 (RegionClosing, RegionDilation, 1, 11)
connection (RegionDilation, ConnectedRegions1)
*筛选
select_shape (ConnectedRegions1, SelectedRegions1, 'area', 'and', 150, 99999)
*求交集
intersection (SelectedRegions1, RegionAffineTrans, RegionIntersection)

*选择不合格的字符
select_shape (RegionIntersection, SelectedRegions2, 'rect2_len1', 'and', 30, 999)

*把不合格的变成合格,重新膨胀和连通域操作设置
closing_circle (SelectedRegions2, RegionClosing1, 1.5)
dilation_rectangle1 (RegionClosing1, RegionDilation1, 1, 11)
connection (RegionDilation1, ConnectedRegions2)
*求交集
intersection (ConnectedRegions2, SelectedRegions2, RegionIntersection1)
*建立空集
gen_empty_obj (EmptyObject)
concat_obj (EmptyObject, RegionIntersection1, ObjectsConcat)
*将去除不合格的也放进去
*先去除不合格
difference (RegionIntersection, SelectedRegions2, RegionDifference)
*放进去
concat_obj (RegionDifference, ObjectsConcat, ObjectsConcat1)
*计算字符面积
count_obj (ObjectsConcat1, Number)
a:=[]
for Index := 1 to Number by 1
    select_obj (ObjectsConcat1, ObjectSelected, Index)
    area_center (ObjectSelected, Area1, Row1, Column1)
    a:=[a,Area1,'\t']
endfor
*新建txt文档
open_file ('1.txt', 'output', FileHandle)
fwrite_string (FileHandle, a)
close_file (FileHandle)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值