【halcon】示例(3)——多通道图像进行分类

本文介绍了一种基于create_class_box、learn_ndim_box和class_ndim_box的多通道图像分类方法。通过选取感兴趣区域和背景,实现对多通道图片的快速分类。文中详细展示了从读取图片到关闭分类器的全过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一种简单的多通道图像分类方式,涉及create_class_box 、learn_ndim_box 、class_ndim_box 的使用方法。选取多通道图片的感兴趣区域与背景可以对多通道图片进行快速分类。

*读入图片
read_image (Image, 'ic')

*创建一个新的分类器
create_class_box (ClassifHandle)

*获取图片大小
get_image_size (Image, Width, Height)

*关闭窗口
dev_close_window ()

*根据图片大小打开窗口
dev_open_window (0, 0, Width, Height, 'black', WindowID)

*显示读入图片
dev_display (Image)

*设置显示颜色绿色
dev_set_color ('green')

*生成一个矩形框
gen_rectangle1 (foreground, 360, 198, 369, 226)

*设置显示颜色为红色
dev_set_color ('red')

*生成一个矩形框
gen_rectangle1 (reject, 84, 336, 337, 504)

*learn_ndim_box - 使用多通道图像训练分类器
*函数原型learn_ndim_box(前景, 背景, 多通道图像, 分类器句柄)
learn_ndim_box (foreground, reject, Image, ClassifHandle)

*class_ndim_box - 对多通道图像进行分类。
*class_ndim_box(多通道图像, 识别出的区域, 分类器句柄)
class_ndim_box (Image, Regions, ClassifHandle)

*关闭分类句柄与显示相关操作
dev_set_color ('blue')
close_class_box (ClassifHandle)
dev_display (Image)
dev_display (Regions)

运行结果: 

 

 

 

### Halcon 图像分割 示例代码 教程 #### 三维直方图计算与二维像素分类 为了实现基于二维像素分类图像分割,可以利用`histo_2dim`算子来计算双通道灰度值图像的直方图,并通过`class_2dim_sup`来进行具体的分割操作[^1]。 ```hdevelop * 加载原始图像 read_image (Image, 'fabrik') * 转换颜色空间到Lab模型以便于后续处理 rgb1_to_lab (Image, Lab) * 提取L和a分量作为两个输入通道用于构建二维直方图 extract_channel(Lab,'L',Channel_L) extract_channel(Lab,'a',Channel_a) * 创建并训练一个简单的监督分类器 create_class_box ('box', [], [], [], [], [], ClassBoxHandle) add_sample_image_class_box (ClassBoxHandle, Channel_L, Channel_a, RegionTrain, []) train_class_box (ClassBoxHandle) * 应用训练好的分类器对整个图片进行预测得到最终的结果区域 classify_pix_cls_2dim (Channel_L, Channel_a, ClassBoxHandle, ResultRegion, MeasureVector) * 显示结果 dev_display(ResultRegion) ``` 这段程序展示了如何读入一幅彩色图像,将其转换成适合做色彩分析的颜色模式(这里选择了CIE L*a*b),接着提取特定的颜色成分形成特征向量供之后的操作使用。最后一步则是调用了`classify_pix_cls_2dim`函数完成实际的分类工作并将获得的目标对象轮廓显示出来。 #### 阈值分割方法概述及其应用实例 除了上述提到的方法外,在某些情况下也可以采用更为传统的阈值化技术来进行简单有效的二值化处理。Halcon提供了多种不同的阈值分割工具,比如: - `threshold`: 对单个灰度级图像实施固定的全局阈值; - `dyn_threshold`: 动态调整局部窗口内的最优切割点; - `binary_threshold`: 基础版黑白反转功能; - `auto_threshold`: 自动选取合适的分离界限; - `fast_threshold`: 快速版本适用于实时应用场景; - `var_threshold`: 可变阈值方案支持多尺度特性检测[^3]。 下面给出一段具体的应用场景——OTSU自动寻优法为例说明其基本流程: ```hdevelop * 导入待测样本数据集 read_image(Image,'mreut') * 执行Otsu算法寻找最佳门限参数 binarize_auto(Image,BinImage,'otsu',MinSize) * 绘制边界框标记感兴趣区位置 connection(BinImage,ConnectedRegions) select_shape(ConnectedRegions,SelectedRegions,'area','and',[500,inf]) smallest_rectangle1(SelectedRegions,Row1,Column1,Row2,Column2) * 展现原图连同标注后的矩形范围一起呈现给用户查看 dev_display(Image) disp_message(WindowHandle,['Object detected at:', Row1, Column1, '-', Row2, Column2],'window') ``` 此脚本先是加载了一张测试用的照片文件,随后借助内置函数实现了自动化地确定最适切分线的过程,从而区分前景目标物和其他背景杂波部分。紧接着定位到了所有符合条件的大面积连续区块,并围绕它们画出了最小外包络矩形加以突出展示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值