分类器——高斯混合模型/Gaussian-Mixture-Models(GMM)之图像分割

图像分割之高斯混合模型

使用GMM的步骤如下:

首先,GMM由create_class_gmm创建。

然后,通过add_sample_class_gmm添加训练向量,然后可以使用write_samples_class_gmm将它们写入磁盘。

通过train_class_gmm确定分类器中心参数(如上定义)。

此外,它们可以与write_class_gmm一起保存,以便以后分类。

**********************************************************************************************************

如下实例,将树莓的红色和绿色分割出来

*分类器使用2种不同的颜色进行训练。
*与其他分类器相比,未经训练的颜色很容易被拒绝。
dev_update_off ()
dev_close_window ()
dev_open_window (0, 0, 735, 485, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_colored (6)
dev_set_line_width (3)
read_image (Image, 'test')
dev_display (Image)
Color := ['indian red','cornflower blue','white','black','yellow']

*创建包含2个类的训练样本的区域
draw_circle(WindowHandle, Row, Column, Radius)
gen_circle(Red, Row, Column, Radius)
draw_circle(WindowHandle, Row, Column, Radius)
gen_circle(Green, Row, Column, Radius)
concat_obj(Green,Red,Classes)

Message := 'Training regions for the color classifier'
disp_message (WindowHandle, Message, 'window', 12, 12, 'cyan', 'false')
disp_continue_message (WindowHandle, 'cyan', 'false')
stop ()

*创建分类器和添加分类器样本
create_class_gmm (3, 2, [1,10], 'full', 'none', 2, 42, GMMHandle)
add_samples_image_class_gmm (Image, Classes, GMMHandle, 2.0)

dev_display (Image)
Message := '训练中 ...'
disp_message (WindowHandle, Message, 'window', 12, 12, 'cyan', 'false')

*训练分类器
train_class_gmm (GMMHandle, 500, 1e-4, 'uniform', 1e-4, Centers, Iter)
Message := Message + ' 完成.'
Message[1] := '分割/分类图像'
disp_message (WindowHandle, Message, 'window', 12, 12, 'cyan', 'false')

*分割/分类图像
classify_image_class_gmm (Image, ClassRegions, GMMHandle, 0.0001)
region_to_mean (ClassRegions, Image, ImageClass)
dev_display (ImageClass)
Message[1] := Message[1] + ' 完成.'
disp_message (WindowHandle, Message, 'window', 12, 12, 'cyan', 'false')

原图

 分割后图像

1.create_class_gmm — Create a Gaussian Mixture Model for classification  创建一个高斯混合模型分类器

  create_class_gmm( : : NumDim, NumClasses, NumCenters, CovarType, Preprocessing, NumComponents, RandSeed : GMMHandle)

    *NumDim   数据维数,如2D图像数据为2

    *NumClasses  分类器分类种数

    *NumCenters  每个类中心数量设置

2.region_to_mean — Paint regions with their average gray value.  使用区域的平均灰度值绘制区域。

 

posted @   echo-efun  阅读(278)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示