写在前面
在我们项目的3D
检测场景中,比如在检测锂电池焊缝表面的凹坑或突起的时候,由于成像不可能保持绝对水平,所以需要对图像进行调平处理,这样才能准确的计算出凹坑深度值和突起高度值。
3D调平
我们采取拟合平面的方法,因为该方法适合平面点云模型的调平处理。我们项目中的3D
图像为tif
格式,处理逻辑跟单通道灰度图是一致的,只不过这些值不是灰度值,而是深度信息。
调平函数为:
PlaneDeepImage( Image, RegionPlane : ImagePlane : : )
该函数的输入参数为Image
和RegionPlane
,输出参数为ImagePlane
,各参数含义如下:
Image: 调平前的图像
RegionPlane: 待拟合的平面区域
ImagePlane: 调平后的图像
函数具体实现为:
convert_image_type (Image, ImageConverted, 'real')
get_image_size (ImageConverted, Width, Height)
moments_gray_plane (RegionPlane, Image, MRow, MCol, Alpha, Beta, Mean)
gen_image_surface_first_order (ImageSurface, 'real', Alpha, Beta, 0, (Height+1)/2, (Width+1)/2, Width, Height)
sub_image (ImageConverted, ImageSurface, ImageOut, 1, 0)
convert_image_type (ImageOut, ImagePlane, 'uint2')
return ()
其中,moments_gray_plane
中的Alpha
表示沿直线轴方向的梯度(“向下”),Beta
表示沿列轴方向的梯度(“向右”)。
有关该算子更多参数内容请参考Halcon
官网的这里。
然后gen_image_surface_first_order
算子表示在图像中心处根据上面计算出的梯度信息生成一阶平面,有关该算子更多参数内容请参考Halcon
官网的这里。
测试图片请点击:test.tif