************************************************第一步: 程序初始化**************************************************
*关闭当前有打开的窗口
dev_close_window ()
*关闭程序计数器,图形变量,窗口图形更新
dev_update_off ()
*打开一个新窗口
dev_open_window (0, 0, 640, 512, 'black', WindowHandle)
*设置字体信息:字体大小为16,字体为mono,粗体,斜体
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
stop ()
************************************************第二步: 批量读取图像**************************************************
*批量读取4张图像到Images图形变量里
read_image (Images, 'photometric_stereo/shampoo_label_0' + [1:4])
for I := 1 to 4 by 1
*从对象数组里选择对象元素
select_obj (Images, ObjectSelected, I)
*显示选择的图像
dev_display (ObjectSelected)
*延时0.5秒
wait_seconds (0.5)
endfor
************************************************第三步: 获取反照率和表面梯度**************************************************
* 物像里的光照方向
Tilts := [6.1,95.0,-176.1,-86.8]
* 光源和物体之间的角度
Slants := [41.4,42.6,41.7,40.9]
ResultType := ['gradient','albedo']
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])
* 显示反射图
dev_display (Albedo)
stop ()
* 使用梯度字段计算表面的高斯曲率,缺陷在曲率图像中通常易于检测
derivate_vector_field (Gradient, MeanCurvature, 1.0, 'mean_curvature')
************************************************第四步: 获取检测到的缺陷**************************************************
* 对曲率图像进行阈值
threshold (MeanCurvature, Region, -10, -0.07)
* 对区域进行开运算
opening_circle (Region, RegionOpening, 1)
* 对区域进行连通处理
connection (RegionOpening, ConnectedRegions)
* 将缺陷过滤出来
select_shape (ConnectedRegions, Defects, 'area', 'and', 50, 99999)
* 将区域转换为圆
shape_trans (Defects, Circle, 'outer_circle')
* 设置区域填充方式
dev_set_draw ('margin')
* 设置输出对象的显示颜色
dev_set_color ('red')
* 显示反射图
dev_display (Albedo)
* 显示缺陷
dev_display (Defects)
* 显示缺陷外圆
dev_display (Circle)
halcon 化妆品标签褶皱检测_
于 2022-01-22 23:57:50 首次发布