python 轮廓矩阵_二进制二维矩阵的python轮廓
我想计算一个二元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轮廓相关推荐
- python三维矩阵乘法_tensorflow 二维矩阵乘以三维矩阵,高维矩阵相乘
最近看论文时看到了一个让我费解的操作. 二维矩阵 * 三维矩阵 * 二维矩阵 得到了一个二维矩阵. 即: (n * c1) x (m * c1 * c2) x (n * c2) 得 n * m 实现主 ...
- python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...
- php随机产生4乘4矩阵,PHP 用二维矩阵生成一个给定层数的杨辉(PASCAL)三角形
原创.教学参考案例. 给定三角形的层数(N)后, 1. 把用来显示三角形的2维矩阵(2N*(N+1))的每个元素清理成零: 2. 将矩阵第一行中间位置的元素, 赋予 1: 3. 从第二行开始,确定每一 ...
- 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 ...
- 【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] ...
- 【CV】图像卷积计算即二维矩阵卷积(Python)
卷积与数字图像 什么是卷积 一维线性卷积 参数'full' 参数'same' 参数'valid' 二维线性卷积 什么是卷积 一维线性卷积 线性卷积(linear convolution) 在时域描述线 ...
- python 将三维数据转为二维_python 二维矩阵转三维矩阵示例
如下所示: >>> import numpy as np >>> a = np.arange(12).reshape(3,4) >>> a arr ...
- python 搜索二维矩阵
搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入:m ...
- python 二维矩阵翻转
二维矩阵翻转 # N * N的二维矩阵 # 沿上下中线翻转 # 沿左右中线翻转 # 沿-45度对角线翻转 # 沿45度对角线翻转matrix3 = [[1, 2, 3, 4, 5], [6, 7, 8 ...
最新文章
- js 条件语句控制html,如何避免在JS脚本上过多使用 if 语句?(技巧分享)
- LeetCode 97. 交错字符串(DP)
- 学术谱系树:来看看你导师的师承
- 即时通讯学习笔记003---Tigase代码框架解读
- 活动目录AD 取用户过期时间accountExpires
- Struts2 校验框架学习笔记
- ajax简单做html查询删除(鲜花)
- JVM之Tomcat的优化
- 海思3518E开发笔记6.1——RTSP实时图传源码分析
- 基于Arduino的多功能数字时钟
- poi 垂直、水平居中
- Codeforces 887D - Ratings and Reality Shows
- MacOS中图片的路径表示
- PHP图片拼接util
- 用手机远程控制扫描仪
- XML第四讲:DTD元素、属性深度详解
- AI技术实践|用腾讯云录音文件识别让无字幕视频自动生成字幕
- 输入数字N,然后输入N个数,计算这N个数的和。
- 浅析功耗性能肖特基二极管的重要性
- 高等数学A(一)第一章笔记分享
热门文章
- 红米airdots掉了怎么查找_红米K30至尊版与realmeX7 Pro,两款性价比手机,谁才是第一位...
- Python 之字符串常用方法
- C++的拷贝构造函数、operator=运算符重载,深拷贝和浅拷贝、explicit关键字
- oracle中做数据字典,oracle中数据字典是干嘛用的啊
- python一个富翁试图与陌生人做一笔生意_VB实验报告一
- Linux中srch出现bash,Shell练习题(3)
- 鼠标右键转圈圈_鼠标右键文件夹出现转圈圈假死机情况
- python秒杀神器苏宁_Python爬虫——实战三:爬取苏宁易购的商品价格
- MySQL / 各种锁
- wifi一阵一阵卡_家里wifi总是过一会就卡一下然后又好了