问题标签 [eye-tracking]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
329 浏览

c# - 以像素为单位计算字符串宽度以模拟自动换行时的奇怪行为

尝试在 C# 中获取字符串宽度以模拟自动换行和文本位置(现在用richTextBox 编写)。

RichTextBox 的大小为 555x454 像素,我使用等宽字体 Courier New 12pt。

我试过了TextRenderer.MeasureText(),也有Graphics.MeasureString()方法。

TextRenderer返回比通常适合一行的文本更大的值Graphics,我的代码确定应该换行到另一行。

但是Graphics另一方面,使用 using 时,我的代码确定特定字符串比它在原始richTextBox 中打印的要短,因此它被包装到错误位置的下一行。

在调试过程中,我发现计算出的宽度不同,这很奇怪,因为我使用等宽字体,所以所有字符的宽度都应该相同。但我从Graphics.MeasureString()(例如:'' - 5.33333254,'S' - 15.2239571,'\r' - 5.328125)得到类似的东西。

如何使用 C# 准确计算字符串宽度,从而模拟自动换行并确定以像素为单位的特定文本位置?

为什么使用等宽字体时不同字符的宽度不同?

注意:我正在从事个人眼动追踪项目,我想确定在实验期间将特定文本放置在哪里,这样我就可以知道用户在看哪些词。例如。当时t用户正在查看 [256,350]px 点,我知道在这个地方有方法调用WriteLine。我的目标视觉刺激是源代码,带有缩进、制表符、行尾,放置在一些可编辑的文本区域(将来可能是一些简单的在线源代码编辑器)。

这是我的代码:

0 投票
0 回答
111 浏览

c++ - 头部贴片机眼动追踪系统的相机校准无效

我正在开发一种眼动追踪系统,该系统在某种眼镜上安装了两个摄像头。有光学透镜,以便在距眼睛约 420 毫米处感知屏幕。

从几十个瞳孔样本中,我们计算了两个眼睛模型(每个相机一个),位于它们各自的相机坐标系中。这是基于此处的工作,但进行了修改,以便使用某种蛮力方法找到眼睛中心的估计,以最小化模型上的椭圆投影误差,因为它在相机空间中的中心位置。

从理论上讲,相机参数的近似值将与 Y 轴上的镜头对称。因此,每个相机都应位于相对于镜头坐标系的坐标(大约 17.5mm 或 -17.5、0、3.3),在 Y 轴上旋转大约 42.5 度。

但是,对于这些值,结果中存在偏移。见下文:

在此处输入图像描述 在此处输入图像描述

  • 红点是左眼跟踪器估计的凝视中心,白色是右眼跟踪器,在屏幕坐标中
  • 屏幕限制由白线表示。
  • 绿线是注视向量,以相机坐标表示(以 2D 形式投影以进行可视化)
  • 以 2D 形式投影的两个相机中心位于眼睛的中间(蓝色圆圈)。
  • 瞳孔样本和当前瞳孔由具有匹配颜色的椭圆表示。

x 上的偏移量不是恒定的,这意味着 Y 上的旋转不准确。并且相机的位置也不精确。为了修复它,我们使用:this进行校准,然后this从旋转矩阵中获取旋转参数。

我们在镜头中间添加了一个相机(接近理论 0,0,0 点?),以获取相机相对于我们的镜头中心的外在参数和内在参数。然而,从不同位置捕获大约 50 个棋盘格,OpenCV 给出的结果似乎并不正确。例如,它在镜头坐标中为相机提供大约 (-14,0,10) 的位置以进行平移,并在 (-2.38, 49, -2.83) 中提供以度为单位的旋转角度。

之前的屏幕截图是使用这些参数拍摄的。与 opencv 值不同,理论上的值相距更远,但更有可能到达屏幕边界。

这可能是因为测试相机在光学元件的前面,而不是后面,我们真正的 0,0,0 所在的位置(我们只是在之后添加了 Z 轴上感知到屏幕的距离,即 420mm) . 但是,我们没有办法将相机放在 (0, 0, 0) 中。

由于系统紧凑(一切都在几厘米 ^ 2 内捕获),每一度或每一毫米都可以极大地改变结果,所以如果没有相机的精确值,我们有点卡住了。

我们的目标是找到一种准确的方法来获取每个相机的外在参数和内在参数,这样我们就可以计算出戴眼镜的人眼睛中心的精确位置,而无需其他校准程序,而不是环顾四周(所以没有固定点)

目前,该系统足够精确,因此我们可以全局指示某人在屏幕上注视的位置,但是左右摄像头之间存在差异,不够精确。欢迎任何可以帮助我们的建议或提示:)

0 投票
0 回答
296 浏览

c# - 为什么在通过 Edge.js 从 Node.js 调用 C# 时需要 await Task.Run?

我有这个示例C#代码,它连接到 Tobii EyeX 眼动追踪设备的 EyeX 引擎,订阅注视数据流并将结果写入控制台。

我在Edge.js的帮助下从 Node.js 脚本调用此代码。我能够让它工作,但我发现我必须以我不完全理解的方式修改代码。

也就是说,我不得不打eyeXHost.Start()await Task.Run()电话。否则,线程似乎被阻塞并且没有接收到凝视数据。我还必须添加async await到流事件处理程序。

为什么有必要这样做?

0 投票
2 回答
13055 浏览

python-2.7 - 使用网络摄像头、OpenCV 和 Python 跟踪瞳孔位置

我正在尝试构建一个可以通过基本眼球运动控制的机器人。我将网络摄像头对准我的脸,根据我瞳孔的位置,机器人会以某种方式移动。如果瞳孔位于眼睛的上、下、左角、右眼角,机器人将分别向前、向后、向左、向右移动。

我最初的计划是使用 eye haar cascade 来找到我的左眼。然后我会在眼睛区域使用 houghcircle 来找到瞳孔的中心。我会通过找到从霍夫圆中心到一般眼睛区域边界的距离来确定瞳孔在眼睛中的位置。

因此,对于我的代码的第一部分,我希望能够跟踪眼瞳的中心,如本视频所示。https://youtu.be/aGmGyFLQAFM?t=38

但是当我运行我的代码时,它不能始终如一地找到瞳孔的中心。霍夫圆经常画在错误的区域。如何让我的程序始终如一地找到瞳孔的中心,即使在眼睛移动时也是如此?

我是否有可能/更好/更容易告诉我的程序学生一开始在哪里?我看过其他一些眼动追踪方法,但我无法形成通用算法。如果有人可以帮助形成一个,那将不胜感激! https://arxiv.org/ftp/arxiv/papers/1202/1202.6517.pdf

0 投票
1 回答
111 浏览

java - opencv 库支持哪些 android API?

我正在尝试将opencv(2.4.9)与android studio(2.3.3)一起使用来开发主要用于平板电脑的眼动追踪应用程序......我的问题是:我可以使用的android设备的合适API版本是什么? 设备的型号有影响吗?

顺便说一句,我尝试在 android 模拟器上使用 API(21,22,25) 使用 opencv 打开相机,但它不起作用......并且使用真正的手机(API 25)也不起作用......并使用基因运动模拟器(API 22 & 21),它也不起作用

0 投票
1 回答
1594 浏览

interface - 使用眼动追踪跟踪窗口焦点?(窗口管理器)

坐在我的多显示器桌面设置前,我想到了将一个简单的网络摄像头和一些眼动追踪软件与我的窗口管理器连接的想法,以将当前窗口焦点设置到我正在查看的窗口。焦点不会跟随光标,而是直接跟随我的眼睛移动,因此我可以无缝切换窗口并始终准确地输入我想要的位置。

我认为这不应该那么难做,我不能成为第一个考虑这样的事情的人 - 那么是否有任何现有的 x11/wayland 实现或 kwin 的扩展来实现这一点,或者我应该尝试实施这个?如果是这样,是否有人有兴趣加入我,或者这只是一个没有人真正使用的愚蠢想法?!

0 投票
1 回答
102 浏览

python - 导入psychopy.iohub时出错

我正在尝试使用 iohub 在我的 Psychopy 实验中加入眼动追踪(SR-research Eye-Link)支持。我在 Mac 上使用 python2.7。但是,当我尝试导入它时出现错误:

我试图安装这个模块,但什么也没找到。任何想法?

0 投票
2 回答
597 浏览

c++ - 在 cpp 中使用头戴式摄像头进行 Opencv 单眼跟踪

我想在 cpp 中跟踪 Opencv 中的一只眼睛。我将使用头戴式相机[普通/红外相机],我尝试了不同的算法,但每个代码都与头部姿势估计技术有关。任何人都可以建议任何带有代码或实现方式的算法

0 投票
1 回答
1070 浏览

opencv - Unity3d 眼动追踪

如果没有独立机器的外部硬件,我如何在 Unity3D 移动项目中实施眼动追踪?

0 投票
0 回答
288 浏览

c++ - haar cascade 可以在直播中检测到单眼吗

我想从头戴式摄像机跟踪眼睛,我正在使用 haar cascade @ eyecascade

当两只眼睛在框架中时,我能够检测到眼睛,而当只有一只眼睛在相机的框架中时,我无法跟踪。

当只有一只眼睛在相机的框架中时,haar cascade中的eyecascade是否可以识别