dev_close_window ()
dev_update_off ()
dev_open_window (0, 0, 640, 512, 'black', WindowHandle)
stop()
* 读取四张图片
read_image (Image, 'C:/Users/Administrator/Desktop/lcd(2)/shampoo_label_0'+[1:4])
for Index := 1 to 4 by 1
stop()
* 取出Image中一个 从1开始
select_obj (Image, ObjectSelected, Index)
* 显示图像
dev_display (ObjectSelected)
* 等待1s
* 亿 兆 京
wait_seconds (1)
endfor
*****************************************************************************************************
* Halcon用于光度立体视觉的算子 用于从多张不同光照条件下的图像恢复物体的表面的法向量 高度场、反射率图像
* HeightField 高度场
* Gradient 法向量
* Albedo 反射率
* 物像里的光照方向
*第五个参数:Slants(倾斜角)定义:光源方向与物体表面法向量的夹角(范围:0° 到 90°)。
*0° 表示光源垂直于表面(正上方照射)。
*90° 表示光源与表面平行(无直接照射)。
*你的数据:[41.4, 42.6, 41.7, 40.9] 表示所有光源的倾斜角均在 40°~43° 之间,说明光源是斜射的。
*第六个参数:Tilts(方位角 定义:光源在物体表面平面(XY平面)的投影与 X 轴的夹角(范围:-180° 到 180° 或 0° 到 360°)。
*0° 表示光源沿 X 轴正方向照射。
*90° 表示光源沿 Y 轴正方向照射。
*你的数据:[6.1, 95.0, -176.1, -86.8] 表示四个光源分别从不同水平方向照射(如右、前、左、后)。
Tilts := [6.1,95.0,-176.1,-86.8]
* 光源和物体之间的角度
Slants := [41.4,42.6,41.7,40.9]
* 第七个参数:返回的结果
ResultType := ['gradient','albedo']
photometric_stereo (Image, HeightField, Gradient, Albedo, Slants, Tilts, 'all', 'poisson', [], [])
*****************************************************************************************************
* 展示反射图
dev_display (Albedo)
stop()
* 计算法向量导数的算子 用于分析梯度长的局部特性 使用梯度场计算物体表面高斯曲率 缺陷在曲率图中更为明显
derivate_vector_field (Gradient, Result, 1, 'mean_curvature')
dev_display (Result)
threshold (Result, Region, -0.2, -0.06)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 50, 99999)
shape_trans (SelectedRegions, RegionTrans, 'outer_circle')// 转成其他形状
dev_set_draw ('margin')
dev_display (Albedo)
dev_display (SelectedRegions)
dev_display (RegionTrans)