通过在案例中应用摸索算子的特性,对光度立体法有了进一步认识。基于此重新理解文档,希望能够帮助有疑惑的同志,同时也期望看到博客的同志如果有更深的理解以及应用技巧,共享与大家共同交流进步。
photometric_stereo
Images (input_object) :输入图像
输入图像(一个至少包含3张图像(每张图像光照角度不同)的图像数组)
HeightField (output_object) :重建的高度
根据多个图像重构的高度信息图
Gradient (output_object) :表面的渐变场
根据多个图像重构的梯度信息图,表面的渐变场。
Albedo (output_object) :表面的反照率
表面的反照率。 根据多个图像重构的反射率信息图 Albedo 图像描述的是物体的反射率,其值介于0(黑色)-1(白色)之间。因此,Albedo反应了物体表面特性。比如对于印刷表面表面,Albedo反应的是表面明暗程度的特性。HeightField 图像中每个像素值以某种关系与其高度一一对应。默认情况下,ResultType设置成“all”。假如在应用中仅仅需要部分结果,可以通过数组的形式在‘gradient’,‘albedo’, and ‘height_field’中选择设置ResultType参数,例如ResultType := [‘gradient’,‘albedo’]。对于特定的表面检测应用,如果只需要‘gradient’, ‘albedo’,那么将ResultType设置成‘gradient’, 'albedo’不进行三维重构(‘height_field’),处理速度将会有效提升。
Slants (input_control) :相机与被测物方向之间的角度
对于每个图像,照明方向必须指定为角度 在参数偏和倾斜,它们描述了 照明相对于场景的方向。要了解 参数的含义偏和倾斜,请记住 假设照明源产生平行光线,相机 具有远心镜头,并且摄像机与场景正交放置,以便 重建:这偏angle 是光学 相机的轴和照明方向。
典型值范围:0.0 ≤ 倾斜 ≤ 180.0(以度为单位)
Tilts (input_control) :光源方向在与被测物平面角度
这倾斜角度是在对象平面或任何平面内测量的 即与它平行,例如,图像平面。特别是,它 描述从中心指向的方向之间的角度 图像右侧和投影的光线方向 进入飞机。也就是说,当查看图像(或 对应的场景),倾斜角度为 0 表示光线来自 右侧,倾斜角度为 90 表示光线来自 top,倾斜角度为 180 表示光线来自左侧 等。值范围:0.0 ≤ 倾斜 ≤ 360.0(以度为单位)
ResultType (input_control) :请求结果的类型。
值列表:[], 'albedo', 'all', 'gradient', 'height_field', 'normalized_gradient'
ReconstructionMethod (input_control) :重建方法的类型。
默认值: 'poisson'值列表:'fft_cyclic', 'poisson', 'rft_cyclic'
GenParamName (input_control) :
GenParamValue (input_control) :
光度立体至少需要三个图像 不同的照明方向。然而,三维几何 的对象通常会导致阴影投射。在阴影区域中, 有效可用的照明方向数量减少,这 导致歧义。尽管如此,为了获得稳健的结果,redundancy 是 需要。因此,通常三个以上的光源具有不同的 应使用说明。但请注意,越来越多的照明 directions 还会导致需要处理的图像数量增加,并且 因此处理时间更长。在大多数应用程序中,许多 四到六个光源是合理的。根据经验,倾斜角度 应在 30° 和 60° 之间进行选择。倾斜角度通常应为 均匀分布在待测物体周围。请注意, 必须选择照明方向,使其不位于 同一平面(即照明方向必须独立),否则 计算失败并引发异常。
使用梯度场作为算子derivate_vector_field的输入来计算表面的高斯曲率。在曲率图像中通常很容易检测到缺陷。
案例1 photometric_stereo+derivate_vector_field
* 显示具有不同照明度的输入图像
read_image (Images, 'photometric_stereo/flooring_' + Index + '_0' + [1:4])
for I := 1 to 4 by 1
Message := 'Acquire image ' + I + ' of 4'
select_obj (Images, ObjectSelected, I)
dev_display (ObjectSelected)
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
wait_seconds (0.5)
endfor
* 应用光度立体来确定反照率和表面渐变。
Slants := [39.4,40.5,39.5,38.4]
Tilts := [-6.0,83.7,172.9,-98.2]
ResultType := ['gradient','albedo']
photometric_stereo (Images, HeightField, Gradient, Albedo, Slants, Tilts, ResultType, 'poisson', [], [])
dev_display (Albedo)
dev_display (Gradient)
derivate_vector_field (Gradient, MeanCurvature, 1.0, 'mean_curvature')
* 检测缺陷
* 分割曲率图像中的绘图板区域
threshold (MeanCurvature, Region, 0.02, 1000)
connection (Region, Defects)
area_center (Defects, Area, Row, Column)
gen_circle (Circle, Row, Column, sqrt(Area) + 10)
* 在曲率图像中显示缺陷
dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (2)
dev_display (MeanCurvature)
dev_display (Circle)
* 在反照率图像中显示缺陷
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Albedo)
dev_display (Circle)
uncalibrated_photometric_stereo
应用未校准的光度学立体以检索每个像素的局部方向。
Images(输入)
具有不同照明度的输入图像。
NormalField(输出)
表面的法线场。
Gradient(输出)
曲面的梯度场
Albedo(输出)
表面的反照率。
ResultType(输出)结果类型。
默认值: 'all' 值列表:[], 'albedo', '全部'、 'gradient'、'normal_field'、'normalized_gradient'
案例2 uncalibrated_photometric_stereo+derivate_vector_field
* 显示具有不同照明度的输入图像
read_image (Images, 'photometric_stereo/flooring_' + Index + '_0' + [1:4])
for I := 1 to 4 by 1
Message := 'Acquire image ' + I + ' of 4'
select_obj (Images, ObjectSelected, I)
dev_display (ObjectSelected)
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
wait_seconds (0.5)
endfor
uncalibrated_photometric_stereo (Images, NormalField, Gradient, Albedo, 'all')
dev_display (NormalField)
dev_display (Gradient)
dev_display (Albedo)
derivate_vector_field (Gradient, MeanCurvature, 1.1, 'mean_curvature')
mean_image (MeanCurvature, ImageMean, 9, 9)
threshold (ImageMean, Region, -0.1, -0.024)
connection (Region, Defects)
area_center (Defects, Area, Row, Column)
gen_circle (Circle, Row, Column, sqrt(Area) + 10)
dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (2)
dev_display (MeanCurvature)
dev_display (Circle)
标签:gradient,dev,Halcon,立体,field,Albedo,图像,display,光度
From: https://blog.csdn.net/2202_75557553/article/details/143173715