python - 如何平均两个具有轻微偏移的图像的非零像素[python]
问题描述
我有两个灰度图像有轻微的偏移(~80% 重叠),我需要平均成一个图像。图像周围有填充,因此图像中已经考虑了重叠(即每个图像的 x 和 y 起始位置不同)。图像以其当前偏移对齐,类似于全景图像。
我目前的方法(见下文)是使用嵌套的 for 循环,比较每个位置的像素强度,将它们相加,然后除以非零计数。
combined_image=np.empty((image1.shape))
for row in range(image1.shape[0]):
for pixel in range(image2.shape[1]):
temp_array = np.array((image1[row][pixel], image2[row][pixel]))
combined_image[row][pixel] = np.sum(temp_array)/np.count_nonzero(temp_array)
我相信它可以工作,但是它相当慢,因为这些图像是 1000 x 1000 像素。想知道是否有更有效的方法
解决方案
通常,如果你在 numpy 中使用 for 循环,你就没有利用它的内置功能。
使用广播操作。
组合图像 = (图像 1 + 图像 2) / 2
应该更快,绝对更简单
推荐阅读
- r - 在 r 循环中将多个 csv 文件组合在一起
- ios - 创建 iOS 服务以继续在后台工作
- swift - 快速协议转换失败,错误“google.type.LatLng”未定义
- python - 从数字到二进制的 Pandas DataFrame 操作
- javascript - 对对象数组的数组求和
- sql - 在过程中重用 Select 语句
- python - 如何通过 OpenLdap 使用 Python ldap3 验证用户和密码?
- python - 无法使用 Python(子进程)进行 Git 推送?
- android - java.io.IOException:无法运行程序“/data/user/0/packagename/files/ffmpeg”:FFMPEG 错误=13,在 android Q API 级别 29 中权限被拒绝
- .net-4.0 - 用于与遗留系统通信的 Protobuf