halcon测量硬币真实直径

**

@halcon测量硬币真实直径

                                                                                              2019.3.10   9:25am

目的

熟练掌握halcon相机标定,理解其意义并且知道如何应用内外参数。

解决思路

在这个问题中,首先要测出硬币在图像中的像素尺寸,然后通过相机参数以及相关算子得到硬币在世界坐标系下的真实直径。

具体步骤

1.halcon进行相机标定
2.对硬币图像进行处理
3. 处理后的图像拟合圆得到像素直径
4.通过相机外参得到硬币真实直径

详细代码

*用halcon自带标定窗口进行相机标定
gen_caltab (7, 7, 0.075, 0.5, 'caltab.descr', 'caltab.ps')
* Calibration 01: Code generated by Calibration 01
CameraParameters := [0.0173187,-446.633,1.66925e-006,1.67e-006,1943.27,1446.01,3840,2748]
CameraPose := [0.0294283,-0.0226181,2.45361,1.0148,0.41478,359.391,0]
stop ()
 *图像点转换成世界坐标点
image_points_to_world_plane (CameraParameters, CameraPose, 100, 100, 'm', X, Y)
PixelDist := 0.000508
*图像处理
read_image (Image, 'C:/Users/Administrator/MVS/Data/啦啦.bmp')
rgb1_to_gray (Image, GrayImage)
mean_image (GrayImage, ImageMean, 3, 3)
threshold (ImageMean, Regions, 87, 131)
connection (Regions, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ['area','row','column'], 'and', [0,1704.74,376.48], [100000,2110.83,943.32])
fill_up (SelectedRegions, RegionFillUp)
erosion_circle (RegionFillUp, RegionErosion, 15)
opening_circle (RegionErosion, RegionOpening, 15)
gen_contour_region_xld (RegionOpening, Contours1, 'border')
*生成边界闭合轮廓
fit_circle_contour_xld (Contours1, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius1, StartPhi, EndPhi, PointOrder)
*用圆近似闭合轮廓
gen_circle (Circle1, Row1, Column1, Radius1)
reduce_domain (ImageMean, Circle1, ImageReduced1)
dev_display (ImageReduced1)
dev_set_draw ('margin')
disp_circle (3600, Row1, Column1, Radius1)
RealDiameter:=(Radius1*2* PixelDist * 100)$'4.2f'
disp_message (3600,'实际直径:'+RealDiameter+'mm', 'image', Row1, Column1, 'black', 'true')

操作中遇到的问题以及具体解决办法

Q1:在进行标定时提取不到图像上的标定点
A1:因为受到光照因素影响,需调整光源位置重新拍照
Q2:图像处理时无法只得到硬币轮廓
A2:需要对图像进行填充处理具体算子fill_up,拟合圆需要用到膨胀和腐蚀得到更加准确的像素圆周,最后用 fit_circle_contour_xld算子得到拟合圆
Q3:真实直径公式中PixelDist的具体含义
A3:标定后的图像一个像素代表的实际距离

最后结果

我国一毛钱真实直径为19.00mm,游标卡尺测得被测硬币直径为18.96mm,我最后得到的测量结果为18.99mm。误差在允许范围内。
halcon测量硬币真实直径
halcon测量硬币真实直径标定后所得到的具体参数