halcon:光度立体法

下文是对于halcon:光度立体法的一些浅薄理解。

主要用于测试产品表面的凹坑,深一点的划伤等等
光度立体法是通过二维图片提取三维模型,一般使用4张图。

下面先看一下测试原图和测试结果
原图:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

结果图如下:
在这里插入图片描述

四张原始图片都是光源在不同的角度下拍摄的
从主视图看,光源角度几乎都在45°左右
Slants := [41.4,42.6,41.7,40.9]
从俯视图看,均匀分布在每个上下左右四个位置
Tilts := [6.1,95.0,-176.1,-86.8]
下面是对于参数Slants和Titls的示意图和解释
Slants
在这里插入图片描述
Titls
在这里插入图片描述
代码如下:

在这里插入代码片
*用于检查药物泡罩背面。
*输入4张从药泡背面拍摄的图像
dev_close_window ()
dev_update_off ()
*创建窗口
dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
*设置字体
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
Message := 'Inspect the backside of a blister'
Message[1] := 'using photometric stereo. In this case four'
Message[2] := 'different light orientations were used.'
*显示信息
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
* 读取不同角度拍摄的图像
read_image (Images, 'photometric_stereo/blister_back_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
* 
*应用光度立体仪测定反照率和表面梯度。
*Tilts参数是俯视图看光源的角度
Tilts := [6.1,95.0,-176.1,-86.8]
*Slants参数是主视图看光源的角度
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)
disp_message (WindowHandle, 'Albedo image', 'window', 12, 12, 'black', 'true')
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* 
*显示这张图片之后,有很多种方式去检测这张图片

* 计算曲面的高斯曲率
*使用梯度场作为操作符的输入
* derivate_vector_field。
*缺陷通常很容易在曲率图像中检测出来。
derivate_vector_field (Gradient, GaussCurvature, 1, 'gauss_curvature')
*使用区域分割的图像。
regiongrowing (GaussCurvature, Regions, 1, 1, 0.001, 250)
*选择宽度和高度都在150-200之间的图像
select_shape (Regions, TabletRegions, ['width','height'], 'and', [150,150], [200,200])
*形成一个凸形区域
shape_trans (TabletRegions, TabletRegions, 'convex')
*区域进行联合
union1 (TabletRegions, TabletRegions)
*3.5的圆形进行腐蚀区域(减小region)
erosion_circle (TabletRegions, TabletRegions, 3.5)
*减少图像区域
reduce_domain (GaussCurvature, TabletRegions, ImageReduced)
*计算图像的绝对值(模数)。
abs_image (ImageReduced, ImageAbs)
*阈值分割
threshold (ImageAbs, Region, 0.03, 255)
*圆的闭运算
closing_circle (Region, RegionClosing, 10.5)
*将检测区域进行分离
connection (RegionClosing, ConnectedRegions)
*选择其中像素大小在10-99999之间的区域,就是error区域
select_shape (ConnectedRegions, Defects, 'area', 'and', 10, 99999)
*找到该区域的中心
area_center (Defects, Area, Row, Column)
*以中心为圆的中心,画一个半径
gen_circle (Circle, Row, Column, gen_tuple_const(|Row|,20.5))

dev_set_draw ('margin')
dev_set_color ('red')
dev_set_line_width (2)
dev_display (GaussCurvature)
dev_display (Circle)
Message := 'The defect can easily be detected'
Message[1] := 'in the surface curvature image'
disp_message (WindowHandle, Message, 'window', 12, 12, 'black', 'true')
stop ()
* Display the defects in the albedo image
dev_set_draw ('margin')
dev_set_color ('red')
dev_display (Albedo)
dev_display (Circle)
disp_message (WindowHandle, 'Defect in albedo image', 'window', 12, 12, 'black', 'true')

具体的可查看halcon例子:
inspect_blister_photometric_stereo.hdev

  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Halcon光度立体是一种基于计算机视觉技术实现三维图像重建的方,其原理是通过基于投影的光度测量技术获取目标场景中的多幅图像,再利用计算机算将这些图像中的信息与物体的几何形状等参数进行匹配和计算,从而得到物体的三维结构图像。 在Halcon光度立体中,首先需要使用光源对目标物体进行照明,然后再利用相机对物体进行拍摄,随后根据拍摄到的物体表面光强度信息进行图像重建。 具体来说,Halcon光度立体利用了物体表面反射光强度与物体深度之间的关系,即反射光强度与光源、物体和相机之间的几何关系有关。使用多个光源和相机可以获得更多的信息,通过对这些信息进行处理和计算可以获得更准确的三维结构信息。 总之,Halcon光度立体基于光度测量技术和计算机算实现三维图像重建,可以应用于工业自动化、机器视觉、医学图像处理等领域,具有很高的实用价值和发展前景。 ### 回答2: Halcon光度立体是一种三维数字影像处理技术,利用多张二维影像和光度信息进行三维重建和计算。该方的原理是将多张拍摄同一场景或物体的影像进行处理,使用不同的光源角度和强度来获得不同的光度信息。然后利用相机标定和三角测量技术,将这些光度信息转换为三维坐标,重建出物体的形状和轮廓。这种方可以用于机器人视觉导航、医学影像分析和制造业质量控制等领域,可以提高三维建模的准确性和效率,从而更好地应用于实际生产和应用。该技术的不足之处是需要特殊的影像采集设备和处理软件,使用成本较高,且对影像采集的要求较严格,需要保证影像间具备良好的匹配性和精度,同时需要考虑到光线和影像色彩等因素的干扰。因此,在实际应用中需要综合考虑各种因素,将该技术与其他三维建模方相结合,以实现更全面的三维建模应用。 ### 回答3: Halcon光度立体是一种基于灰度图像处理技术的三维立体测量方。其原理是通过获取拍摄物体的两幅不同位置或角度的灰度图像,利用两幅图像之间的像素点光强度差异,构建出深度信息。具体步骤如下: 1.获取两幅不同角度或位置的灰度图像。 2.对两幅图像进行预处理,去除噪点和干扰,确保图像质量。 3.在两幅图像中找到对应的像素点,构建出像素点之间的对应关系。 4.计算每个像素点在两幅图像中的光强度差异,用差异值作为该像素点的深度信息。 5.通过对深度信息进行处理和重建,可以得到物体的三维模型。 Halcon光度立体适用于多种应用场景,如机器人视觉导航、自动化生产线控制、工业检测和医学成像等领域。相比于基于激光和结构光的三维测量方Halcon光度立体不需要使用特殊设备,成本较低,实现相对容易,因此被广泛应用和研究。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值