Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >自动识别图像中的模式

自动识别图像中的模式
EN

Stack Overflow用户
提问于 2010-07-14 14:34:06
回答 2查看 19.4K关注 0票数 9

最近,我从中央情报局世界事实手册下载了一些标志。现在我想把它们分类。

  1. 得到颜色
  2. 得到一些形状(星星、月亮等)

在浏览时,我看到了Python,它允许我提取颜色(即用于奥地利 )

代码语言:javascript
运行
AI代码解释
复制
#!/usr/bin/env python
import Image
bild = Image.open("au-lgflag.gif").convert("RGB")
bild.getcolors()
[(44748, (255, 255, 255)), (452, (236, 145, 146)), (653, (191, 147, 149)), ...)]

奇怪的是,奥地利国旗中只有两种颜色,但上面的输出显示了十多个颜色。你知道为什么吗?我的想法是只计算前5种颜色,因为我对每种颜色都不感兴趣,所以我会对64的倍数进行一些“规范化”(所以(236,145,146)变成(192,128,128))。

然而,目前我不知道提取更多信息的最佳方法是什么(如果图像中有一颗恒星)。否则)。你能给我一些怎么做的提示吗?

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-14 15:32:34

PIL只做基本的图像操作-打开、一些转换或过滤器,并保存到其他格式。

模式识别,是一个先进的图像处理领域的一部分和进化-它使用的算法远远不同于目前的PIL。

在Python中可以使用一些库和框架来进行模式识别(识别星星和卫星等等),尽管我向您提出了这样的建议:如果您希望这样做只是为了对一个0和几个coutnry标志进行分类,您应该手动进行,而不是尝试深入模式识别。

您对颜色数量的评论说明您根本不使用计算机图像。模式识别是硬核心,即使是python前端也是如此。(你不能指望现有的框架事先知道什么是“月亮”或“恒星”)

因此,对于少于500个图像,您可以求助于允许您手动标记图像并编写一些代码将标记链接到每个标志的软件。

至于颜色:计算机光栅图像是由像素组成的。这些是广场。在不同颜色之间的边界,如果一个像素在一种颜色上(比如白色),而它的邻居是一个完全不同的颜色(比如红色),那么这个边界就会出现锯齿状。这就是所谓的“混叠”。为了减少这一点,计算机软件在硬边界上混合颜色,创建中间颜色--这就是为什么一个PNG即使有两个明显的颜色,内部也可以有几个颜色。对于.JPG,更糟糕的是,因为我们使用的RGB颜色的四舍五入的十进制数甚至没有存储在图像中。

与模式识别不同的是,您可以通过使用每个组件中最重要的部分来缩小颜色的大小。我想说这两个最重要的部分就足够了。下面的python函数可以使用PIL提供的颜色计数来做到这一点:

代码语言:javascript
运行
AI代码解释
复制
def get_main_colors(col_list):
    main_colors = set()
    for index, color in col_list:
        main_colors.add(tuple(component >> 6 for component in color))
    return [tuple(component << 6 for component in color) for color in main_colors]

例如,用"get_main_colors(bild.get_colors())“来调用它。

下面是处理模式识别部分的另一个问题:python图像识别

票数 8
EN

Stack Overflow用户

发布于 2010-07-14 18:27:04

首先是一些简单的术语,以防万一:

分类器学习输出的输入映射。通过提供输入/输出对来训练分类器,例如,特征向量(如颜色信息)和标签(如“捷克国旗”)。在实践中,标签被表示为标量数。在您的示例中,您有一个多类问题,这仅仅意味着有两个以上可能的标签(显然,因为有两个以上的国旗)。多类分类器的训练可能比普通的二进制分类器要复杂一些,所以您可能需要搜索诸如“多类分类器”或“一对多分类器”这样的术语来为您研究最佳的方法。

关于这个问题:

我认为使用一个简单的分类器,比如k近邻,以颜色直方图作为特征向量,可以很容易地解决问题。特别是,我将使用HSV特征向量,而不是RGB特征向量。使用这种简单的分类器系统,例如:基于直方图的图像分类支持向量机,在文献中得到了一些很好的结果。本文使用了一种特殊的分类器--支持向量机(SVM)和HSV特征向量。HSV特征向量也避免了图像缩放和旋转的问题,例如,一个标志是1024x768 vs 640x480,或者是在图像中旋转45度的标志。

用于训练该算法的伪代码如下所示:

代码语言:javascript
运行
AI代码解释
复制
# training simple kNN -- just compute feature vectors, collect labels
X = []    # tuple (input example, label)
for training_image in data:
    x = get_hsv_vector(training_image)
    y = get_label(training_image)
    X.append((x,y))

# classification -- pick k closest feature vectors 
K = 3     # the 'k' in kNN -- how many similar featvecs to use
d = []    # (distance, label) tuples for scoring
x_test = get_hsv_vector(test_image)    # feature vector to be classified
for x_train in X:
    d.append((distance(x_test[0], x_train), x_test[1])

# sort distances, d, by closeness and pick top K labels for scoring
d.sort()
output = get_majority_vote([x[1] for x in d[:K]])

kNN分类器可以在几个python包中使用,并提供了良好的文档。它应该是相当容易转换到HSV颜色空间以及。如果你没有达到你想要的结果,你可以尝试改进你的特征向量或分类器。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3251069

复制
相关文章
IDE工具、文本编辑器的列块编辑模式
有时候需要对若干列进行一样的操作,比如在前一百行数据的最前边加上一样的字符,这时候可以通过列块编辑模式来快捷地实现这个效果。在列块编辑模式下,被选定的区域内的所有字符会被替换成你之后输入的字符。
雨临Lewis
2022/01/11
1.1K0
用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
数据库中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。
全栈程序员站长
2022/07/09
1.8K0
如何用JS实现网页上通过鼠标移动批量选择元素?
监测外部容器的mousedown、mousemove、mouseup事件来进行选择判断,大致dom结构如下:
房东的狗丶
2023/02/17
4.5K0
如何用JS实现网页上通过鼠标移动批量选择元素?
sublime 列选择 原
2016年11月17日 09:27:24 zzh_my 阅读数:20295 标签: sublime text 更多
拓荒者
2019/03/08
2.6K0
原 Intellij idea2017编辑
编辑器总览 基础 在创建和修改代码的时候,编辑器是是否有用的工具。所有的其他的编辑器也都支持书签,断点,语法高亮,代码提示,Zooming,代码折叠等。 当然这里还有很多诸如宏指令,高亮TODO,代码分析、事件、快捷智能导航的高级特性。可以使用setting中的editor配置编辑器环境。也可以通过ctrl+~的方式选择更改样式、主题、快捷键等。 这个编辑器是基本的,所有的语境菜单上的操作都是可用的。当然你也可以通过Window | Editor tabs上的节点来操作。 活动编辑器 当你打开一个文件编辑的
石奈子
2018/06/13
2.9K0
IDEA 2021.3 正式发布:支持远程开发、故障排查、Java和Spring等多项优化改进
在这个版本中的远程开发还不是一个正式版本,而是BETA版,但通过这个BETA版本,也可以体验IDEA“远程开发”给我们带来的全新体验。
程序猿DD
2021/12/02
6690
IDEA 2021.3 正式发布:支持远程开发、故障排查、Java和Spring等多项优化改进
IDEA 2021.3 正式发布:更新远程开发、故障排查、Java、Spring、工具等....
经过了好几轮的Beta测试,就在昨天,IDEA 2021.3版终于正式上线了,这也应该是IDEA 2021年最后一个大的版本了
一行Java
2022/04/07
1.7K0
IDEA 2021.3 正式发布:更新远程开发、故障排查、Java、Spring、工具等....
再见,Navicat!同事安利的这个IDEA的兄弟,真香!
其实,这个标题的话肯定会引出一些杠精,为了不给杠精留机会,多做一点说明:「Navicat 和 DataGrip 都是非常优秀的数据管理工具,各有所长,这里就不做对比了!你喜欢什么样的风格用什么样的产品,就我个人而言更喜欢 DataGrip 一些。」 把杠精安排的明明白白!
cxuan
2020/07/30
4.5K0
再见,Navicat!同事安利的这个IDEA的兄弟,真香!
性能优化-如何选择合适的列建立索引
1、在where从句,group by从句,order by从句,on从句中的列添加索引 2、索引字段越小越好(因为数据库数据存储单位是以“页”为单位的,数据存储的越多,IO也会越大) 3、离散度大的列放到联合索引的前面
cwl_java
2020/02/13
2.2K0
性能优化-如何选择合适的列建立索引
IDEA 官方数据库管理神器,比 Navicat 还香?
Atzuge|https://www.cnblogs.com/zuge/p/7397255.html
Guide哥
2021/12/01
2.6K0
IDEA 官方数据库管理神器,比 Navicat 还香?
『AndroidStudio』从新认识IDE之-整体概述
在读这篇文章之前,相信很多同学已经和Android Studio接触的比较多了。那当然也有不了解的或者没有认真静下心来研究过的同学。那么从这篇文章开始,在接下来会写关于Android Studio的一系列介绍,我们将非常详细的将Android Studio每一个细节讲述给您。无论您之前是否已经在使用还是从未使用过,相信都能获得新的认识。
吴延宝
2019/07/24
2.1K0
Python数据分析师该如何选择IDE
python是绝大多数数据分析师的必备工具之一,而一个好的IDE对于提高代码效率来说则至关重要。今天,仅就个人使用IDE的选择和习惯做以分享。
luanhz
2020/06/11
8290
房贷选择之银行选择(工厂模式)
之前我们找了一家银行进行了房贷资讯,房贷计算。今天我们去售楼部转了一下,哇哇这么多银行啊……我要选哪家呢?
大话swift
2019/07/04
9350
房贷选择之银行选择(工厂模式)
为何放弃Eclipse,选择IntelliJ IDEA
当你坚持用一周用IDEA后,你会真正的爱上它,哪怕前几天是痛苦的熬过来,到最后你也会真正的明白为什么我会让你选择它!!!且看下文!!
三哥
2018/12/24
1.1K0
常用的IDEA快捷键命令
F9 resume programe 恢复程序 Alt+F10 show execution point 显示执行断点 F8 Step Over 相当于eclipse的f6 跳到下一步 F7 Step Into 相当于eclipse的f5就是 进入到代码 Alt+shift+F7 Force Step Into 这个是强制进入代码 Shift+F8 Step Out 相当于eclipse的f8跳到下一个断点,也相当于eclipse的f7跳出函数 Atl+F9 Run To Cursor 运行到光标处 ctrl+shift+F9 debug运行java类 ctrl+shift+F10 正常运行java类 alt+F8 debug时选中查看值
chenchenchen
2023/01/30
2.3K0
【说站】Python DataFrame如何根据列值选择行
以上就是Python DataFrame根据列值选择行的方法,希望对大家有所帮助。
很酷的站长
2022/11/24
5.8K0
【说站】Python DataFrame如何根据列值选择行
工厂方法模式(延迟到子类来选择实现)
1、工厂方法模式理念介绍 2、它与简单方法模式的区别 3、推荐使用工厂方法的场景 4、在Android 源码中的应用
幺鹿
2018/08/21
5430
工厂方法模式(延迟到子类来选择实现)
IntelliJ IDEA优秀插件(编程通用)「建议收藏」
最近大部分开发IDE工具都切换到了,所以也花了点心思去找了相关的插件。这里整理的适合各种语言开发的通用插件,也排除掉IntelliJ IDEA自带的常用插件了(有些插件在安装IntelliJ IDEA的时候可以安装)。
全栈程序员站长
2022/09/27
1.2K0
IntelliJ IDEA常用酷炫插件【面试+工作】
最近大部分开发IDE工具都切换到了,所以也花了点心思去找了相关的插件。这里整理的适合各种语言开发的通用插件,也排除掉IntelliJ IDEA自带的常用插件了(有些插件在安装IntelliJ IDEA的时候可以安装)。
Java帮帮
2018/10/24
1.7K0
IntelliJ IDEA常用酷炫插件【面试+工作】
我最常用的Intellij IDEA快捷键
原文:http://www.radcortez.com/my-most-useful-intellij-idea-keyboard-shortcuts/ 译文:http://blog.didispac
程序猿DD
2018/02/01
8340
我最常用的Intellij IDEA快捷键

相似问题

选择Intellij Idea IDE的插件版本

11

在MFC中通过鼠标单击进行选择,而不是按住鼠标拖动操作

10

如何使用Javascript和JQuery自动选择文本(点击并按住鼠标)?

113

如何根据图像的src来选择alt?

42

通过使用HDFStore比较列来选择行

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档