首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效计算图像像素差异

高效计算图像像素差异
EN

Stack Overflow用户
提问于 2019-12-06 17:30:22
回答 2查看 71关注 0票数 1

假设我有一个24 x 24的图像作为一个数字数组。

我想要计算每个像素与图像中所有其他像素之间的像素差异,不包括该像素。这将给我(24 * 24) * (24 * 24 -1)值。

我如何在循环之外并以有效的方式做到这一点?

示例:

图像阵列:

代码语言:javascript
复制
[[1,5],
[8,3]]

差异:

代码语言:javascript
复制
Pixel 1 (Value = 1) : [-4,-7,-2]
Pixel 2 (Value = 5) :  [4,-3,2]
Pixel 3 (Value = 8): [7,3,5]
Pixel 4 (Value = 3):[2,-2,-5]

最终结果:

代码语言:javascript
复制
[-4, -7, -2, 4, -3, 2, 7, 3, 5, 2, -2, -5]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-12-06 18:23:54

我的方法是:

代码语言:javascript
复制
ret = img.ravel()
ret = ret[:,None] - ret

mask = np.arange(len(ret)) != np.arange(len(ret))[:,None]
# masking
ret[np.where(mask)]

输出:

代码语言:javascript
复制
array([-4, -7, -2,  4, -3,  2,  7,  3,  5,  2, -2, -5])
票数 1
EN

Stack Overflow用户

发布于 2019-12-06 18:00:11

如果您愿意在数组中有一些零,您可以创建一个4D数组,它告诉您像素[i, j]和位置[i, j, m, n]的原始数组[m, n]之间的区别。在对角线上有零,其中ai == m和j == n`,但是您可以通过其他方式掩盖或消除它:

代码语言:javascript
复制
img[..., None, None] - img[None, None, ...]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59217805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档