欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于SVD与角点检测的杂文字符号的聚类

程序员文章站 2024-02-11 13:40:28
...
 有以下这张文字与符号混合的图片,智能化目标是:找出类似的符号或文字,以便机器人去拾取:

基于SVD与角点检测的杂文字符号的聚类
本人测试了二种方案,现分享给大家:
方案一,划纵横格,从每一格子中读取RGB,存入矩阵中,再以SVD(矩阵奇异值分解)提取主对角线的前5个数据,再以欧氏距离找出五维向量的匹配者,也就是分类,截取部分数据如下表格:

690.3	430.9	354.9	282.4	228.3	<<<==[ 0,1 ]===
624	377.9	267.3	258.5	195.3	<<<==[ 0,2 ]===
626.7	368.2	277.8	246.6	193.5	<<--( 0,6 )--
617.9	381.9	275.5	254.7	208.9	<<--( 2,5 )--
634.1	371.7	269.7	246.6	188.1	<<--( 3,5 )--
625.6	383.1	262	256.7	205.4	<<--( 17,10 )--
902.7	405.9	372.6	300.4	236	<<<==[ 0,3 ]===
661.5	364.8	340.9	260.4	219.4	<<<==[ 0,4 ]===
649.5	363.3	329.5	268.3	213.1	<<--( 10,13 )--
651.7	387.5	330.6	293.5	256	<<<==[ 0,5 ]===
661.9	393.8	327.7	287.1	243.8	<<--( 7,4 )--
745.4	384.6	317	257.7	213.4	<<<==[ 0,7 ]===
747.6	412.5	351.1	306.7	291.2	<<<==[ 0,8 ]===
616.6	390.5	231.9	201.3	140.2	<<<==[ 0,9 ]===
717.1	372.1	307.2	260.8	200.8	<<<==[ 0,10 ]===
711.9	373.8	295.6	254.6	208.4	<<--( 7,0 )--
637.1	376.8	285.9	219.8	180.7	<<<==[ 0,11 ]===
645.5	375.4	282.9	233	186.2	<<--( 10,3 )--
638.5	382.9	276.9	219.9	190	<<--( 11,13 )--
634.2	378.3	295.7	221.7	184.1	<<--( 15,2 )--
626.7	379.3	290.4	221	196.3	<<--( 18,1 )--
631.4	376	272.8	218.6	185.7	<<--( 20,12 )--
668.2	371.1	289.4	247.3	223.2	<<<==[ 0,12 ]===
667.3	377.9	272.3	253.4	225.6	<<--( 3,10 )--

为方便观察,现以SVD的前三值生成的RGB框绘之:
基于SVD与角点检测的杂文字符号的聚类
在图片中不难发现,匹配错误的还真不少,当然其原因是SVD有主元素已经被自动排序了!

  方案二:腐蚀-->取连通域-->角点检测-->角点簇分类

首先上一张经过腐蚀后的图片:
基于SVD与角点检测的杂文字符号的聚类
在此基础上取Blobs,就不会将一些字的偏旁也拆开了,每一字基本是一个连通的域:
基于SVD与角点检测的杂文字符号的聚类

于是现在可对各Blobs[i]进行角点检测:
基于SVD与角点检测的杂文字符号的聚类最后,我将SVD匹配的优质结果与角点匹配的优质结果整合起来,框色取是SVD的:
基于SVD与角点检测的杂文字符号的聚类
这样就实现了机器人智能拾取,准确性大有提高.此类方案可应用于对小零件小产品的拾取与分类.
使用平台:Win7+C#2012, 引用库有:Accord,AForge,EmguCV.
-------------------- 原创: 微信[13058943056],于2020-03-08

相关标签: 二维视觉