我想计算一个二元NxM矩阵中一个形状的凸壳。凸壳算法需要一个坐标列表,所以我采用纽比。阿尔格何处(im)具有所有形状点坐标。但是,这些点中的大多数并没有对凸包起作用(它们位于形状的内部)。因为凸包计算时间至少与输入的点数成正比,所以我设计了一个想法,预先过滤掉过多无用的点,只通过那些跨越轮廓的点。这个想法很简单,对于二进制NxM矩阵中的每一行,我只取最小和最大的索引。例如:im = np.array([[1,1,1,0],

[1,0,1,1],

[1,1,0,1],

[0,0,0,0],

[0,1,1,1]], dtype=np.bool)

outline = somefunc(im)

然后大纲应该是(在元组中或者作为一个5x2 numpy数组,我不介意):

^{pr2}$

任何紧围绕这个形状(im)的凸壳,必须是这些点(轮廓)的子集。换句话说,如果“somefunc()”能够有效地过滤内部点,那么它将为凸壳计算节省时间。在

我有一些代码可以实现上面的技巧,但我希望有人有一个更聪明(读得更快)的方法,因为我需要运行它很多次。我的密码是:# I have a 2D binary field. random for the purpose of demonstration.

import numpy as np

im = np.random.random((320,360)) > 0.9

# This is my algorithm so far. Notice that coords is sorted.

coords = np.argwhere(im)

left = np.roll(coords[:,0], 1, axis=0) != coords[:,0]

outline = np.vstack([coords[left], coords[left[1:]], coords[-1]])

我的另一个想法是使用Python的reduce(),这样我只需要运行一次坐标列表。但我很难找到一个好的约化函数。在

任何帮助都将不胜感激!在

编辑

同时,我发现了一种从im直接到outline的更快的方法。至少对于大图像来说,这要快得多。在显然没有外部解决方案的情况下,我把它作为这个问题的解决方案。在

不过,如果有人知道更快的方法,请大声说出来:)

python 轮廓矩阵_二进制二维矩阵的python轮廓相关推荐

  1. python三维矩阵乘法_tensorflow 二维矩阵乘以三维矩阵,高维矩阵相乘

    最近看论文时看到了一个让我费解的操作. 二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵. 即: (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m 实现主 ...

  2. python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法

    Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...

  3. php随机产生4乘4矩阵,PHP 用二维矩阵生成一个给定层数的杨辉(PASCAL)三角形

    原创.教学参考案例. 给定三角形的层数(N)后, 1. 把用来显示三角形的2维矩阵(2N*(N+1))的每个元素清理成零: 2. 将矩阵第一行中间位置的元素, 赋予 1: 3. 从第二行开始,确定每一 ...

  4. matlab如何将三维转为二维_matlab三维矩阵怎么转为二维矩阵?

    展开全部 a=rand(m,n,6) b=reshape(m*n,6) 一个示例: >> a=rand(2,3,2) a(:,:,1) = 0.8147    0.1270    0.63 ...

  5. 【python】详解使用numpy模块来拼接矩阵,二维矩阵和三维矩阵

    首先,使用下面的代码,创建3个2×2的矩阵A.B.C. import numpy as np A = [[1, 2], [3, 4]] B = [[5, 6], [7, 8]] C = [[9, 9] ...

  6. 【CV】图像卷积计算即二维矩阵卷积(Python)

    卷积与数字图像 什么是卷积 一维线性卷积 参数'full' 参数'same' 参数'valid' 二维线性卷积 什么是卷积 一维线性卷积 线性卷积(linear convolution) 在时域描述线 ...

  7. python 将三维数据转为二维_python 二维矩阵转三维矩阵示例

    如下所示: >>> import numpy as np >>> a = np.arange(12).reshape(3,4) >>> a arr ...

  8. python 搜索二维矩阵

    搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入:m ...

  9. python 二维矩阵翻转

    二维矩阵翻转 # N * N的二维矩阵 # 沿上下中线翻转 # 沿左右中线翻转 # 沿-45度对角线翻转 # 沿45度对角线翻转matrix3 = [[1, 2, 3, 4, 5], [6, 7, 8 ...

最新文章

  1. js 条件语句控制html,如何避免在JS脚本上过多使用 if 语句?(技巧分享)
  2. LeetCode 97. 交错字符串(DP)
  3. 学术谱系树:来看看你导师的师承
  4. 即时通讯学习笔记003---Tigase代码框架解读
  5. 活动目录AD 取用户过期时间accountExpires
  6. Struts2 校验框架学习笔记
  7. ajax简单做html查询删除(鲜花)
  8. JVM之Tomcat的优化
  9. 海思3518E开发笔记6.1——RTSP实时图传源码分析
  10. 基于Arduino的多功能数字时钟
  11. poi 垂直、水平居中
  12. Codeforces 887D - Ratings and Reality Shows
  13. MacOS中图片的路径表示
  14. PHP图片拼接util
  15. 用手机远程控制扫描仪
  16. XML第四讲:DTD元素、属性深度详解
  17. AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕
  18. 输入数字N,然后输入N个数,计算这N个数的和。
  19. 浅析功耗性能肖特基二极管的重要性
  20. 高等数学A(一)第一章笔记分享

热门文章

  1. 红米airdots掉了怎么查找_红米K30至尊版与realmeX7 Pro,两款性价比手机,谁才是第一位...
  2. Python 之字符串常用方法
  3. C++的拷贝构造函数、operator=运算符重载,深拷贝和浅拷贝、explicit关键字
  4. oracle中做数据字典,oracle中数据字典是干嘛用的啊
  5. python一个富翁试图与陌生人做一笔生意_VB实验报告一
  6. Linux中srch出现bash,Shell练习题(3)
  7. 鼠标右键转圈圈_鼠标右键文件夹出现转圈圈假死机情况
  8. python秒杀神器苏宁_Python爬虫——实战三:爬取苏宁易购的商品价格
  9. MySQL / 各种锁
  10. wifi一阵一阵卡_家里wifi总是过一会就卡一下然后又好了