QQ登录

只需一步,快速开始

halcon 图像操作相关函数

[ 复制链接 ]
1. get_grayval(Image : : Row, Column : Grayval)
用于访问图像Image 的灰度值.
参数Grayval是浮点数或整数的元组,它返回图像中几个像素的灰度值。
对于多通道图像,返回一组元素。
每个通道对应一个像素值(对于复杂或向量字段图像,每个通道返回两个值)。
Row, Column为图像像素的位置坐标。
注意get_grayval没有考虑图像的定义域,即,如果域已被约简,
例如,使用了reduce_domain,即使对于域外的点,也会返回灰色值。
例程
read_image (Image, 'printer_chip/printer_chip_01')
get_grayval (Image, 0, 0, Grayval)


2.paint_xld(XLD, Image : ImageResult : Grayval : )
paint_xld将轮廓或多边形类型的XLD对象以灰度值为常量绘制到背景图像Image 的每个通道中,
并在ImageResult中返回结果。
XLD未闭合的都闭合并填充其区域,亚像素XLD对象的边缘使用抗锯齿方法绘制到背景图像上。
Grayval包含用于绘制XLD对象的灰色值。这些灰色值可以为每个通道指定一次,对所有XLD对象都有效,也可以单独为每个XLD对象指定。
要定义后者,将每个XLD对象的通道灰度值g分组,并按照XLD对象的顺序将它们连接到一个元组,例如,对于一个三通道图像:
[g(channel1,xld1), g(channel2,xld1), g(channel3,xld1), g(channel1,xld2), ... ].
如果输入的图像类型为“direction”,则将不在“direction”图像有效的值范围内的灰色值设置为255,将其标记为无效。
例程
read_image(Image1,'green-dot')
copy_image(Image1,Image2)
copy_image(Image1,Image3)
compose3(Image1,Image2,Image3,Image)
* extract subpixel border
threshold_sub_pix(Image1,Border,128)
* select the circle and the arrows
select_obj(Border,circle,14)
select_obj(Border,arrows,16)
concat_obj(circle,arrows,green_dot)
*绘制绿色圆0,255,0,红色箭头255,0,0
paint_xld(green_dot,Image,ImageResult,[0,255,0,255,0,0])

3.paint_region(Region, Image : ImageResult : Grayval, Type : )
paint_region用一个常量灰度值将区域Region绘制到图像Image 中,并在ImageResult中返回结果。
这些灰色值可以为每个通道指定一次,对所有区域都有效,也可以单独为每个区域指定。
要定义后一种方法,将每个区域的通道灰度值g分组,并根据区域的顺序将其连接到一个元组中,
例如,对于一个三通道图像:
[g(channel1,region1), g(channel2,region1), g(channel3,region1), g(channel1,region2), ... ].
如果输入的图像类型为“direction”,则将不在“direction”图像有效的值范围内的灰色值设置为255,
将其标记为无效。参数Type 决定是应该绘制填充区域(“fill”),还是只绘制其边界(“margin”)。
作为paint_region的替代方案,您可以使用overpaint_region操作符,它直接将区域绘制到图像中
例程
read_image(Image,'monkey')
gen_rectangle1(Rectangle,100.0,100.0,300.0,300.0)
paint_region(Rectangle,Image,ImageResult,128,'fill')

4.paint_gray(ImageSource, ImageDestination : MixedImage : : )
paint_gray将ImageSource中给出的图像的灰度值绘制到ImageDestination中的图像中,并在MixedImage中返回生成的图像。
只复制ImageSource域的灰度值(参见reduce_domain)。
作为paint_gray的替代方案,您可以使用overpaint_gray操作符,它直接将灰色值绘制到ImageDestination中。

例程
read_image(Image,'monkey')
gen_circle(Circle,200,200,150)
reduce_domain(Image,Circle,Mask)
read_image(Image2,'fabrik')
paint_gray(Mask,Image2,MixedImage)

5.overpaint_region(Image, Region : : Grayval, Type : )
overpaint_region用下个常量灰度值Grayval将区域Region绘制到Image中。
这些灰度值可以为每个通道指定一次,对所有区域都有效,也可以单独为每个区域指定。
要定义后一种方法,将每个区域的通道灰度值g分组,并根据区域的顺序将其连接到一个元组中,
例如,对于一个三通道图像:
[g(channel1,region1), g(channel2,region1), g(channel3,region1), g(channel1,region2), ... ].


如果输入的图像类型为“direction”,则将不在“direction”图像有效的值范围内的灰色值设置为255,将其标记为无效。
参数Type 决定是应该绘制填充区域(“fill”),还是只绘制其边界(“margin”)。


例程
gen_rectangle1(Rectangle,100.0,100.0,300.0,300.0)
gen_image_const(New1,'byte', 768, 576)
overpaint_region(New1,Rectangle,255.0,'fill')

6.overpaint_gray(ImageDestination, ImageSource : : : )
overpaint_gray将ImageSource中给出的图像的灰度值复制到ImageDestination中的图像中。
只复制ImageSource域的灰度值(参见reduce_domain)。
如果不希望修改ImageDestination本身,可以使用paint_gray操作符,它将在新创建的图像中返回结果。
例程
read_image(Image,'monkey')
gen_circle(Circle,200,200,150)
reduce_domain(Image,Circle,Mask)
gen_image_proto(Image,New1,0.0)
overpaint_gray(New1,Mask)
paint_gray (New1, New1, MixedImage)

7.augment_images(Images : ImagesAugmented : GenParamName, GenParamValue : )
用于增加/扭曲一张的图像。
该函数可以使用不同的方法来增强给定的图像,可以使用GenParamName和GenParamValue来指定。

在ImagesAugmented中返回增强后的图像。
请注意,哪些方法适合提高训练后的深度学习分类器的性能与数据集高度相关。


数据增强是通过修改一些图像来实现的,即图像中图像的数量与增强后的图像数量相同。
为了防止所有输入图像的增强,即ImagesAugmented中没有“原始”图像,
可以使用GenParamName和GenParamValue设置“augmentation_percentage”。
默认值是'50',这意味着50%的图像返回时没有改变。


对于每个被增强的图像,从下面列出的方法中随机选择一种增强方法。
它们可以通过在GenParamName中给出方法名和GenParamValue中的相应参数来调整或关闭:


* 'rotate':此值确定允许旋转的步长。所选旋转的图像由给定步长随机选择的倍数进行旋转。
所得到的旋转角度在[0°:360°]范围内。注意,如果旋转会导致未定义的像素,则图像将被裁剪。
值范围为0到180,建议值为'90'。使用'0'关闭旋转。默认值是'0'。




'rotate_range':这个方法在给定的角度范围内旋转图像。
该方法选择的旋转图像在[-'rotate_range':1°:'rotate_range']范围内随机旋转一个角度。
注意,如果旋转会导致未定义的像素,则图像将被裁剪。
值范围为0到180,建议值为“5”。使用'0'关闭旋转。默认值是'0'。


'crop_percent ':这个参数决定了随机裁剪后图像行和列方向上的边长的剩余百分比。
裁剪区域的位置是随机选择的。值的范围是1到100%[%]。
将参数设置为'off'或'100'以关闭随机裁剪。默认值是“off”。


crop_pixel':这个参数决定了随机裁剪后图像行和列方向的边长的剩余大小。
裁剪区域的位置是随机选择的。
该值必须大于或等于'1'。将参数设置为'off'以关闭随机裁剪。
默认值是“off”。




'mirror':该参数以如下方式编码允许的镜像方法:'r'(行)和'c'(列)。
Is可以允许这两种方法,例如通过给出“rc”。
由镜像增强的图像将由允许的方法的随机组合镜像。
或者,您可以将其设置为“off”以禁用镜像。
默认值是“off”。


'brightness_variation':在正负给定灰度值的范围内应用全局随机亮度变化[-brightness_variation:brightness_variation]。
值范围为0-255,建议值为“20”。将参数设置为'0'将禁用此方法。
默认值是'0'。




'brightness_variation_spot':在正负给定灰度值范围内应用一个局部亮度点[-brightness_variation_spot:brightness_variation_spot]。
图像中的光斑大小和位置是随机选择的。
值范围为0-255,建议值为“20”。
或者,您可以将它设置为'0'。
默认值是'0'。




注意:请注意图像大小会受到旋转(180°除外)和裁剪的影响。
因此,深度学习分类训练和推理所需的图像预处理可能需要重复,
例如使用preprocess_dl_classifier_image。


另外,请注意,为了输出图像的重现性,在调用过程之前必须使用set_system设置随机种子。


Images
为输入值,要增强的图像。
ImagesAugmented
输出值,被增加的图像。
GenParamName
输入泛型参数名,
建议值: 'augmentation_percentage', 'rotate', 'rotate_range', 'crop_percentage, 'crop_pixel'', 'mirror', 'brightness_variation', 'brightness_variation_spot';
输入 泛型参数值。
建议值: 0, 5, 10, 25, 50, 70, 90, 180, 255, 'rc', 'r', 'c', 'off'

回复

使用道具 举报

快速回复 返回列表 客服中心 搜索