halcon在原图上绘制缺陷区域的彩色标注框

本文简单介绍一种实现以下效果,在原图上绘制彩色标注框的方法。

效果

halcon在原图上绘制缺陷区域的彩色标注框_第1张图片

刚接触halcon时候,一直在找一种可以把缺陷区域用彩色方框框选出来的方法,但是没有找到相关的方法,在自己学习几天halcon之后产生了一个简单的想法,可以作为初步的实现方式使用,后续如果有更好的方法再改进。

实现方法

假设我们找出的缺陷区域为FaultRegion,那么,主要以下6步。

  • 找出FaultRegion的最小外接矩形(如果需要绘制圆形标注狂可以使用最小外接圆)
  • 将矩形的边长增加30个像素,绘制rectangle1;
  • 将矩形的边长增加25个像素,绘制rectangle2;
  • 两个矩形做差,得到一个矩形环;
  • 复制三个图片,分别在三个图片绘制矩形环;
  • 合成三个复制的图片

详细代码

* 复制三张图片
copy_image (Image, ImageR)
copy_image (Image, ImageG)
copy_image (Image, ImageB)
* 找出最小外接矩形,分别绘制两个矩形,做差
smallest_rectangle2 (FaultRegion, Row, Column, Phi, Length1, Length2)
gen_rectangle2 (Rectangle1, Row, Column, Phi, Length1+30, Length2+30)
gen_rectangle2 (Rectangle2, Row, Column, Phi, Length1+25, Length2+25)
difference (Rectangle1, Rectangle2, RegionDifference)
* 绘制在原图上
overpaint_region (ImageR, RegionDifference, 255, 'fill')
overpaint_region (ImageG, RegionDifference, 0, 'fill')
overpaint_region (ImageB, RegionDifference, 0, 'fill')
* 合成
compose3 (ImageR, ImageG, ImageB, OutImage)

思路解析:因为halcon内置在图像上绘制区域的算子只能绘制基础的灰阶颜色,无法明显的看出标注框,且标注框的宽度不可选,使用不太方便。所以,本文首先解决第一个问题就是,颜色的问题,可以将图像复制三份,在每个图像上分别绘制不同灰阶值的标注框,合成之后,原图其他部分保持不变,只有绘制的标注框部分会由于三种不同像素的叠加儿显示出彩色;然后再解决第二个问题:无法设宽度的问题,本文采用两个外接矩形做差的方式,通过控制两个矩形框的大小,可以随意更改标注框的大小以及宽度。

相关算子介绍

copy_image (Image, ImageR)      复制图像,其中,Image为输入图像,ImageR 为输出图像
smallest_rectangle2 (FaultRegion, Row, Column, Phi, Length1, Length2)	  找出最小外接矩形的参数,其中:
FaultRegion 为带查找的区域;
Row, Column 分别为最小外接矩形的中心点的y, x
Phi 为外接矩形的角度;
Length1, Length2 为外接矩形的宽、高;
gen_rectangle2 (Rectangle1, Row, Column, Phi, Length1+30, Length2+30)	  生成最小外接矩形
一般是smallest_rectangle2 (FaultRegion, Row, Column, Phi, Length1, Length2)的后置算子
其中参数的含义与smallest_rectangle2 算子相同;
difference (Rectangle1, Rectangle2, RegionDifference)	 实现两个区域做差
Rectangle1  大区域
Rectangle2小区域
RegionDifference  做差后区域
overpaint_region (ImageR, RegionDifference, 255, 'fill')    将某一区域绘制在图像上
ImageR  为待绘制图像
RegionDifference  为待绘制区域
255  为灰阶值
’fill‘为绘制方式,这种方式是填充绘制,还有另外一种方式是只绘制边框,不推荐
compose3 (ImageR, ImageG, ImageB, OutImage)    合成三个通道的图像
ImageR, ImageG, ImageB  分别为输入的三个通道图片
OutImage  为合成之后的输出图像

总结

图像处理最主要的地方在于实现的思路,本文简单介绍一种可实现的思路,经过测试,这个方案在实际工程应用种,占用的时间非常少,是一种可以实际使用的方案。当然,实际情况,可能绘制的标注框会有非常多,远不止一个,此时,可以将所有的区域进行并集运算,然后一次性绘制在原图上,这样节约了每次绘制的时间,而且也只需要合成一次,效率也更加的高。

你可能感兴趣的:(图像算法,计算机视觉,人工智能,视觉检测,图像处理)