图像分割之高斯混合模型
使用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. 使用区域的平均灰度值绘制区域。
标签:Mixture,GMM,gmm,WindowHandle,dev,分类器,Message,class From: https://www.cnblogs.com/echo-efun/p/18058474