def METHOD_NAME(self, heatmap, kernel):
    border = (kernel - 1) // 2
    batch_size = heatmap.shape[0]
    num_joints = heatmap.shape[1]
    height = heatmap.shape[2]
    width = heatmap.shape[3]
    for i in range(batch_size):
        for j in range(num_joints):
            origin_max = np.max(heatmap[i, j])
            dr = np.zeros((height + 2 * border, width + 2 * border))
            dr[border:-border, border:-border] = heatmap[i, j].copy()
            dr = cv2.GaussianBlur(dr, (kernel, kernel), 0)
            heatmap[i, j] = dr[border:-border, border:-border].copy()
            heatmap[i, j] *= origin_max / np.max(heatmap[i, j])
    return heatmap