HALCON示例程序class_2dim_sup.hdev使用二维像素分类对图像进行分割

HALCON示例程序class_2dim_sup.hdev使用二维像素分类对图像进行分割

示例程序源码(加注释)

  • 定义Interactive并赋值,0:固定框;1:手工绘制框。
    Interactive := 0

  • 读入图片
    read_image (Image, ‘ic’)

  • 关闭窗口
    dev_close_window ()

  • 获取图像尺寸
    get_image_size (Image, Width, Height)

  • 根据获得的图像尺寸打开窗口
    dev_open_window (0, 0, Width, Height, ‘white’, WindowID)

  • 将彩色图片分割成rgb三通道图片
    decompose3 (Image, Red, Green, Blue)

  • 显示
    dev_display (Red)
    dev_set_color (‘red’)

    if (Interactive)
    draw_region (Pattern, WindowID)
    else
    gen_rectangle1 (Pattern, 362, 276, 371, 298)
    endif

计算双通道灰度值图像的直方图

  • histo_2dim - 计算双通道灰度值图像的直方图。
  • 函数原型:histo_2dim(Regions,ImageCol,ImageRow:Histo2Dim ::)
    运算符histo_2dim计算区域内两个图像的二维直方图。通道1(ImageCol)的灰度值被解释为行索引,通道2(ImageRow)的灰度值被解释为列索引。输出图像Histo2Dim中的一个点P(g1,g2)处的灰度值表示灰度值组合(g1,g2)的频率,其中g1表示行索引,g2表示列索引。
    histo_2dim (Pattern, Red, Blue, Histo2Dim)
  • 阈值分割选取1-255的区域
    threshold (Histo2Dim, Features, 1, 255)
  • 使用半径为11.5的圆形进行闭运算
    closing_circle (Features, FeaturesClosed, 11.5)
  • 显示设置与显示
    dev_set_draw (‘fill’)
    dev_set_part (0, 0, 511, 511)
    dev_display (Red)
  • class_2dim_sup - 使用二维像素分类对图像进行分割,
  • 选取Red灰度值为g1范围,Blue灰度值为g2范围的点
    class_2dim_sup (Red, Blue, FeaturesClosed, RegionClass2Dim)

处理思路

这个例子是针对彩色图片,使用不同通道的特性进行区域选取与分割的例子。使用了双通道灰度值图像的直方图对图像进行分割,方法就是选取不同通道像素值相同的灰度范围,进而进行分割。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

你可能感兴趣的:(halcon示例程序学习,HALCON示例程序解读与翻译)