单目标追踪——【工具】汉明窗(Hamming window)

汉明窗(Hamming window)

原理

汉明(Hanning)窗可以看成是升余弦窗的一个特例,汉宁窗可以看作是3个矩形时间窗的频谱之和,或者说是 3个 sinc(t)型函数之和,而括号中的两项相对于第一个谱窗向左、右各移动了π/T,从而使旁瓣互相抵消,消去高频干扰和漏能。

作用

引入余弦窗就是为了解决边界效应,而解决的方法就是在目标原始像素上乘一个余弦窗使接近边缘的像素值接近于零。

代码实例

import math
import plotly.express as px
import numpy as np
import torch
from matplotlib import pyplot as plt


def hann1d(sz: int, centered = True) -> torch.Tensor:
    """1D cosine window."""
    if centered:
        return 0.5 * (1 - torch.cos((2 * math.pi / (sz + 1)) * torch.arange(1, sz + 1).float()))
    w = 0.5 * (1 + torch.cos((2 * math.pi / (sz + 2)) * torch.arange(0, sz//2 + 1).float()))
    return torch.cat([w, w[1:sz-sz//2].flip((0,))])


def hann2d(sz: torch.Tensor, centered = True) -> torch.Tensor:
    """2D cosine window."""
    # return hann1d(sz[0].item(), centered).reshape(1, 1, -1, 1) * hann1d(sz[1].item(), centered).reshape(1, 1, 1, -1)
    return hann1d(sz[0].item(), centered).reshape(-1, 1) * hann1d(sz[1].item(), centered).reshape(1, -1)

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    h1 = hann1d(16)
    h1_numpy = h1.numpy()

    h2 = hann2d(torch.tensor([16, 16]))
    h2_numpy = h2.numpy()

    # 1D Hamming
    # plt.figure(figsize=(16, 16), dpi=80)
    # plt.show()

    # 2D Hamming
    fig = px.imshow(h2_numpy, color_continuous_scale='OrRd')
    fig.show()

可视化

请添加图片描述请添加图片描述

总结

由上图可知,颜色越偏红的像素权重值越大。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汉明窗Hamming Window)是一种在信号处理中常用的窗函数。它是由数学家Richard W. Hamming在20世纪50年代提出的。汉明窗在频谱分析、滤波器设计和信号重建等领域都有广泛的应用。 汉明窗的作用是在对信号进行频谱分析时减少频谱泄漏效应,即减少频谱分析中窗口的副瓣。通过将信号与汉明窗进行卷积,可以减小信号在频域上的泄漏效应,并提高频谱分析的准确性。汉明窗的特点是在时域上具有两个对称的峰值,并且在频域上具有较好的抑制副瓣的能力。 在Matlab中,可以使用hamming函数来调用汉明窗。例如,hamming(5)将生成一个长度为5的汉明窗向量,其值为[0.0800 0.5400 1.0000 0.5400 0.0800]。其中,汉明窗的系数a0默认为0.54。根据公式,当a0=0.54时,即为汉明窗。当a0=0.5时,即为汉宁窗(Hanning Window)。两者在形状上略有差异,但都可以用于频谱分析和滤波器设计。 总之,汉明窗是一种常用的窗函数,用于减少信号频谱分析中的泄漏效应。在Matlab中可以通过调用hamming函数来使用汉明窗。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [matlab中hamming窗的 c/c++ 版本的实现](https://blog.csdn.net/qq_35708970/article/details/126976274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值