gpt4 book ai didi

image-processing - 标识识别——如何提高性能

转载 作者:行者123 更新时间:2023-12-04 08:32:16 26 4
gpt4 key购买 nike

我正在从事一个识别电视 channel 的项目。我正在拍摄糟糕的 channel 照片,我尽量避开背景并从标志的中心拍摄样本。我认识 4 个不同的标志,这里是模板:

Channel1 Channel2 Channel3 Channel4

我的模板匹配算法是如何工作的:
给定 4 个大小为 100x100 的模板,每个模板代表一个不同的电视 channel ,每个模板都有不同的阈值(概率)。用户是从电视机上抓取logo,那么算法就是: - 在每个模板上运行 4 个独立的模板匹配,以接收每个模板与捕获的图像匹配的概率。 - 对于每个信道概率,如果信道的概率低于信道的阈值,则概率变为0; - 宣布公认的标志是概率最高的标志。如果所有概率都为0,则宣布“不承认”。

例如,如果我得到一个概率为 0.85、阈值为 0.9 的 channel ,而第二个 channel 的概率为 0.8、阈值为 0.75,则第二个 channel “获胜”。

当我为其中一个 Logo 拍照时,95% 的情况下它都能识别出照片。

当前结果:

  • 尝试检测第一个(“笑脸” Logo )时,在 10 次检测中,我得到了 10 次正确检测。对于正确模板和图像之间的模板匹配,我得到的概率在 0.91 到 0.94 之间。对于其他 Logo ,我得到的概率在 0.77 到 0.91 之间。
  • 尝试检测第二个(“绿色” Logo )时,在 10 次检测中我得到了 10 次正确检测。对于正确模板和图像之间的模板匹配,我得到的概率在 0.78 到 0.91 之间。对于其他 Logo ,我得到的概率在 0.71 到 0.83 之间(但由于阈值较高,检测成功)。
  • 当尝试检测第三个(“圆形” Logo )时,在 10 次检测中我得到了 9 次正确检测。对于正确模板和图像之间的模板匹配,我得到的概率在 0.83 到 0.92 之间。对于其他 Logo ,我得到的概率在 0.73 到 0.91 之间。
  • 当尝试检测第四个(“黑白” Logo )时,在 10 次检测中我得到了 10 次正确检测。对于正确模板和图像之间的模板匹配,我得到的概率在 0.91 到 0.94 之间。对于其他 Logo ,我得到的概率在 0.78 到 0.92 之间。
  • 当尝试检测“负面”图像时,很多时候我都会检测到 Logo (这很糟糕)。例如,如果我拍摄一张完整的白纸的图像,它会以超过 0.9 的概率检测到第一个、第三个和第四个 Logo

我如何改进或更改我的算法,以便在“负面”图像上获得更好的结果?

感谢您的帮助,

埃亚尔

最佳答案

这完全取决于您如何根据模板计算 channel 概率。您使用的是颜色直方图还是梯度直方图,然后查看您的模板和测试图像之间的直方图差异?

另一种方法是从测试图像计算特征向量,例如梯度直方图和颜色直方图的串联。然后,手动创建一个训练数据库,其中您知道标签(1、2、3 或 4,具体取决于图像中可见的标签),您可以将硬编码标签以及直方图特征输入到分类器例程。我推荐LIBSVM为此,scikits.learn在 Python 中实现这一点很容易。

这将产生一个支持向量机分类器,它将新图像的特征向量与训练集中的支持向量进行比较,并确定最有可能出现在图像中的正确标签。然后,如果您想要产生概率而不仅仅是预测标签的东西,您可以在此 SVM 之上拟合一个逻辑模型。

开始学习此类机器学习的两本好书是 Pattern Classification ,杜达、哈特和斯托克,以及 Pattern Recognition and Machine Learning主教。

可以找到我为在 Python 中实现 Poselet 和定向梯度直方图而编写的一些乱七八糟的 Python 代码 linked here ;也许您可以从中获取一些代码片段,它们将适合您的任务。

关于image-processing - 标识识别——如何提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9735715/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com