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)
处理思路
这个例子是针对彩色图片,使用不同通道的特性进行区域选取与分割的例子。使用了双通道灰度值图像的直方图对图像进行分割,方法就是选取不同通道像素值相同的灰度范围,进而进行分割。
后记
大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。