QQ登录

只需一步,快速开始

工业视觉halcon gray_dilation函数介绍

[ 复制链接 ]
gray_dilation(Image, SE : ImageDilation : : )
gray_dilation将灰度值膨胀应用于具有结构元素SE的输入图像Image
结构元素SE的图像类型必须匹配输入图像Image的图像类型。
图像i在像素位置x处具有结构元素s的灰度值膨胀为:
2019-06-02_164741.jpg
这里,S是结构化元素S的域(参见read_gray_se)。

对于平面结构元素,灰度值膨胀特别快,
即,在其域内构造具有恒定灰度级的元素。


2.gray_dilation_rect(Image : ImageMax : MaskHeight, MaskWidth : )
gray_dilation_rect计算每个图像点在大小(MaskHeight, MaskWidt)的矩形掩码内输入图像Image 的最大灰度值。
生成的图像在ImageMax中返回。
如果参数MaskHeight或MaskWidth为偶数,则将它们更改为下一个较大的奇值。
在图像的边界处,灰度值被镜像。


3.gray_dilation_shape(Image : ImageMax : MaskHeight, MaskWidth, MaskShape : )
gray_dilation_shape计算输入图像Image 每个图像点在MaskHeight和MaskWidth大小掩码内最大灰度值。
生成的图像在ImageMax中返回。


如果参数MaskHeight或MaskWidth类型为偶数整数,
则将它们更改为下一个较大的奇数值。
相反,如果这两个参数中至少有一个是float类型,
则对输入图像Image 进行下一个较大和下一个较小的奇掩码大小的转换,
并从这两个中间图像中插值输出图像ImageMax。
因此,注意gray_dilation_shape对于掩码大小返回不同的结果,例如,4和4.0!


对于MaskShape控制参数的值“rhombus”和“octagon”,MaskHeight和MaskWidth必须相等。
MaskShape的参数值“octagon”表示一个等边八角形掩模,它是圆形结构的一个合适近似图像。
在图像的边界处,灰度值被镜像。


注意,对于float类型的掩码大小,gray_dilation_shape比integer类型的掩码大小需要更多的时间。
对于不同宽度和高度的矩形掩码尤其如此!


gray_dilation_shape可以在OpenCL设备上执行。
在浮点型掩模尺寸的情况下,由于插值是在OpenCL设备上以单一精度计算的,结果可能与CPU略有不同。


注意,如果使用域缩小的图像作为输入,过滤器操作符可能会返回意想不到的结果。请参考章节Filters.


例程:
read_image (Image, 'mreut')
gray_dilation_rect (Image, Dilation, 11, 11)
gray_erosion_rect (Dilation, Closing, 11, 11)
gray_dilation_shape (Closing, ImageMax, 11, 11, 'octagon')
*或执行下面例程查看应用

* 下面例程使用不同尺寸掩码的gray_erosion_shape执行灰度值腐蚀处理,
*还使用了整数或浮点数作为掩码尺寸。
read_image (Image, 'mreut')
get_image_size (Image, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
Step := 0.1
Start := 1
End := 13
Shape := ['rhombus','octagon','rectangle']
for CurShape := 0 to |Shape| - 1 by 1
  for Int := Start to End by 2
    gray_erosion_shape (Image, ImageMin, Int, Int, Shape[CurShape])
    for Float := Int + Step to Int + 2 - Step by Step
      gray_erosion_shape (Image, ImageMin, Float, Float, Shape[CurShape])
    endfor
  endfor
  *
  for Int := Start to End by 2
    gray_dilation_shape (ImageMin, ImageMax, Int, Int, Shape[CurShape])
    for Float := Int + Step to Int + 2 - Step by Step
      gray_dilation_shape (ImageMin, ImageMax, Float, Float, Shape[CurShape])
    endfor
  endfor
  *
  stop ()
endfor
for Float := Start to End by Step
  gray_erosion_shape (Image, ImageMin, 1.0, Float, 'rectangle')
endfor
*
for Float := Start to End by Step
  gray_dilation_shape (ImageMin, ImageMax, 1.0, Float, 'rectangle')
endfor
*
stop ()
gray_erosion_shape (Image, ImageMinInteger, 12, 12, 'rhombus')
gray_erosion_shape (Image, ImageMinFloat, 12.0, 12.0, 'rhombus')
sub_image (ImageMinInteger, ImageMinFloat, ImageSub, 1, 128)

  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)



回复

使用道具 举报

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