一、Halcon图片处理函数
1、get_image_time(Image, MSecond, Second, Minute, Hour, Day, YDay, Month, Year) :获取图片的时间日期;
2、get_image_type(Image, Type) :获取图片的类型,'byte’代表位图;
3、get_image_pointer1(Image, Pointer, Type1, Width1, Height1) :获取图片的指针内存;
4、decompose3(Image, Image1, Image2, Image3) :将彩色图拆封成R G B三种灰度图;
5、compose3(Image1, Image2, Image3, MultiChannelImage) : 将三种灰度图合成一张彩色图;
6、rgb1_to_gray(MultiChannelImage, GrayImage) :将彩色图转换成灰度图;
7、rgb3_to_gray(Image1, Image2, Image3, ImageGray) :将拆分的RGB灰度图作为输入,转换成灰度图,基本上使用上面一种转换方法;
8、trans_from_rgb(Image1, Image2, Image3, ImageResult1, ImageResult2, ImageResult3, ‘hsv’) :将拆分的RGB灰度图作为输入,转换成HSV格式的图;
二、Halcon三种阈值分割方法
1、threshold(Image, Region, 150, 255) :全局阈值,主要适用于光照环境比较稳定,图像灰度值均匀的情况;
2、binary_threshold(Image, Region1, ‘max_separability’, ‘light’, UsedThreshold) : 此算子自动阈值化,适用于背景区域跟所要寻找的产品区域的灰度值对比比较明显;
3、mean_image(Image3, ImageMean, 33, 33);
dyn_threshold(Image3, ImageMean, RegionDynThresh, 5, ‘light’);
局部阈值,主要适用于灰度值不均的图像,这两个函数是需要一起使用。
如果得到的图片外部的白色环形灰度值不均匀,但是又想使用阈值找到整个环形,这时就需要使用第三种阈值方法。基本原理就是每个像素会按照mean_image函数中所给的参数3和4(奇数)的矩形大小平均框中像素的灰度值,从而得到该个像素的值。
故如果你想将环形全部找到,mean_image函数中参数3和4的值就为环形像素值宽度的2倍加1,即是2D+1。
dyn_threshold函数的参数代表每两个像素的差值,只要在该范围,就代表有效;
当mean_image函数中参数3和4的值过小,整个环形就无法分割出来;而当参数值接近2D+1,整环形就能完整被分离出来。
三、Halcon区域处理函数
1、count_obj(Region, Number) :检查区域对象的数量;
2、connection(Region, ConnectedRegions) :将区域对象打散;
3、union1(ConnectedRegions, RegionUnion) : 将分散的区域联合成一个整体;
4、fill_up(ConnectedRegions1, RegionFillUp) : 填充;
5、opening_circle(RegionFillUp, RegionOpening, 10.5) :开运算,即先腐蚀在膨胀,主要功能是除去孤立的小点,毛刺和小桥;
6、closing_circle(RegionOpening, RegionClosing, 3.5) :闭运算,即先膨胀在腐蚀,主要功能是填平小孔,弥合小裂缝;
7、select_shape(RegionOpening, SelectedRegions, ‘area’, ‘and’, 45000, 60000) : 筛选符合规定值的对象;
8、intersection(SelectedRegions, RegionUnion, RegionIntersection) :求交集,类似于抠图,将两个区域的重合部分得出来;
9、difference(RegionIntersection, RegionIntersection, RegionDifference) :图像减法运算;