C#Halcon扇形/圆环缺陷检测(极坐标变换法)

扇形交互绘制与极坐标变换插件(加载图像—绘制扇形—极坐标变换—图像返回:运行效果)

应用场景:缺陷检测,OCR识别,二维码识别,辅助定位等场景

绘制扇形:原型算子create_drawing_object_circle_sector||create_drawing_object_ellipse_sector 

本次Demo小编用的是标准圆形绘制的扇形,目的是为了后面极坐标变换

如果不涉及极坐标变换,可以采用椭圆扇形

C#Halcon扇形/圆环缺陷检测(极坐标变换法)_第1张图片

源码原理参考

Halcon人机交互绘图方式

扇形区域转矩形区域:原型算子polar_trans_image_ext

 HOperatorSet.GenEmptyObj(out ho_PolarTransImage);
 if(hv_end_angle< hv_start_angle)
 {
     HTuple  ExpTmpLocalVar_start_angle = hv_start_angle - ((new HTuple(360)).TupleRad());
     hv_start_angle.Dispose();
     hv_start_angle = ExpTmpLocalVar_start_angle;

 }

 double hv_ContouWidth = (hv_end_angle - hv_start_angle) * hv_ra;
double hv_ContouHeight = StepLength * 2;
 HOperatorSet.GenEmptyObj(out ImageSector);
 HOperatorSet.ReduceDomain(HIMage, ho_RegionSector, out ImageSector);
 ho_PolarTransImage.Dispose();
 HOperatorSet.PolarTransImageExt(ImageSector, out ho_PolarTransImage, hv_R_Centr,
     hv_C_Centr, hv_end_angle, hv_start_angle, hv_ra + StepLength, hv_ra - StepLength,
     hv_ContouWidth, hv_ContouHeight, "bilinear");
 HW.ClearWindow();
 FitImage(ho_PolarTransImage, hWC);

矩形区域转扇形区域:原型算子polar_trans_region_inv

 HOperatorSet.GenEmptyObj(out ho_XYTransImage);
 ho_XYTransImage.Dispose();
 HOperatorSet.PolarTransImageInv(ho_PolarTransImage, out ho_XYTransImage, hv_R_Centr,
     hv_C_Centr, hv_end_angle, hv_start_angle, hv_ra + StepLength, hv_ra - StepLength,
     width, height, "nearest_neighbor");

 HW.ClearWindow();
 FitImage(ho_XYTransImage, hWC);

源码原理参考

Halcon 极坐标变换

你可能感兴趣的:(c#,计算机视觉,视觉检测,图像处理)