python如何提取图片特征向量_在python中计算图像的特征向量
我正在尝试将二维高斯拟合到图像中。噪声很低,所以我试图旋转图像,使两个主轴不同时变化,算出最大值,然后计算两个维度的标准偏差。选择的武器是Python。
。
然而,我一直在寻找图像的特征向量——numpy.linalg.py假设离散的数据点。我想把这幅图像作为概率分布,取样几千点,然后根据这个分布计算特征向量,但我确信一定有一种方法可以直接从这幅图像中找到特征向量(即高斯椭圆的半长轴和半长轴)。有什么想法吗?
非常感谢:)
只是一个简短的说明,有几个工具来适应高斯图像。我唯一能想到的就是Scikits.Learn,它不是完全面向图像的,但我知道还有其他的。
准确地计算协方差矩阵的特征向量是非常昂贵的。您必须将图像的每个像素(或大的ISH随机采样)与X、Y点相关联。
基本上,你会做如下的事情:
import numpy as np
# grid is your image data, here...
grid = np.random.random((10,10))
nrows, ncols = grid.shape
i,j = np.mgrid[:nrows, :ncols]
coords = np.vstack((i.reshape(-1), j.reshape(-1), grid.reshape(-1))).T
cov = np.cov(coords)
eigvals, eigvecs = np.linalg.eigh(cov)
相反,您可以利用它是一个定期采样的图像的事实,并计算它的时刻(或"国际轴")。对于大图像来说,这会快得多。
作为一个简单的例子,(我使用了我以前的一个答案的一部分,以防你发现它有用…)
import numpy as np
import matplotlib.pyplot as plt
def main():
data = generate_data()
xbar, ybar, cov = intertial_axis(data)
fig, ax = plt.subplots()
ax.imshow(data)
plot_bars(xbar, ybar, cov, ax)
plt.show()
def generate_data():
data = np.zeros((200, 200), dtype=np.float)
cov = np.array([[200, 100], [100, 200]])
ij = np.random.multivariate_normal((100,100), cov, int(1e5))
for i,j in ij:
data[int(i), int(j)] += 1
return data
def raw_moment(data, iord, jord):
nrows, ncols = data.shape
y, x = np.mgrid[:nrows, :ncols]
data = data * x**iord * y**jord
return data.sum()
def intertial_axis(data):
"""Calculate the x-mean, y-mean, and cov matrix of an image."""
data_sum = data.sum()
m10 = raw_moment(data, 1, 0)
m01 = raw_moment(data, 0, 1)
x_bar = m10 / data_sum
y_bar = m01 / data_sum
u11 = (raw_moment(data, 1, 1) - x_bar * m01) / data_sum
u20 = (raw_moment(data, 2, 0) - x_bar * m10) / data_sum
u02 = (raw_moment(data, 0, 2) - y_bar * m01) / data_sum
cov = np.array([[u20, u11], [u11, u02]])
return x_bar, y_bar, cov
def plot_bars(x_bar, y_bar, cov, ax):
"""Plot bars with a length of 2 stddev along the principal axes."""
def make_lines(eigvals, eigvecs, mean, i):
"""Make lines a length of 2 stddev."""
std = np.sqrt(eigvals[i])
vec = 2 * std * eigvecs[:,i] / np.hypot(*eigvecs[:,i])
x, y = np.vstack((mean-vec, mean, mean+vec)).T
return x, y
mean = np.array([x_bar, y_bar])
eigvals, eigvecs = np.linalg.eigh(cov)
ax.plot(*make_lines(eigvals, eigvecs, mean, 0), marker='o', color='white')
ax.plot(*make_lines(eigvals, eigvecs, mean, -1), marker='o', color='red')
ax.axis('image')
if __name__ == '__main__':
main()
号
。
强大地拟合高斯可能很困难。在IEEE信号处理杂志上有一篇关于这个主题的有趣文章:
Hongwei Guo,"A Simple Algorithm for Fitting a Gaussian Function" IEEE
Signal Processing Magazine, September 2011, pp. 134--137
号
我在这里给出1d案例的实现:
http://scipy-central.org/item/28/2/fitting-a-gaussian-to-noise-data-points网站
(向下滚动查看结果匹配)
你尝试过主成分分析(PCA)吗?也许MDP包可以用最少的努力完成这项工作。
python如何提取图片特征向量_在python中计算图像的特征向量相关推荐
- python怎么把图片压缩_使用Python轻松批量压缩图片
在互联网,图片的大小对一个网站的响应速度有着明显的影响,因此在提供用户预览的时候,图片往往是使用压缩后的.如果一个网站图片较多,一张张压缩显然很浪费时间.那么接下来,我就跟大家分享一个批量压缩图片的方 ...
- python如何使用图片做背景_用Python批量给照片换底色,基于opencv模块
现在网上出现了很多在线换底色的网页版工具是这么做的呢?其实用Python就可以实现. 环境要求 Python3 numpy函数库 opencv库 安装 下载适应版本的numpy函数库,我电脑是WIN1 ...
- python读取raw图片文件_在python下读取并展示raw格式的图片实例
raw文件可能有些人没有,因此,先用一张图片创建一个raw格式的文件(其实可以是其他类型的格式文件) import numpy as np import cv2 img = cv2.imread('c ...
- python正则表达式提取字符串密码_用python正则表达式提取字符串
在日常工作中经常遇见在文本中提取特定位置字符串的需求.python的正则性能好,很适合做这类字符串的提取,这里讲一下提取的技巧,正则表达式的基础知识就不说了,有兴趣的可以看re的教程. 提取一般分两种 ...
- python数据提取和合并_用Python提取和合并Excel数据
我有一个Excel(.xlsx)文件,大约有40个工作表.每个工作表具有相同的结构,但包含不同的数据.我想从每张表格中提取信息,并将其合并到一张表格中,每张表格中的信息一张叠一张地叠在一起.我需要从每 ...
- python自动化提取pdf表格_[Python] 自动化办公 多种提取PDF图片的方法
转载请注明:陈熹 chenx6542@foxmail.com (简书号:半为花间酒) 若公众号内转载请联系公众号:早起Python 这篇文章能学到的主要内容: 基于 fitz 库和正则搜索提取图片 基 ...
- python解除windows锁屏_实战 | Python批量提取Win10锁屏壁纸
使用Win10的朋友会发现,每次开机锁屏界面都会有不一样的漂亮图片,这些图片通常选自优秀的摄影作品,十分精美. 但是由于系统会自动更换这些图片,所以就算再好看的图片,也许下次开机之后就被替换掉了. 借 ...
- 使用Python批量提取并保存docx文档中的图片
问题描述: 提取docx文档中的所有图片,保存为独立的图片文件. 技术要点: 需要安装扩展库python-docx 示例文件: 参考代码: 码运行结果: 神操作: 如果实在看不懂上面的代码,但是又有同 ...
- python如何实现图片工具_常用的十大 python 图像处理工具
本文为 AI 研习社编译的技术博客,原标题 : 10 Python image manipulation tools. 作者 | Parul Pandey 翻译 | 安其罗•乔尔.JimmyHua 编 ...
最新文章
- C++知识点24——使用C++标准库(顺序容器deque的初始化,赋值,访问,添加,删除,交换与迭代器失效)
- Batch Normalization 与Dropout 的冲突
- 今天突然想到一个问题:地球在转动吗,由东西向西跳与由西向东跳哪个更远...
- LeetCode Algorithm 386. 字典序排数
- linux服务器备份软件下载,Linux服务器的常用备份方法 服务器系统备份方法
- [html] 打印页面时怎样自定义打印页眉页脚或者去掉眉页脚?
- C++ 0x 使用可变参数模板类 实现 C# 的委托机制
- 2021国潮新消费产业洞察报告
- 北大教授郑也夫斗胆谈了7个天大的问题,每个都非常狠,也很现实
- Markdown简介
- 视觉SLAM笔记(39) 求解 ICP
- Wireshark验证TCP三次握手四次挥手
- 客运售票员_「我做一天春运人」体验通村客车售票员兼安全员 温馨慢车上我背着太阳奔跑...
- 计算机系英文简历技能skill,如何填英文简历中SKILL选项
- python大作业数独_python做一个数独小游戏
- python分段函数输入x的值求y的值,根据以下分段函数计算y的值,要求x的值由键盘输入,...
- paypal如何支付欧元_Paypal怎么付欧元
- Unity集成Bugly踩坑
- Presenting view controllers on detached view controllers 警告根由
- CSU 1457 Boggle (字典树+DFS)
热门文章
- CrawlSpider 详解
- 碧雪情天服务器地址源如何修改,稀有游戏《碧雪情天online》网络版王者归来一键服务端+客户端 支持转生系统和新图...
- 为什么python打不开_python文件打不开如何解决
- 威纶触摸屏使用说明书_MODBUS通信之触摸屏与变频器通信知识分享(一)
- linux底行模式显示信息,14天linux命令加强
- 大数据技术架构_架构大数据图
- opencv 图像 抠图 算法_图像抠图算法学习 - Shared Sampling for Real-Time Alpha Matting
- 作为Java程序员,这些开源工具你应该要学习!
- Java程序员的自我修养?
- Java程序员常犯的几类错误