优化点-圆距离法

2023-12-24

我正在实施 RANSAC 算法来检测图像中的圆圈。我分析了执行情况,得到:

13699392 function calls in 799.981 seconds

   Random listing order was used

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    0.000    0.000 {time.time}
   579810    0.564    0.000    0.564    0.000 {getattr}
   289905    2.343    0.000    8.661    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/linalg/blas.py:226(_get_funcs)
   579810    0.124    0.000    0.124    0.000 {method 'get' of 'dict' objects}
   289905    0.645    0.000    2.676    0.000 {map}
     2954    0.005    0.000    0.005    0.000 {method 'transpose' of 'numpy.ndarray' objects}
     2954    0.023    0.000    0.464    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/shape_base.py:179(vstack)
     2954    2.373    0.001    2.373    0.001 {method 'read' of 'cv2.VideoCapture' objects}
   579810    0.966    0.000    2.031    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/lib/function_base.py:550(asarray_chkfinite)
   289905   10.164    0.000   24.316    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/linalg/basic.py:456(lstsq)
     2954    1.090    0.000    1.090    0.000 {normalize}
  1455433    3.827    0.000    3.827    0.000 {numpy.core.multiarray.array}
   579810    2.899    0.000    3.148    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numerictypes.py:949(_can_coerce_all)
        1    0.000    0.000    0.000    0.000 {numpy.core.multiarray.empty}
     2954   32.544    0.011  795.875    0.269 git/tra-python-processer/tra/ransac.py:31(image_search)
   289905    0.714    0.000   38.644    0.000 git/tra-python-processer/tra/features.py:44(__init__)
   289905    2.157    0.000    2.157    0.000 {method 'randint' of 'mtrand.RandomState' objects}
        1    0.005    0.005    0.005    0.005 {VideoCapture}
   289905    1.026    0.000    1.026    0.000 {method 'astype' of 'numpy.generic' objects}
     2954    0.006    0.000    0.010    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/fromnumeric.py:495(transpose)
   289905   11.303    0.000   37.930    0.000 git/tra-python-processer/tra/features.py:48(__gen)
  3496584    0.343    0.000    0.343    0.000 {len}
     2954    0.344    0.000    0.344    0.000 {numpy.core.multiarray.concatenate}
     2954    3.214    0.001    3.214    0.001 {numpy.core.multiarray.where}
   869715    0.575    0.000    0.575    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/fromnumeric.py:2514(size)
   869715    0.778    0.000    2.278    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numeric.py:394(asarray)
   289905  716.946    0.002  716.946    0.002 git/tra-python-processer/tra/features.py:89(points_distance)
     5908    0.015    0.000    0.031    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numeric.py:464(asanyarray)
   289905    0.275    0.000    0.275    0.000 {isinstance}
   289905    0.342    0.000    9.003    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/linalg/lapack.py:255(get_lapack_funcs)
     5908    0.058    0.000    0.097    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/shape_base.py:60(atleast_2d)
   295813    0.089    0.000    0.089    0.000 {method 'append' of 'list' objects}
   289905    0.645    0.000    3.793    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/numpy/core/numerictypes.py:970(find_common_type)
     2954    0.221    0.000    0.221    0.000 {threshold}
        1    0.000    0.000    0.000    0.000 {method 'get' of 'cv2.VideoCapture' objects}
        1    0.000    0.000    0.000    0.000 git/tra-python-processer/tra/ransac.py:24(__init__)
     2954    0.009    0.000    0.009    0.000 {numpy.core.multiarray.zeros}
   579810    0.143    0.000    0.143    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/linalg/misc.py:126(_datacopied)
        1    0.201    0.201  799.981  799.981 git/tra-python-processer/tra/ransac.py:122(video_processing)
        1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
     2954    1.528    0.001    1.528    0.001 {cvtColor}
   289905    1.280    0.000    5.346    0.000 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/scipy/linalg/blas.py:182(find_best_blas_type)
   289905    0.198    0.000    0.198    0.000 {method 'index' of 'list' objects}

这是我第一次使用分析器,但据我所知,最重的功能是features.py:89(points_distance)这是一个非常简单的实现:

def points_distance(self,points):
    d = n.abs(\
              n.sqrt(\
                     n.power(self.xc - points[:,0],2) + n.power(self.yc - points[:,1],2)
                     )\
              - self.radius
              )
    return d

有什么建议么?或许cython?


Use scipy.spatial.distance.cdist用于距离计算points_distance.

首先,用纯 Python 和 numpy 优化代码。然后,如有必要,将关键部分移植到 Cython。由于许多函数被重复调用大约 100000 次,因此您应该从 Cython 中获得这些部分的一些速度。当然,除非计算瓶颈在于距离计算,这将限制整体执行时间。

顺便说一句,您应该按以下方式对分析器结果进行排序tottime所以它们更容易阅读。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

优化点-圆距离法 的相关文章

  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何使用 imaplib 获取“消息 ID”

    我尝试获取一个在操作期间不会更改的唯一 ID 我觉得UID不好 所以我认为 Message ID 是正确的 但我不知道如何获取它 我只知道 imap fetch uid XXXX 有人有解决方案吗 来自 IMAP 文档本身 IMAP4消息号
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 切片 Dataframe 时出现 KeyError

    我的代码如下所示 d pd read csv Collector Output csv df pd DataFrame data d dfa df copy dfa dfa rename columns OBJECTID Object ID
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 更改 `base_compiledir` 以将编译后的文件保存在另一个目录中

    theano base compiledir指编译后的文件存放的目录 有没有办法可以永久设置theano base compiledir到不同的位置 也许通过修改一些内部 Theano 文件的内容 http deeplearning net
  • python suds SOAP 请求中的名称空间前缀错误

    我使用 python suds 来实现客户端 并且在发送的 SOAP 标头中得到了错误的命名空间前缀 用于定义由element ref 在 wsdl 中 wsdl 正在引用数据类型 xsd 文件 请参见下文 问题出在函数上GetRecord
  • 从 python 发起 SSH 隧道时出现问题

    目标是在卫星服务器和集中式注册数据库之间建立 n 个 ssh 隧道 我已经在我的服务器之间设置了公钥身份验证 因此它们只需直接登录而无需密码提示 怎么办 我试过帕拉米科 它看起来不错 但仅仅建立一个基本的隧道就变得相当复杂 尽管代码示例将受
  • 使用鼻子获取设置中当前测试的名称

    我目前正在使用鼻子编写一些功能测试 我正在测试的库操作目录结构 为了获得可重现的结果 我存储了一个测试目录结构的模板 并在执行测试之前创建该模板的副本 我在测试中执行此操作 setup功能 这确保了我在测试开始时始终具有明确定义的状态 现在
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • 默认情况下,Keras 自定义层参数是不可训练的吗?

    我在 Keras 中构建了一个简单的自定义层 并惊讶地发现参数默认情况下未设置为可训练 我可以通过显式设置可训练属性来使其工作 我无法通过查看文档或代码来解释为什么会这样 这是应该的样子还是我做错了什么导致默认情况下参数不可训练 代码 im
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • Python 无法使用套接字绑定我的外部/公共 IP 地址,给出错误但是当使用本地 IP 地址时,错误不会显示

    这是出现主要错误的代码 与我的本地 IP 的绑定将起作用 s bind 192 168 1 4 port 与我的公共 IP 的绑定失败并出现以下错误 s bind 99 99 99 99 port WinError 10049 请求的地址在
  • 列表值的意外更改

    这是我的课 class variable object def init self name name alias parents values table name of the variable self name 这是有问题的函数 f

随机推荐

  • 如何使用新的 Google Analytics 在 PHP 中获取当前访问者的引荐来源网址、付费/自然和关键字?

    我想了解访问者如何访问我的网站的信息 在 Google Analytics 的早期版本中 您可以使用他们的 cookie 参见例如使用 Google Analytics 获取当前访问者的引荐来源网址 付费 自然和关键字 https stac
  • 提交后的 mvc3 复选框值

    我有一个包含 2 个字段的表单 一个下拉列表和一个复选框 我一切正常 但由于某种原因 如果选中这是我的代码 我无法获取复选框的值 HttpPost public ActionResult view string pick switch pi
  • 切换 UITextView 中的 selectedRange 属性

    我创建了一个按钮 我想检查是否选择了文本 然后在点击时在 selectedRange 上切换粗体和非粗体 目前 我的代码只会将 selectedRange 更改为粗体 我无法撤消它或检查是否有选择 我怎样才能实现这个目标 func bold
  • Meteor.js - 在多个集合上进行用户搜索的方法

    关于如何在 Meteor 应用程序中设置集合 我遇到了一些困境 用户搜索栏是我的应用程序的核心部分 用户需要能够输入一个搜索并在多个不同的集合中获得结果 user query foo var query foo var actors res
  • 经典的asp存储过程参数

    我一直在研究如何从经典 asp 调用存储过程并将参数传递给它 下面是我的存储过程 它工作得很好 CREATE PROCEDURE Paging Movies alphaChar char 1 AS if alphaChar select f
  • 为什么从 python 调用 ffmpeg 会阻塞?

    我尝试了 3 种方法从 python 调用 ffmpeg 但它总是阻塞并且不返回任何结果 但是 如果我从 shell 执行它 它就会起作用 For eg usr bin ffmpeg y i tmp uploadedfiles movie8
  • 在 R 中对“年/月”列进行排序

    我试图在 R 中按 year month 列对数据框进行排序 但停留在 as Date 函数上 我尝试了其他几种方法但没有成功 我可以寻求帮助吗 这里是 我的代码是 temp2 sort lt temp2 with temp2 order
  • R:将查找表与数据框合并

    我正在使用 R 编程语言 我有以下有关患者医疗特征和疾病患病率的数据集 set seed 123 library dplyr Patient ID 1 5000 gender lt c Male Female gender lt sampl
  • WordPress 在不使用 get_posts() 的情况下获取帖子数量?

    需要一个专门设计用于获取匹配条件的帖子计数的函数调用 我认为 get posts 函数对于此操作来说太昂贵了 我只是想决定当有预定义数量的帖子要显示时是否显示 查看更多帖子 链接 例如 要显示的默认帖子链接数为 3 我只想在帖子总数超过 3
  • SPARK SQL - 使用 DataFrames 和 JDBC 更新 MySql 表

    我正在尝试使用 Spark SQL DataFrames 和 JDBC 连接在 MySql 上插入和更新一些数据 我已成功使用 SaveMode Append 插入新数据 有没有办法从 Spark SQL 更新 MySql 表中已有的数据
  • Javascript:将逗号替换为### - 仅用双引号[重复]

    这个问题在这里已经有答案了 在下面的字符串中 This is just for Test ignore it My name is FirstName LastName 我想将双引号 内的所有逗号 替换为 目前我只找到了 的匹配模式 但需要
  • jQuery + JSON 如何从变量定义键

    我有以下代码 post factory set key value function response json where key foo value bar 但服务器总是获取 key 和 bar 有没有办法将键设置为变量 而不是字符串
  • ASP.Net MVC 和 Comet (WebSync)

    我正在尝试在我的 ASP Net MVC 2 0 项目中实现 comet 我在用着WebSync http www frozenmountain com websync 来自冰冻山 我的网站是用 C 4 0 和 ASP Net 4 0 编码
  • 直接从 Eclipse 本地历史记录恢复已删除的文件

    发生了一些 git 错误 我丢失了一个文件的很多更改 我使用 Eclipse 作为 IDE 但 git 错误包括删除项目并重新克隆目录 所以我无法从 Eclipse 中进行恢复 我相信我已经找到了包含我想要恢复的代码的本地历史文件 但我不确
  • 我可以在 Windows Azure 中托管应用程序并将数据库存储在不同的服务器上吗

    我可以在 Windows Azure 中托管应用程序并将数据库存储在不同的服务器上吗 例如 我想将我的数据保存在服务器上 这样我就不必担心隐私问题 如果这是可能的 是否会消除在云中托管应用程序的价值 thanks 您的意思是在 Window
  • 您如何知道 Pytorch Save 是否包含模型和/或仅包含权重?

    我对 pytorch 相当陌生 这可能是版本问题 但我看到使用了 torch load 和 torch load state dict 但在这两种情况下 文件扩展名通常是 pth 我创建的模型 我可以通过 torch Save 和 torc
  • 使用 Python 抓取 PDF 文本 (pdfquery)

    我需要抓取一些 PDF 文件来提取以下文本信息 我尝试使用 pdfquery 来完成此操作 方法是解决我在 Reddit 上找到的示例 请参阅第一篇文章 https www reddit com r Python comments 4bnj
  • QTableWidgetItem 文本已更改

    我正在寻找一种干净的方式来对事件做出反应 如果QTableWidgetItem已更改其文本 我尝试过使用信号QTableWidget itemChanged QTableWidgetItem item 但这会导致错误 因为我更改了背景颜色Q
  • 在 C++ 中,“operator !=”是否应该始终通过“operator ==”来实现?

    我目前查看了一个旧的 C 代码库 发现很多代码都是这样的 bool SomeClass operator const SomeClass other const return member1 other member1 member2 ot
  • 优化点-圆距离法

    我正在实施 RANSAC 算法来检测图像中的圆圈 我分析了执行情况 得到 13699392 function calls in 799 981 seconds Random listing order was used ncalls tot