Построение тепловой карты взгляда. Как сгладить визуализацию?

Есть задача - отслеживание взгляда пользователя на экране. Имеются 2d координаты - положение взгляда в каждый момент времени. Пытался построить тепловую карту, но визуализация получается слишком дискретной и некрасивой (круги перекрывают друг друга). Подскажите, пожалуйста, есть ли способ как-либо сгладить ее, как например тут или тут? Заранее спасибо!

import cv2
import numpy as np


# Пример функции для получения текущего положения взгляда на экране
def get_point():
    return np.random.randint(0, h/2, 2)


h, w = 400, 400
r = 50

all_points = np.zeros(shape=(h, w, 3))  # вся история
src = np.zeros(shape=(h, w, 3), dtype=np.uint8)  # текущее положение

while True:
    dot = get_point()

    cv2.circle(src, (dot[0], dot[1]), radius=r, color=[255, 255, 255], thickness=-1)  # Нарисовали круг
    all_points += src
    cv2.circle(src, (dot[0], dot[1]), radius=r, color=[0, 0, 0], thickness=-1)  # очистили круг

    heatmapshow = None
    heatmapshow = cv2.normalize(all_points, heatmapshow, alpha=0, beta=255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
    heatmapshow = cv2.applyColorMap(heatmapshow, cv2.COLORMAP_JET)
    cv2.imshow("pict", heatmapshow)

    if cv2.waitKey(10) == 27:
        break

Ответы (0 шт):