如何在 c# windows 表单中创建眼动追踪点热图
How to create Heatmap of eyetracking points in c# windows forms
我有一个数据库,其中包含一些视频的眼动数据。
为了这个问题,我将这些数据导出到一个 int[] 输入矩阵。然后尝试创建热图。
到目前为止我得到的是这样的:
但这实际上不是我想要的。我想要像你在 google 时看到的热图,例如:
将每个点视为一个以该点为中心的人工圆。一个半径为 50 像素的圆。现在,遍历图像的所有像素,并为每个像素计算覆盖该像素的所有圆圈。这是您对该像素的分数。将其转化为颜色,即0:black/transparent、10:浅绿色、20:黄色等。分析所有像素后,您将获得每个像素的颜色。写个位图,看看。它应该接近你想要的东西。
当然,圆半径、颜色映射等需要根据您的需要进行调整。另外,这可能不是 best/simplest/fastest 算法。
不同的方法是将 "heat" 存储在像素灰度值中。
只需创建与原始图像大小相同的第二张图像,并在每次查看时计算像素的灰度值。
稍后您可以使用该值来计算要绘制的圆的大小和颜色。
然后您可以将热图图像放在原始图像的顶部就完成了(不要忘记设置透明度)。
我有一个数据库,其中包含一些视频的眼动数据。
为了这个问题,我将这些数据导出到一个 int[] 输入矩阵。然后尝试创建热图。 到目前为止我得到的是这样的:
但这实际上不是我想要的。我想要像你在 google 时看到的热图,例如:
将每个点视为一个以该点为中心的人工圆。一个半径为 50 像素的圆。现在,遍历图像的所有像素,并为每个像素计算覆盖该像素的所有圆圈。这是您对该像素的分数。将其转化为颜色,即0:black/transparent、10:浅绿色、20:黄色等。分析所有像素后,您将获得每个像素的颜色。写个位图,看看。它应该接近你想要的东西。
当然,圆半径、颜色映射等需要根据您的需要进行调整。另外,这可能不是 best/simplest/fastest 算法。
不同的方法是将 "heat" 存储在像素灰度值中。 只需创建与原始图像大小相同的第二张图像,并在每次查看时计算像素的灰度值。 稍后您可以使用该值来计算要绘制的圆的大小和颜色。
然后您可以将热图图像放在原始图像的顶部就完成了(不要忘记设置透明度)。