python - 有效地计算图像像素差异

标签 python image numpy image-processing pixel

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

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

如何在循环之外以有效的方式执行此操作?

示例:

图像数组:

[[1,5],
[8,3]]

差异:

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]

最终结果:

[-4, -7, -2, 4, -3, 2, 7, 3, 5, 2, -2, -5]

最佳答案

这是我的方法:

ret = img.ravel()
ret = ret[:,None] - ret

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

输出:

array([-4, -7, -2,  4, -3,  2,  7,  3,  5,  2, -2, -5])

关于python - 有效地计算图像像素差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59217805/

相关文章:

python - 在字符串中使用 len()

python - 如何使用字符串索引字符串值将 pandas DataFrame 转换为 dict?

python - Pyspark JSON 对象或文件到 RDD

python - 如何拆分字符串并将其子字符串与子字符串列表匹配? - Python

android - iText,将图像添加到 pdf 时出现 FileNotFoundException

python - 在 Python 中集成离散点

python - Tensorflow (GPU) 与 Numpy

asp.net-mvc - PDF 预览和查看

javascript - 预加载图像中的相对路径

python-2.7 - 将函数应用于屏蔽的 numpy 数组