高斯分类器-水果识别

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

原图:770f70dd69f159f06b5678e2b5e77e68.jpeg

结果:

0d9f6fc39b778d5213268732a0e9f2fd.jpeg

代码如下(Halcon实现):

*读取图片
ImageFiles := []
ImageFiles[0] := 'F:/HALCON/fruits/citrus_fruits_01.png'
ImageFiles[1] := 'F:/HALCON/fruits/citrus_fruits_02.png'
ImageFiles[2] := 'F:/HALCON/fruits/citrus_fruits_03.png'
ImageFiles[3] := 'F:/HALCON/fruits/citrus_fruits_04.png'
ImageFiles[4] := 'F:/HALCON/fruits/citrus_fruits_05.png'
ImageFiles[5] := 'F:/HALCON/fruits/citrus_fruits_06.png'
ImageFiles[6] := 'F:/HALCON/fruits/citrus_fruits_07.png'
ImageFiles[7] := 'F:/HALCON/fruits/citrus_fruits_08.png'
ImageFiles[8] := 'F:/HALCON/fruits/citrus_fruits_09.png'
ImageFiles[9] := 'F:/HALCON/fruits/citrus_fruits_10.png'
ImageFiles[10] := 'F:/HALCON/fruits/citrus_fruits_11.png'
ImageFiles[11] := 'F:/HALCON/fruits/citrus_fruits_12.png'
ImageFiles[12] := 'F:/HALCON/fruits/citrus_fruits_13.png'
ImageFiles[13] := 'F:/HALCON/fruits/citrus_fruits_14.png'
ImageFiles[14] := 'F:/HALCON/fruits/citrus_fruits_15.png'


*关闭窗口
dev_close_window ( )
*读图片
read_image (Image, ImageFiles[0])
*获取图片大小
get_image_size (Image, Width, Height)
*新建窗口
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
*设置填充模式-边缘填充
dev_set_draw ('margin')
*设置线宽
dev_set_line_width (3)


*名称变量
FeaturName :=['橙子','柠檬']


**创建分类器


create_class_gmm (2, 2, 1, 'spherical', 'normalization', 10, 42, GMMHandle)
*for循环
for i := 0 to 3 by 1
*读图片
read_image (Image, ImageFiles[i])
*转换3通道图像为3个单通道图像
decompose3 (Image, Image1, Image2, Image3)
*阈值处理
threshold (Image1, Region, 50, 255)
*填充区域
fill_up (Region, RegionFillUp)
*连通区域
connection (RegionFillUp, ConnectedRegions)
*区域选择-面积
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)
*对象计数
count_obj (SelectedRegions, Number)
*for循环
for j := 1 to Number by 1
{
*选择对象
select_obj (SelectedRegions, ObjectSelected, j)
*计算对象圆度
circularity (ObjectSelected, Circularity)
*计算对象面积和中心坐标
area_center (ObjectSelected, Area, Row, Column)


*特征转换实数
FeaturesVector :=real([Circularity, Area])
*特征向量分别增加到不同的类训练样本
if (i<2)
{
*橘子的面积和圆度特征增加到橘子的类别中
add_sample_class_gmm (GMMHandle, FeaturesVector, 0, 0)


}
else
{
*柠檬的面积和圆度特征增加到柠檬的类别中
add_sample_class_gmm (GMMHandle, FeaturesVector, 1, 0)
}
endif


}
endfor


endfor


*训练分类器
train_class_gmm (GMMHandle, 100, 0.001, 'training', 0.0001, Centers, Iter)


*提取图片的特征,使用前面已经训练好的分类器进行分类
*for循环
for Index := 0 to |ImageFiles| - 1 by 1
*读图片
read_image (Image, ImageFiles[Index])
*转换3通道图像为3个单通道图像
decompose3 (Image, Image1, Image2, Image3)
*阈值处理
threshold (Image1, Region, 50, 255)
*填充区域
fill_up (Region, RegionFillUp)
*连通区域
connection (RegionFillUp, ConnectedRegions)
*区域选择-面积
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 150, 99999)
*对象计数
count_obj (SelectedRegions, Number)
*显示图像-Image
dev_display (Image)
*for循环
for j := 1 to Number by 1
{
*选择区域
select_obj (SelectedRegions, ObjectSelected, j)
*计算区域圆度
circularity (ObjectSelected, Circularity)
*计算区域的面积和中心坐标
area_center (ObjectSelected, Area, Row, Column)
*特征转换实数-圆度、面积
FeaturesVector :=real([Circularity, Area])
*使用分类器进行分类
classify_class_gmm (GMMHandle, FeaturesVector, 1, ClassID, ClassProb, Density, KSigmaProb)
*显示识别到的名称
disp_message (WindowHandle, FeaturName[ClassID], 'window', Row, Column-50, 'blue', 'true')
*显示K-Sigma值
disp_message (WindowHandle, 'K-Sigma:'+KSigmaProb, 'window', Row+30, Column-50, 'blue', 'true')


endfor


stop ( )


endfor


*清除分类器,释放内存


clear_class_gmm (GMMHandle)

注:

1>.分类器的创建.

2>.增加特征到分类器中.

3>.训练分类器.

4>.使用分类器进行分类 -识别.

5>.本例中分类特征是圆度和面积(也可以增加颜色特征).

本文仅做学术分享,如有侵权,请联系删文。

 
 

好消息!

小白学视觉知识星球

开始面向外开放啦👇👇👇

 
 

677634ee43d908d7df4f8b092fc9eb3e.jpeg

下载1:OpenCV-Contrib扩展模块中文版教程

在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。


下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。


下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。


交流群

欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值