overlap_filter 学习笔记

overlap_filter

overlap_filter 函数的通俗含义是根据给定的掩码(filter_mask),逐层地过滤掉主掩码(mask)中的某些值。具体来说,该函数会从最后一个通道开始,逐层检查并根据对应层的过滤掩码,将前面的通道中对应位置的值设置为零。

结果没有完全看懂

import numpy as np


def overlap_filter(mask, filter_mask):
    # 获取 mask 的通道数、高度和宽度
    C, _, _ = mask.shape

    # 从最后一个通道开始,逐个通道向前遍历
    for c in range(C - 1, -1, -1):
        # 创建一个过滤器,根据 filter_mask 的当前通道是否不为 0 来确定
        filter = np.repeat((filter_mask[c] != 0)[None, :], c, axis=0)

        # 将 mask 中前 c 个通道对应位置的值设置为 0
        mask[:c][filter] = 0

    # 返回修改后的 mask
    return mask


# 创建整齐的示例数据
C, H, W = 4, 2, 2  # 通道数、高度和宽度
mask = np.zeros((C, H, W), dtype=np.uint8)
filter_mask = np.zeros((C, H, W), dtype=np.uint8)

# 为 mask 填充整齐的数据
for c in range(C):
    mask[c] = c + 1  # 每个通道填充相同的值,方便观察

# 为 filter_mask 填充整齐的数据
filter_mask[0, 0, 0] = 1  # 仅在第一个通道的左上角设置为 1
filter_mask[1, :, 1] = 1  # 在第二个通道的右边一列设置为 1
filter_mask[2, 1, :] = 1  # 在第三个通道的底边一行设置为 1

print("Original mask:")
print(mask)
print("\nFilter mask:")
print(filter_mask)

# 调用 overlap_filter 函数
filtered_mask = overlap_filter(mask.copy(), filter_mask)

print("\nFiltered mask:")
print(filtered_mask)

结果:

Original mask:
[[[1 1]
  [1 1]]

 [[2 2]
  [2 2]]

 [[3 3]
  [3 3]]

 [[4 4]
  [4 4]]]

Filter mask:
[[[1 0]
  [0 0]]

 [[0 1]
  [0 1]]

 [[0 0]
  [1 1]]

 [[0 0]
  [0 0]]]

Filtered mask:
[[[1 0]
  [0 0]]

 [[2 2]
  [0 0]]

 [[3 3]
  [3 3]]

 [[4 4]
  [4 4]]]
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值