首页 > 其他分享 >分类器——高斯混合模型之水果分类

分类器——高斯混合模型之水果分类

时间:2024-03-07 15:26:51浏览次数:24  
标签:水果 高斯 Image SelectedRegions dev 分类器 window display

* 此示例程序演示如何应用通用 GMM
* 使用“面积”和“圆度”特征区分柑橘类水果的分类。此外,还对提取的水果的 2D 特征空间进行了可视化。
* 
read_image (Image, 'color/citrus_fruits_01')
get_image_pointer1 (Image, Pointer, Type, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width, Height, 'white', WindowHandle)
set_display_font (WindowHandle, 12, 'mono', 'true', 'false')
dev_set_draw ('margin')
dev_set_line_width (2)
dev_display (Image)
dev_update_window ('off')
dev_update_pc ('off')
dev_update_var ('off')
* 
FeaturesArea := []
FeaturesCircularity := []
ClassName := ['橘子','柠檬']
* 
* 创建一个高斯混合模型分类器
create_class_gmm (2, 2, 1, 'spherical', 'normalization', 10, 42, GMMHandle)
* 
* 增加训练样本
for I := 1 to 4 by 1
    read_image (Image, 'color/citrus_fruits_' + I$'.2d')
    dev_display (Image)
    * 获取样本区域
    get_regions (Image, SelectedRegions)
    dev_display (SelectedRegions)
    count_obj (SelectedRegions, NumberObjects)
    for J := 1 to NumberObjects by 1
        select_obj (SelectedRegions, ObjectSelected, J)
        get_features (ObjectSelected, WindowHandle, Circularity, Area, RowRegionCenter, ColumnRegionCenter)
        FeaturesArea := [FeaturesArea,Area]
        FeaturesCircularity := [FeaturesCircularity,Circularity]
        *样本圆度和面积特征用于,训练GMM模型
        FeatureVector := real([Circularity,Area])
        if (I <= 2)
            *前两张图像为橘子的样本
            add_sample_class_gmm (GMMHandle, FeatureVector, 0, 0)
            disp_message (WindowHandle, '至样本增加:' + ClassName[0], 'window', RowRegionCenter, ColumnRegionCenter - 100, 'white', 'false')
        else
            *从第三张图像为柠檬的样本
            add_sample_class_gmm (GMMHandle, FeatureVector, 1, 0)
            disp_message (WindowHandle, '至样本增加:' + ClassName[1], 'window', RowRegionCenter, ColumnRegionCenter - 100, 'white', 'false')
        endif
    endfor
    disp_continue_message (WindowHandle, 'white', 'false')
    stop ()
endfor
dev_clear_window ()
* 
*可视化样本特征空间
visualize_2D_feature_space (Cross, Height, Width, WindowHandle, FeaturesArea[0:5], FeaturesCircularity[0:5], 'orange', 18)
* 'oranges', 40, 440
visualize_2D_feature_space (Cross, Height, Width, WindowHandle, FeaturesArea[6:11], FeaturesCircularity[6:11], 'green', 18)
* 'lemons', 70, 440
disp_continue_message (WindowHandle, 'white', 'false')
stop ()
* 
* 训练分类器
train_class_gmm (GMMHandle, 100, 0.001, 'training', 0.0001, Centers, Iter)
* 
* 开始分类
for I := 1 to 15 by 1
    read_image (Image, 'color/citrus_fruits_' + I$'.2d')
    dev_display (Image)
    * 'Classify Image', 10, 10
    get_regions (Image, SelectedRegions)
    dev_display (SelectedRegions)
    count_obj (SelectedRegions, NumberObjects)
    for J := 1 to NumberObjects by 1
        select_obj (SelectedRegions, ObjectSelected, J)
        get_features (ObjectSelected, WindowHandle, Circularity, Area, RowRegionCenter, ColumnRegionCenter)
        FeaturesArea := [FeaturesArea,Area]
        FeaturesCircularity := [FeaturesCircularity,Circularity]
        FeatureVector := real([Circularity,Area])
        classify_class_gmm (GMMHandle, FeatureVector, 1, ClassID, ClassProb, Density, KSigmaProb)
        disp_message (WindowHandle, '得分最高类: ' + ClassName[ClassID], 'window', RowRegionCenter, ColumnRegionCenter - 100,'white', 'false')
        disp_message (WindowHandle, '得分: ' + KSigmaProb, 'window', RowRegionCenter + 30, ColumnRegionCenter - 100, 'white', 'false')
    endfor
    if (I != 15)
        disp_continue_message (WindowHandle,'white', 'false')
    endif
    stop ()
endfor
* 
* 释放分类器内存
clear_class_gmm (GMMHandle)

1.样本训练

 2.样本空间特征统计

 3.分类结果

 

 

 

标签:水果,高斯,Image,SelectedRegions,dev,分类器,window,display
From: https://www.cnblogs.com/echo-efun/p/18058962

相关文章

  • 分类器——高斯混合模型/Gaussian-Mixture-Models(GMM)之图像分割
    图像分割之高斯混合模型使用GMM的步骤如下:首先,GMM由create_class_gmm创建。然后,通过add_sample_class_gmm添加训练向量,然后可以使用write_samples_class_gmm将它们写入磁盘。通过train_class_gmm确定分类器中心参数(如上定义)。此外,它们可以与write_class_gmm一起保存,以便以后......
  • matlab用高斯曲线拟合模型分析疫情数据|附代码数据
    原文链接:http://tecdat.cn/?p=19211最近我们被客户要求撰写关于疫情数据的研究报告,包括一些图形和统计输出。本文用matlab分析疫情数据集 数据源我们检查解压缩的文件。包含:confirmed.csv-确诊病例的时间序列数据deaths.csv-死亡人数的时间序列数据recovered.csv-......
  • Presto适配高斯数据库
    Presto是什么Presto是一个分布式SQL查询引擎,旨在查询大型数据集分布在一个或多个异构数据源上。笔者所参与的项目主要使用Presto做数据探查和数据分析。Presto架构Presto查询引擎是一个Master-Slave的架构,由一个Coordinator节点,一个DiscoveryServer节点,多个Worker节点组......
  • 904. 水果成篮C
    inttotalFruit(int*fruits,intfruitsSize){if(fruitsSize<=2)returnfruitsSize;inta[2]={-1,-1};//蓝子空intmax=0,n=1;inthead=0,tail=0;//从head摘到taila[0]=fruits[0];intfad=0,tad=0;while(head<=tail&&tail<......
  • 高斯消元 学习笔记
    \[\Large\text{GaussianElimination}\]数学上,高斯消元法(或译:高斯消去法),是线性代数规划中的一个算法,可用来为线性方程组求解。——百度百科说实话,我不相信这是高斯发明的。感觉像是个小学生都学过的加减消元法。它的时间复杂度与方程个数、未知数个数有关,一般来讲,是\(O......
  • 高斯消元
    大暴力应用:求解线性方程前置知识:矩阵操作对于方程组\[\begin{cases}a_{11}x_1+a_{12}x_2+\cdots+a_{1n}x_n=m_1\\a_{21}x_1+a_{22}x_2+\cdots+a_{2n}x_n=m_2\\\cdots\\a_{n1}x_1+a_{n2}x_2+\cdots+a_{nn}x_n=m_n\\\end{cases}\]我们将他的......
  • 高斯消元
    高斯消元板题[SDOI2006]线性方程组(别问我为什么不是【模板】高斯消元法,这个太**了)思路首先需要引入一个定义增广矩阵。所以一个\(n\)元线性方程组就可以抽象成一个矩阵,\(a\)为系数,\(b\)为方程的常数项:\(\begin{bmatrix}a_{11}&\cdots&a_{1n}&b_{1}\\\vdots&\ddots&\vd......
  • 使用核模型高斯过程(KMGPs)进行数据建模
    核模型高斯过程(KMGPs)作为一种复杂的工具可以处理各种数据集的复杂性。他通过核函数来扩展高斯过程的传统概念。本文将深入探讨kmgp的理论基础、实际应用以及它们所面临的挑战。核模型高斯过程是机器学习和统计学中对传统高斯过程的一种扩展。要理解kmgp,首先掌握高斯过程的基础......
  • 高斯消元法
    高斯消元高斯消元是线性代数规划中的一个算法,可用来为线性方程组求解,高斯消元法可以用在电脑中来解决数千条等式及未知数。ps:若要解出\(n\)个未知数的话,则需要\(n\)个有意义的方程。例如有\(n\)个方程组,其中一个是\(0\timesx=0\timesy\)你会发现无论\(x\)和\(......
  • 【板子】高斯约旦消元法(可判解)
    //lg2455#include<bits/stdc++.h>usingnamespacestd;constdoubleeps=0.000001;constintN=105;doublea[N][N];intn;intnowline=1;//存储当前行voidGaussJordan(){ for(inti=1;i<=n;i++)//枚举列若方程有唯一解则与枚举行列等效 { intmxline=no......