【问题标题】:Advice for classifying symbols/images对符号/图像进行分类的建议
【发布时间】:2023-03-27 13:54:01
【问题描述】:

我正在从事一个需要对字符和符号进行分类的项目(基本上是 OCR,需要处理单个 ASCII 字符和符号,例如音乐符号)。我正在使用矢量图形(WPF 中的路径和字形),因此图像可以具有任何分辨率,并且旋转可以忽略不计。它需要对不在训练集中的字体和路径进行分类(并且可能从中学习)。性能很重要,但高精度优先。

我看过一些examples of image detection using Emgu CV(OpenCV 的.Net 包装器)。然而,我发现的示例和教程似乎专门处理图像检测而不是分类。我不需要在更大的图像中找到图像的实例,只需确定图像中的符号类型。

似乎有多种方法可供选择,可能起作用,我不知道从哪里开始。任何建议或有用的链接将不胜感激。

【问题讨论】:

    标签: image opencv classification


    【解决方案1】:

    您可能应该看一下论文:Gradient-Based Learning Applied to Document Recognition,尽管它指的是手写字母和数字。您还应该阅读 Belongie 和 Malik 的 Shape Context。您应该寻找的关键字是数字/字符/形状识别(不是检测,不是分类)。

    【讨论】:

    • 谢谢,我会看看并发布我的结果。
    • 我最终在 EmguCV 中使用了 EigenObjectRecognizer 类。感谢关键字提示。
    【解决方案2】:

    如果您使用 EmguCV,SURF 功能示例(StopSign 检测器)将是一个不错的起点。另一种(可能是互补的)方法是使用 MatchTemplate(..) 方法。

    但是我找到的示例和教程 似乎专门处理图像 检测而不是分类。一世 不需要找到一个实例 更大的图像中的图像,只是 确定符号的种类 图片。

    通过在图像中查找符号的实例,您实际上是在对其进行分类。不知道为什么你认为这不是你需要的。

        Image<Gray, float> imgMatch = imgSource.MatchTemplate(imgTemplate, Emgu.CV.CvEnum.TM_TYPE.CV_TM_CCOEFF_NORMED);
    
            double[] min, max;
            Point[] pointMin, pointMax;
            imgMatch.MinMax(out min, out max, out pointMin, out pointMax);
    //max[0] is the score
            if (max[0] >= (double) myThreshold)
            {
                Rectangle rect = new Rectangle(pointMax[0], new Size(imgTemplate.Width, imgTemplate.Height));
                imgSource.Draw(rect, new Bgr(Color.Aquamarine), 1);
            }
    

    max[0] 给出了最佳匹配的分数。

    【讨论】:

    • 这是我首先尝试的(使用“SURF 特征检测器”示例)。但是我不知道如何比较结果。它会找到一堆正确匹配的特征和一堆不正确(但接近)匹配的特征。你怎么知道哪一组特征匹配更好?附带说明一下,SURF 是旋转不变的(这很酷),但可能对我的情况有害。
    • 您确实知道您对每个匹配项(SURF 或模板匹配)都有一个匹配分数,这可以让您了解匹配的紧密程度。您还可以为 ExhaustiveTemplateMatching 类设置一个阈值,这样您就可以剔除不太相关的类。
    • 我以为一定是这样,但我找不到。谢谢。
    【解决方案3】:

    将您的所有图像都降低到某个标准分辨率(适当缩放和居中)。
    将画布分解成 n 个正方形或矩形块。

    对于每个块,您可以测量该块中黑色像素的数量或黑白之间的比率,并将其视为特征。

    现在您可以将图像表示为特征向量(每个特征源自不同的块),您可以使用许多标准分类算法来预测图像所属的类别。

    Google 'viola jones' 以获取此类更详细的方法。

    【讨论】:

    • 我尝试了一些非常接近这个的东西。它适用于以前见过的符号,但对于新字体/变体可能更好。我会做一些谷歌搜索。
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-15
    • 2020-07-18
    相关资源
    最近更新 更多