Я создаю приложение для отслеживания глаз для iOS, используя ARFaceTrackingConfiguration ARKit и ARFaceAnchor.blendShapes (например, .eyeLookInLeft, .eyeLookOutLeft и т. д.) для оценки направления взгляда.
Во время калибровки, когда пользователь смотрит на определенные точки экрана, красная точка (индикатор взгляда) не соответствует тому, куда пользователь на самом деле смотрит.
/>Вопрос:
Почему калиброванная точка взгляда не совпадает с фактической фокусировкой глаз при использовании отслеживания глаз ARKit?
Существует ли особый способ преобразования или нормализации данных формы наложения для достижения точного отображения взгляда на экране?
Мне нужна простая калибровка отслеживания глаз для фронтальной камеры с истинной глубиной на iPhone/iPad.
Настройка:
iPhone 14 Pro,
iOS 18+,
Использование передней камеры TrueDepth
Попытка реализовать калибровку по взгляду с помощью ARFaceAnchor blendShapes и картографирования квадратичной регрессии. Ожидалось, что красная точка (расчетная точка взгляда) будет совпадать с тем местом, куда на самом деле смотрит пользователь во время калибровки.
Вот упрощенный фрагмент кода
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let face = anchors.first as? ARFaceAnchor else { return }
// Compute gaze direction from blend shapes
let s = face.blendShapes
let lu = s[.eyeLookUpLeft]?.floatValue ?? 0
let ld = s[.eyeLookDownLeft]?.floatValue ?? 0
let li = s[.eyeLookInLeft]?.floatValue ?? 0
let lo = s[.eyeLookOutLeft]?.floatValue ?? 0
let ru = s[.eyeLookUpRight]?.floatValue ?? 0
let rd = s[.eyeLookDownRight]?.floatValue ?? 0
let ri = s[.eyeLookInRight]?.floatValue ?? 0
let ro = s[.eyeLookOutRight]?.floatValue ?? 0
// Average both eyes
let v = ((ld - lu) + (rd - ru)) / 2.0
let h = ((li - lo) + (ro - ri)) / 2.0
// Map roughly to screen
let screen = UIScreen.main.bounds
let center = CGPoint(x: screen.midX, y: screen.midY)
let gazePoint = CGPoint(
x: center.x - CGFloat(h) * 3.0 * center.x,
y: center.y + CGFloat(v) * 3.0 * center.y
)
DispatchQueue.main.async {
self.gazePoint = gazePoint
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ing-calibr
Красная точка отслеживания глаз ARKit не соответствует тому, куда смотрит пользователь во время калибровки ⇐ IOS
Программируем под IOS
1760647885
Anonymous
Я создаю приложение для отслеживания глаз для iOS, используя ARFaceTrackingConfiguration ARKit и ARFaceAnchor.blendShapes (например, .eyeLookInLeft, .eyeLookOutLeft и т. д.) для оценки направления взгляда.
Во время калибровки, когда пользователь смотрит на определенные точки экрана, красная точка (индикатор взгляда) не соответствует тому, куда пользователь на самом деле смотрит.
/>[b]Вопрос[/b]:
Почему калиброванная точка взгляда не совпадает с фактической фокусировкой глаз при использовании отслеживания глаз ARKit?
Существует ли особый способ преобразования или нормализации данных формы наложения для достижения точного отображения взгляда на экране?
Мне нужна простая калибровка отслеживания глаз для фронтальной камеры с истинной глубиной на iPhone/iPad.
[b]Настройка[/b]:
iPhone 14 Pro,
iOS 18+,
Использование передней камеры TrueDepth
Попытка реализовать калибровку по взгляду с помощью ARFaceAnchor blendShapes и картографирования квадратичной регрессии. Ожидалось, что красная точка (расчетная точка взгляда) будет совпадать с тем местом, куда на самом деле смотрит пользователь во время калибровки.
Вот упрощенный фрагмент кода
func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
guard let face = anchors.first as? ARFaceAnchor else { return }
// Compute gaze direction from blend shapes
let s = face.blendShapes
let lu = s[.eyeLookUpLeft]?.floatValue ?? 0
let ld = s[.eyeLookDownLeft]?.floatValue ?? 0
let li = s[.eyeLookInLeft]?.floatValue ?? 0
let lo = s[.eyeLookOutLeft]?.floatValue ?? 0
let ru = s[.eyeLookUpRight]?.floatValue ?? 0
let rd = s[.eyeLookDownRight]?.floatValue ?? 0
let ri = s[.eyeLookInRight]?.floatValue ?? 0
let ro = s[.eyeLookOutRight]?.floatValue ?? 0
// Average both eyes
let v = ((ld - lu) + (rd - ru)) / 2.0
let h = ((li - lo) + (ro - ri)) / 2.0
// Map roughly to screen
let screen = UIScreen.main.bounds
let center = CGPoint(x: screen.midX, y: screen.midY)
let gazePoint = CGPoint(
x: center.x - CGFloat(h) * 3.0 * center.x,
y: center.y + CGFloat(v) * 3.0 * center.y
)
DispatchQueue.main.async {
self.gazePoint = gazePoint
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79792566/arkit-eye-tracking-red-dot-doesn-t-match-where-the-user-is-looking-during-calibr[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия