自动选择最佳特征进行分类-SVM (HALOCN)

HALCON12里的example,classify_pills_auto_select_features.hdev.

执行流程:

1.选取相关特征(本例选取color和region组的所有特征)
(本例用get_feature_names( : : GroupNames : Names),根据特征组名得到一系列特征
2.创建训练数据,添加样本的相关特征至训练数据结构中。
 (本例用calculate_features(RegionImage : : FeatureNames : Features)),根据特征名计算特征
3.自动选择最适合特征
(本例用select_feature_set_svm( : : ClassTrainDataHandleSelectionMethodGenParamNamesGenParamValues : SVMHandle,SelectedFeatureIndicesScore)
4.用分类器对测试图片进行分类

* This example shows how to use the calculate_feature_set
* procedure library together with the automatic feature selection
* to classify different pill types using a SVM classifier.
*  该示例演示如何从calculate_feature得到的特征,进行自动最佳特征选择,
*  并使用SVM分类器对各类型的pill进行分类。
* First, the pills are segmented in some training images.
* Then, a list of color and region features are calculated
* for each pill and stored in a classifier training data structure.
* After that, the best features are automatically selected
* with the operator select_feature_set_svm, and finally
* the resulting classifier is applied on a number of test
* images.
* 首先,对包含有pills的训练图片进行分割。
* 计算color和region组相关的特征。
* 每1个pill的相关特征添加至分类器训练数据结构里。
* 所有的训练数据添加完毕,用select_feature_set_svm
* 也可以用其他的分类器类型选择比如(select_feature_set_knn(mlp,gmm))
* 自动选择最佳特征,最后应用分类器对测试图像分类。
* Init visualization
dev_close_window ()
dev_update_off ()
read_image (Image, ‘color/pills_class_01‘)
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_set_draw (‘margin‘)
dev_set_line_width (2)
set_display_font (WindowHandle, 16, ‘mono‘, ‘true‘, ‘false‘)
dev_set_colored (12)
*
PillNames := [‘big_round_red‘,‘round_green‘,‘small_round_red‘,‘yellow_trans‘,‘brown‘,‘brown_green‘]
PillNames := [PillNames,‘brown_grain‘,‘purple‘,‘turquese‘,‘pink‘]
PillColors := [‘#D08080‘,‘#ADC691‘,‘#FFB0A1‘,‘#D5C398‘,‘#B59C87‘,‘#BCB3B8‘,‘#B7ACA1‘,‘#908E99‘,‘#97B9BC‘,‘#C0ABA9‘]
*
* Check, which features and feature groups are available
query_feature_group_names (AvailableGroupNames)
query_feature_names_by_group (AvailableGroupNames, AvailableFeatureNames, AvailableCorrespondingGroups)
*
* Generate list of color and region features using the
* calculate_feature_set library procedures.
* 获取相关特征组的对应的特征名称(1个特征组包含许多特征),比如region组,有area,width,height,phi,ra,rb等。
* 获取相关特征的特征向量长度,比如rgb_mean特征,特征向量长度为3(每个通道对应1个值),area特征向量长度为1。
FeatureGroups := [‘region‘,‘color‘]
get_feature_names (FeatureGroups, FeatureNames)
get_feature_lengths (FeatureNames, FeatureLengths)
*
* Create and prepare classifier training data structure
* 创建和准备分类训练数据结构
create_class_train_data (sum(FeatureLengths), ClassTrainDataHandle)
set_feature_lengths_class_train_data (ClassTrainDataHandle, FeatureLengths, FeatureNames)
*
* Training loop  循环训练
*
for I := 1 to 10 by 1
    * Segment pills in training image
    read_image (Image, ‘color/pills_class_‘ + I$‘.2d‘)
    segment_pills (Image, Pills)
    * Display segmentation result
    dev_display (Image)
    dev_set_color (‘white‘)
    dev_display (Pills)
    disp_message (WindowHandle, ‘Collecting ‘ + PillNames[I - 1] + ‘ samples‘, ‘window‘, 12, 12, ‘black‘, ‘true‘)
    *
    * Calculate features for all segmented pills and store
    * them in the training data structure
    count_obj (Pills, Number)
    calculate_features (Pills, Image, FeatureNames, Features)
    add_sample_class_train_data (ClassTrainDataHandle, ‘feature_column‘, Features, I - 1)
    * 以上注意第二参数‘feature_column‘的选择,此例中由于Number的数大于1,以特征列做为顺序。
    * Visualize processed pills
    dev_set_color (PillColors[I - 1])
    dev_display (Pills)
    GroupList := sum(‘\‘‘ + FeatureGroups + ‘\‘, ‘)
    tuple_str_first_n (GroupList, strlen(GroupList) - 3, GroupList)
    Message := ‘Calculate ‘ + |FeatureNames| + ‘ features from following feature groups:‘
    disp_message (WindowHandle, [Message,GroupList], ‘window‘, 40, 12, ‘black‘, ‘true‘)
    disp_continue_message (WindowHandle, ‘black‘, ‘true‘)
    stop ()
endfor
*
* Automatically select suitable features from the training data
* 自动选择训练数据的最合适的特征
disp_message (WindowHandle, ‘Selecting optimal features...‘, ‘window‘, 90, 12, ‘black‘, ‘true‘)
select_feature_set_svm (ClassTrainDataHandle, ‘greedy‘, [], [], SVMHandle, SelectedFeatures, Score)
disp_message (WindowHandle, [‘Selected:‘,SelectedFeatures], ‘window‘, 120, 12, ‘black‘, ‘true‘)
disp_continue_message (WindowHandle, ‘black‘, ‘true‘)
stop ()
* Free memory, because the training data is no longer used
clear_class_train_data (ClassTrainDataHandle)
*
* Classify pills in test images
* using the automatically trained classifier with the
* automatically selected features
* 用分类器对测试图片进行测试,使用训练分类器和自动选择的最佳特征。
dev_set_line_width (4)
dev_set_colored (12)
for I := 1 to 3 by 1
    * Segment pills in test image
    read_image (Image, ‘color/pills_test_‘ + I$‘.2d‘)
    dev_display (Image)
    segment_pills (Image, Pills)
    * For all pills, calculate selected features
    * using the calculate_features procedure from the
    * calculate_feature_set library and classify them.
    PillsIDs := []
    count_obj (Pills, NPills)
    for P := 1 to NPills by 1
        select_obj (Pills, PillSelected, P)
        calculate_features (PillSelected, Image, SelectedFeatures, Features)
        classify_class_svm (SVMHandle, real(Features), 1, Class)
        * Display results
        PillsIDs := [PillsIDs,Class]
        dev_set_color (PillColors[Class])
        dev_display (PillSelected)
        area_center (PillSelected, Area, Row, Column)
        disp_message (WindowHandle, Class + 1, ‘image‘, Row, Column - 10, ‘black‘, ‘true‘)
    endfor
    disp_message (WindowHandle, ‘Classify image ‘ + I + ‘ of 3 using following features:‘, ‘window‘, 12, 12, ‘black‘, ‘true‘)
    disp_message (WindowHandle, SelectedFeatures, ‘window‘, 40, 12, ‘black‘, ‘true‘)
    if (I < 3)
        disp_continue_message (WindowHandle, ‘black‘, ‘true‘)
        stop ()
    endif
endfor
* Clean up memory
* 清除内存
clear_class_svm (SVMHandle)

原文地址:https://www.cnblogs.com/touch-skyer/p/9087486.html

时间: 2024-11-09 15:12:51

自动选择最佳特征进行分类-SVM (HALOCN)的相关文章

SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)

1.概念:SpringCloudConfig 基础配置 2.具体内容 通过名词就可以发现,SpringCloudConfig 核心作用一定就在于进行配置文件的管理上.也就是说为了更好的进行所有微服务的配置项的管理,在 SpringCloud 设计架构里面就考虑到了针对于所有的核心配置文件(application.yml)进行的一项统一管理的工具. 2.1.SpringCloudConfig 的基本概念 现在可以思考一个问题:在一个实际的项目开发过程之中,有可能会出现有上百个微服务(创建微服务的标

C#自动选择出系统中最合适的IP地址

写这个是因为很长时间以来,碰到过很多次这个问题,但都没当回事,这次又碰到了这个老问题,无奈百度了一圈儿未果,身边又没有大牛可以请教,就自己先“总结”了一套方法,一来给自己记录,二来如果碰巧能有朋友看到并为他解决了同样的困扰我将感到很爽. 起因:凡是网络程序,Coder似乎不可避免要碰到,你的代码如何在不同的机器上挑选出最合适的那个IP来通讯,因为如果打开一个应用程序让用户来选择用哪个IP地址和端口来通讯似乎就代表着这是个多么低端的程序,多么低能的程序员,所以一定要自动选择,用户 0 感知,就像伟

ECshop网点程序优化-后台添加类目自动选择上次父类目并计算Sort Order

如果在ECshop后台批量添加过大量类目的人都能体会到是多么的不方便(这点还是要说一下ECshop的产品经理,细节上还是要多注意),每次添加都需要在几百个类目里面找到要添加的父类目也是一个麻烦事,比如我的 Tao Fashion 站,里面一共有400多个类目 每次添加一个新类目,即使是同一父类目下的,都需要从头再找一遍,非常不方便,设置类目的顺序的时候,也要自己记着这个父类目下已经添加几个了,记着下一个添加的时候+1,经常弄错. 咱是新人类,要用技术的办法解决这个问题,实现在Category L

【iOS开发每日小笔记(一)】UIPickerView 自动选择某个component的某个row

从这篇文章开始我将会把每天在开发过程中遇到的,可以用很短的文章.很小的demo演示解释出来的小心得小技巧,分享在[iOS开发每日小笔记]这个分类中.该分类的文章,内容涉及的知识点可能是很简单的.或是用很短代码片段就能实现的,但在我看来它们会给用户体验.代码效率得到一些提升,记录在这里,90%的作用是帮助自己回顾.记忆.复习.如果看官觉得太easy,可以选择:1,移步[iOS探究]分类,对那里的文章进行斧正:2,在本文的评论里狠狠吐槽,再关掉页面!感谢! 今天在项目中遇到这样一个小问题:我使用UI

C#下点击右键之后自动选择为当前选中的节点

private void treeView1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { if(e.Button==MouseButtons.Right) { TreeNode tn=treeView1.GetNodeAt(e.X,e.Y); if(tn!=null)treeView1.SelectedNode = tn; } } 经常遇到那种你本来右键选择了一个节点但是其实还没有选上这个问题,执行这个代码就

Xcode自动选择证书

从xcode3时代习惯了手动选择证书,即 Provisioning Profile和 Code Signing Identify. 而随着团队扩大,应用量增多,需要管理的证书也越来越多,每次从长长的list中寻找需要的那个证书,心情都有点忧伤. 而苹果也给出了更合适的解决方案,xcode 自动选择provisioning profile.这个方案的好处在于,更换证书.团队使用证书不同等情况下,无需再重新设置证书信息. 以ios工程为例,以下列出最核心步骤: 1.Project -> Build

决策树算法(四)——选取最佳特征划分数据集

写在前面的话 咦,好神奇,我今天发现我莫名其妙的成了小三.原来我被卖了还不知道,还帮人家宣传博客和微信公众账号.我放弃了自己规划好的人生,然后决定跟另一个在一起,然后发现原来他有女朋友.我今天有点头大哎. 哈哈哈哈哈.原来被劈腿也会被我遇到呢. 可怜了我这个系列的博客,写的这么好却没有人知道欣赏.就像我这么好,哈哈哈,我好不要脸,却.... 如果您有任何地方看不懂的,那一定是我写的不好,请您告诉我,我会争取写的更加简单易懂! 如果您有任何地方看着不爽,请您尽情的喷,使劲的喷,不要命的喷,您的槽点

PMC 荣膺ChannelPro读者选择最佳存储控制器金奖

 PMC荣膺ChannelPro读者选择最佳存储控制器金奖 Adaptec RAID控制器脱颖而出夺取桂冠 引领大数据连接.传送以及存储,提供创新半导体及软件解决方案的PMC?公司(纳斯达克代码:PMCS)今日宣布,获得ChannelPro-SMB 2015年度读者选择最佳SAS/SATA RAID控制器金奖. PMC负责渠道和数据中心市场营销总监Toy Winslow谈到:"获得该奖项充分证实了我们的Adaptec产品在渠道市场上展现的卓越性能,兼容性和可扩展性.获得客户和合作伙伴对我们P

R in action读书笔记(11)-第八章:回归-- 选择“最佳”的回归模型

8.6 选择“最佳”的回归模型 8.6.1 模型比较 用基础安装中的anova()函数可以比较两个嵌套模型的拟合优度.所谓嵌套模型,即它的一 些项完全包含在另一个模型中 用anova()函数比较 > states<-as.data.frame(state.x77[,c("Murder","Population","Illiteracy","Income","Frost")]) > fit1