Halcon 常用算子

该篇博客详细介绍了图像处理的多个步骤,包括读取图片、彩色图转灰度图、腐蚀操作、阈值分割、连通区域分析、区域筛选、ROI定位、图像裁剪以及形状模型匹配等。通过示例代码,展示了如何在实践中应用这些算法,对于理解机器视觉处理流程具有指导意义。
摘要由CSDN通过智能技术生成

1.读取图片

dev_update_window (‘off’)
dev_close_window ()
dev_open_window (0, 0, 728, 512, ‘black’, WindowID)
read_image (Bond, ‘die/die_03’)
dev_display (Bond)

2彩色图转灰度图

decompose3 (Image, Red, Green, Blue) *是将此3个单色图转换为HSV色差空间中的图
trans_from_rgb (Red, Green, Blue, Hue, Saturation, Intensity, ‘hsv’)`.

3进行灰度图像腐蚀操作

gray_erosion_shape (Image, ImageMin, 15, 15, ‘rectangle’)

4.阈值分割

threshold (Blue, Regions, 23, 253)

5.连通区域

connection (Regions, ConnectedRegions)

6筛选区域

select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 4500, 7000)

7.ROI

gen_region_runs (ROI_0, [70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108], [178,176,175,173,172,171,169,168,166,165,163,162,162,163,163,163,163,163,163,164,164,164,165,165,165,166,166,168,169,170,171,172,172,174,176,178,180,187,189], [253,257,259,260,262,263,264,265,265,266,266,266,266,266,267,268,268,269,271,271,270,269,268,268,266,266,265,265,265,265,264,264,258,254,255,254,250,248,239])

8.裁剪

reduce_domain (Blue, ROI_0, ImageReduced)

9.find_shape_model(Image, //搜索图像

ModelID, //模板句柄
AngleStart, // 搜索时的起始角度
AngleExtent, //搜索时的角度范围,必须与创建模板时的有交集
MinScore, //最小匹配值,输出的匹配的得分Score 大于该值
NumMatches, //定义要输出的匹配的最大个数
MaxOverlap, //当找到的目标存在重叠时,且重叠大于该值时选择一个好的输出
SubPixel, //计算精度的设置,五种模式,多选2,3
NumLevels, //搜索时金字塔的层数
Greediness : //贪婪度,搜索启发式,一般都设为0.8,越高速度快,容易出现找不到的情况
Row,Column, Angle, Score) //输出匹配位置的行和列坐标、角度、得分。

10. 准备一个形状模型来匹配

create_shape_model (ImageReduced, ‘auto’,0, rad(360), ‘auto’, ‘auto’, ‘use_polarity’, ‘auto’, ‘auto’, ModelID)
get_shape_model_contours (ModelContours, ModelID, 1)

11.数组求和

tuple_length(Row,Length)

12.为每个输入点(行、列)生成交叉形状的XLD轮廓。从概念上讲,轮廓由两条长度大小的线组成,这些线正好在输入点相交。它们的方位由角度决定。十字架以十字架的形式返回。如果要处理多个点,则必须将它们的坐标作为元组传递。
gen_cross_contour_xld( : Cross : Row, Col, Size, Angle)
参数列表:
Cross(out):生成XLD轮廓
Row(in):输入点集的行坐标
Col(in):输入点集的列坐标,Col元组的个数与Row元组的个数相同
Size(in):十字形长度,长度大于等于0
Angle(in):十字形方向

13.full_domain - 将图像的域(ROI)扩大到最大。算子full_domain输入一个以图像边缘长度为矩形的新定义域。 这意味着在进一步的操作中图像矩阵包含所有像素。 因此,通过读取或生成图像来获得相同的定义域。 矩阵的大小没有改变。
Image (input_object)   (multichannel-)image(-array) → object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real / complex / vector_field)
  输入图像。

ImageFull   (output_object) image(-array) → object (byte / direction / cyclic / int1 / int2 / uint2 / int4 / int8 / real / complex / vector_field)
  具有最大定义域的图像。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值