对图像进行积分的有效方法

2024-02-05

我有一个 2D 数组(典型大小约为 400x100),如图所示(它看起来像一个梯形,因为右下角的元素是 nan)。对于数组中的每个元素,我想对多个元素(大约 10 个元素)沿列执行数值积分。在物理语言中,将颜色视为力的大小,我想找到通过计算 Fdz 积分所做的功。我可以使用双 for 循环并使用trap来完成这项工作,但是还有其他更有效的方法(可能是使用数组和矢量化)在 Matlab 或 python 中完成这项工作吗?我的最终目标是找到评估积分最大的点。因此,从黄色代表大值的图像中,我们期望积分在虚线上方右侧某处最大。

另外,如果我想要积分的点数是整数,那么相对容易,但是如果我想要积分,比如 7.5 个点怎么办?我正在考虑使用fit插入点,但我不确定这是否使任务过于复杂。


您可以使用cumsum加快trap。计算累积和(@Benjamin提出的一维积分图像)

>>> import numpy as np
>>> csdata = np.cumsum(data, axis=1)

与离散长度积分

>>> npoints = 6
>>> result = np.zeros_like(data)
>>> result[:-npoints, :]  = csdata[npoints:, :] - csdata[:-npoints, :]

The result是一个向量化cumdata[i+npoints, j] - cumdata[i, j]对于每一个i, j在图像中。最后将用零填充npoints行。你可以reflect边界与np.pad如果你想阻止这种情况。

对于非离散间隔,您可以使用插值:

>>> from scipy.interpolate import interp2d
>>> C = 0.5   # to interpolate every npoints+C pixels
>>> y, x = np.mgrid[:data.shape[0], :data.shape[1]]
>>> ynew, xnew = np.mgrid[C:data.shape[0]+C, :data.shape[1]]
>>> f = interp2d(x, y, csdata)
>>> csnew = f(xnew, ynew)

以上移动了常规网格C中的像素y方向,并对累积数据进行插值csdata在这些点上(实际上,它对每个像素进行向量插值)。

那么积分为npoints+C长度可以得到为

>>> npoints = 6
>>> result = np.zeros_like(data)
>>> result[:-npoints, :]  = csnew[npoints:, :] - csdata[:-npoints, :]

请注意,现在的上限是csnew(移位 6 实际上得到 6.5 元素),使其在实践中整合每 6.5 点。

然后您可以找到最大值点:

>>> idx = np.argmax(result.ravel()) # ravel to get the 1D maximum point
>>> maxy, maxx = np.unravel_index(idx, data.shape) # get 2D coordinates of idx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

对图像进行积分的有效方法 的相关文章

  • numpy:如何连接数组? (获得多个范围的并集)

    我使用Pythonnumpy 我有一个 numpy 索引数组a gt gt gt a array 5 7 12 18 20 29 gt gt gt type a
  • Matlab的导入函数的范围是什么?

    我正在尝试将一些用 Matlab 编写的代码转换为独立的 编译的 Matlab 应用程序 然而 在出现一些奇怪的错误之后 我意识到代码大量使用了从路径中添加和删除的操作 以避免多次使用多个具有相同名称 但结果 计算不同 的函数这一事实 环顾
  • Pandas DataFrame 具有 X、Y 坐标到 NumPy 矩阵

    我有一个包含列的 DataFrameX Y and value e g X Y value 1 1 56 2 1 13 3 1 25 1 2 7 2 2 18 1 123 91 50 123 32 我需要将其转换为 DataFrame 到
  • Numpy uint8_t 数组到 vtkImageData

    我正在尝试拍摄一个或三个通道的 2D 图像并使用 VTK 中显示它们vtkImageActor 据我了解 要显示的当前帧可以通过调用来更新SetImageData on vtkImageActor并提供一个实例vtkImageData 我已
  • Pandas hub_table 更快的替代品

    我正在使用熊猫pivot table在大型数据集 1000 万行 6 列 上运行 由于执行时间至关重要 因此我尝试加快流程 目前 处理整个数据集大约需要 8 秒 这太慢了 我希望找到替代方案来提高速度 性能 我当前的 Pandas 数据透视
  • numpy python 中的“AttributeError:'matrix'对象没有属性'strftime'”错误

    我有一个维度为 72000 1 的矩阵 该矩阵涉及时间戳 我想使用 strftime 如下所示 strftime d m y 为了得到像这样的输出 11 03 02 我有这样一个矩阵 M np matrix timestamps 我使用了
  • NumPy linalg.eig

    我有这个烦人的问题 但我还没有弄清楚 我有一个矩阵 我想找到特征向量 所以我写 val vec np linalg eig mymatrix 然后我得到了 vec 我的问题是 当我小组中的其他人对相同的矩阵 mymatrix 做同样的事情时
  • 获取向量幂的有效方法

    我编写了一个代码 在数值上使用勒让德多项式直至某个高 n 阶 例如 case 8 p 6435 x 8 12012 x 6 6930 x 4 1260 x 2 35 128 return case 9 如果向量x太长这会变得很慢 我发现说之
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • C 中的指针、数组、字符串和 Malloc

    我目前正在学习 C 语言中的字符串 指针和数组 我尝试编写一个程序 其中数组保存三个指向字符串地址的指针 这一切似乎都有效 但程序的行为很奇怪 这是代码 char getUserDetails char host localhost cha
  • JSON-LD 构建单个对象数组

    有没有办法将单个对象强制放入数组 每次都测试对象类型真的很烦人 我尝试了这个上下文 但它不起作用 还有JSON LD Playground 中的示例 http tinyurl com ph7p35v 通过此上下文 资源将转换为单个对象 而不
  • Matlab:3D 堆积条形图

    我正在尝试创建一个 3D 堆积条形图 如这个问题所示 Matlab 中的 3D 堆叠条形图 https stackoverflow com questions 13156133 3d stacked bars in matlab 5D 然而
  • 从 n,k 维矩阵数组中减去 n,k 维矩阵

    如果我有一个数组A A lt array 0 c 4 3 5 for i in 1 5 set seed i A i lt matrix rnorm 12 4 3 如果我有矩阵 B set seed 6 B lt matrix rnorm
  • 将 Matlab 数组移植到 C/C++

    我正在将 matlab 程序移植到 C C 我有几个问题 但最重要的问题之一是 Matlab 将任何维度的数组都视为相同 假设我们有一个这样的函数 function result f A B C result A 2 B C A B and
  • Python 中的舍入浮点问题

    我遇到了 np round np around 的问题 它没有正确舍入 我无法包含代码 因为当我手动设置值 而不是使用我的数据 时 返回有效 但这是输出 In 177 a Out 177 0 0099999998 In 178 np rou
  • 每个术语出现的次数

    我得到了一个数组a n 2 where n can be 10 5最大时有n个科目和n个学生 全部编号为 1 2 n a i 0 and a i 1 1 lt i lt n 表示在第 i 个科目中 所有来自a i 0 to a i 1 通过
  • Excel:#CALC!使用 MAP 函数计算间隔重叠时出现错误(嵌套数组)

    我正在努力解决以下公式 它适用于某些情况 但不适用于所有情况 名字input有失败的数据集 得到一个 CALC 描述 嵌套数组 错误 LET input N1 0 0 N1 0 10 N1 10 20 names INDEX input 1
  • Numpy - 根据表示一维的坐标向量的条件替换数组中的值

    我有一个data多维数组 最后一个是距离 另一方面 我有距离向量r 例如 Data np ones 20 30 100 r np linspace 10 50 100 最后 我还有一个临界距离值列表 称为r0 使得 r0 shape Dat
  • 尝试使用 Javascript 解决对称差异

    我正在尝试找出对称的解决方案 使用 javascript 完成以下任务的差异 目标 接受未指定数量的数组作为参数 保留数组中数字的原始顺序 不删除单个数组中数字的重复项 删除数组中出现的重复项 因此 例如 如果输入是 1 1 2 6 2 3
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都

随机推荐

  • C# - 检查是否按下了特定键

    我试图检查是否按下了某个键 但收到以下错误消息 错误 1 当前上下文中不存在名称 键盘 错误2 当前上下文中不存在名称 Key 你能告诉我如何修复它吗 public void Main while true if Keyboard IsKe
  • 启动 JettyRun 时排除 Gradle 类路径运行时

    我有基本的 Gradle Web 应用程序项目 它工作正常 但我注意到 Gradle 的运行时类路径包含在 jetty 中 这有可能与 Web 应用程序发生冲突 请注意 下面的 gradle 使用的是稍旧版本的 logback 并且 SL4
  • 连续播放多个声音时有时会保持无声,为什么?

    我遇到了一个奇怪的问题 希望有人能回答它 我有 4x4 按钮 如果我点击它们 每个按钮都会播放 1 秒的短声 我的代码 Button 1 Button findViewById R id button1 Button 1 setOnClic
  • Python 多处理锁

    此多处理代码按预期工作 它创建 4 个 Python 进程 并使用它们打印数字 0 到 39 每次打印后都有延迟 import multiprocessing import time def job num print num time s
  • 在android中使用标签设置和获取片段

    我用 viewpager 创建了一个选项卡布局 一切都很好 除了我需要在特定时刻运行一个方法 所以我需要获取片段实例并运行他们的方法 我是这样创建的 Override protected void onCreate Bundle saved
  • 使用 VsVim 搜索时突出显示会使代码不可读

    我已经使用 VsVim 一段时间了 我对它非常满意 然而 让我烦恼的一件事是当我在 VsVim 中进行任何类型的搜索时 文本的突出显示 例如使用 或标准搜索 我花了几个小时尝试更改 Visual Studios 选项菜单中的字体和颜色 但我
  • QT5:无法在 Windows 中加载 psql 驱动程序

    我想在 Windows 7 中加载 qt5 psql 驱动程序 我已经这样加载库 qDebug lt lt QCoreApplication libraryPaths QString driverName QPSQL QSqlDatabas
  • 移动网站的“链接到 App Store”小部件

    在过去的几个月里 我发现了几个使用某种 小部件 的网站 如果我使用 iPhone 打开具有此小部件的网站 它将显示指向 网站相关 iPhone 应用程序的链接 它看起来像一个简单的 div 包含应用程序名称 评级和链接 该小部件甚至 知道
  • 从 ViewPager 获取不同片段的值

    我正在开发一个应用程序 其中片段是动态生成的 private void setupViewPager ViewPager viewPager adapter new ViewPagerAdapter getSupportFragmentMa
  • Google Sheets:通过 Apps 脚本批量 getRangeByName

    是否可以获得多个按名称范围一通电话 我有一个复杂的函数 需要按名称获取多个范围 而 Spreadsheet getRangeByName name 会显着减慢我的脚本速度 有时这些调用大约需要 2 秒 有时单个调用可能需要大约 45 秒 限
  • svn https: “ra_serf: SSL 通信期间发生错误”

    我知道这与其他帖子的标题相同 但我搜索了又搜索 但找不到解决方案 我在所有机器上从 TortoiseSVN 1 6 升级到 1 8 4 我的主开发机器开始出现此错误 ra serf An error occurred during SSL
  • 具有任意属性的 SPARQL 属性路径查询

    SPARQL 属性路径 http www w3 org TR sparql11 query propertypaths任意长度的查询需要使用特定的属性 我想查询并查找从一个资源开始并以另一个资源结束的任何路径 例如 SELECT p WHE
  • 如何 Iterator::chain 迭代器向量?

    对于给定的一组迭代器 a b c 可以使用以下命令成功链接它们a chain b chain c 由于我尝试编写的 CLI 实用程序提供了路径向量 字符串 dirs a b c d e f 我想使用walkd dir在它们每个上 然后将它们
  • 更改node_modules位置

    有没有办法更改node modules文件夹位置 例如 dir1 dir2 node modules to dir1 dir2 node modules 以下是查看的代码node modules默认文件夹 Module prototype
  • 动作和动作监听器之间的区别

    有什么区别action and actionListener 我应该什么时候使用action versus actionListener 动作监听器 Use actionListener如果你想要一个钩子before真正的业务行动得到执行
  • 使用 Spring Security 进行单元测试

    我的公司一直在评估 Spring MVC 以确定我们是否应该在下一个项目中使用它 到目前为止 我喜欢我所看到的 现在我正在研究 Spring Security 模块 以确定它是否是我们可以 应该使用的东西 我们的安全要求非常基本 用户只需提
  • 如何使用 CodeModel 初始化二维数组

    我需要初始化一个二维数组 如下所示 Object someName param1 param2 param3 param4 param5 param6 我尝试过像 JExpression exp JExpr newArray codeMod
  • 多用户角色环回

    我正在尝试使用 Loopback 作为后端来制作一个应用程序 我以前已经使用过环回 但现在我想做一些我以前从未做过的事情 我想要的很简单 我将有 3 种类型的用户 管理员 服务者和默认用户 但是 我需要限制每种类型用户的访问控制 管理员可以
  • Rust 从 fn 返回结果错误:类型不匹配

    我希望这个函数返回一个错误结果 fn get result gt Result
  • 对图像进行积分的有效方法

    我有一个 2D 数组 典型大小约为 400x100 如图所示 它看起来像一个梯形 因为右下角的元素是 nan 对于数组中的每个元素 我想对多个元素 大约 10 个元素 沿列执行数值积分 在物理语言中 将颜色视为力的大小 我想找到通过计算 F