peak_detection.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:pypiv 作者: jr7 项目源码 文件源码
def find_peak(corr, method='gaussian'):
    """Peak detection algorithm switch

    After loading the correlation window an maximum finder is invoked.
    The correlation window is cut down to the necessary 9 points around the maximum.
    Afterwards the maximum is checked not to be close to the boarder of the correlation frame.
    This cropped window is used in along with the chosen method to interpolate the sub pixel shift.
    Each interpolation method returns a tuple with the sub pixel shift in x and y direction.
    The maximums position and the sub pixel shift are added and returned.
    If an error occurred during the sub pixel interpolation the shift is set to nan.
    Also if the interpolation method is unknown an exception in thrown.

    :param corr: correlation window
    :param method: peak finder algorithm (gaussian, centroid, parabolic, 9point)
    :raises: Sub pixel interpolation method not found
    :returns: shift in interrogation window
    """
    i, j = np.unravel_index(corr.argmax(), corr.shape)
    if check_peak_position(corr, i, j) is False:
        return np.nan, np.nan
    window = corr[i-1:i+2, j-1:j+2]

    if method == 'gaussian':
        subpixel_interpolation = gaussian
    elif method == 'centroid':
        subpixel_interpolation = centroid
    elif method == 'parabolic':
        subpixel_interpolation = parabolic
    elif method == '9point':
        subpixel_interpolation = gaussian2D
    else:
        raise Exception('Sub pixel interpolation method not found!')
    try:
        dx, dy = subpixel_interpolation(window)
    except:
        return np.nan, np.nan
    else:
        return (i + dx, j + dy)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号