Настройка сцены для захвата и обработки изображений

Я создаю коробку, в которую пользователь ставит ногу, а затем измеряет ее размер.

Моя цель 1-го уровня - провести базовые измерения, а моя цель - построить 3D-модель стопы человека.

Вот какие изображения из моих первых попыток и прототипов.

задняя часть стопы | внутри стопы | вне стопы | верхняя часть стопы

Итак, моим большим преимуществом является то, что я могу полностью контролировать сцену.

Я хочу использовать этот факт для настройки, чтобы я мог получать надежные измерения с помощью изображений.

Итак, мои вопросы следующие: 1) Как лучше всего устроить сцену? Прямо сейчас у меня будет синий фон, подсветка и контрастный носок, чтобы создать единый внутренний образ. Есть ли более «оптимальный» контраст? Как видно ниже, работает прилично.

2) Как мне проще получить надежные измерения пикселей в миллиметры? Я могу использовать носок с рисунком (для увеличения плотности элементов), а затем две камеры с каждой точки обзора, но было бы здорово уменьшить количество необходимых мне камер.

Я собираюсь оставить здесь вопросы, чтобы не перегружать этот пост, но если у людей есть другие советы, это было бы очень полезно. Спасибо!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
48
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Мой подход к 1) по сути был бы «зеленым экраном» или «синим экраном».

Идея состоит в том, чтобы тщательно осветить фон, чтобы не было теней. Затем вы можете применить цветовой порог, и все, что не является этим конкретным цветом, будет передним планом. Пока что на ваших изображениях есть довольно много теней, которые можно устранить путем тщательного освещения. Вам придется поэкспериментировать с тем, насколько это проблема для вас.

2) Это немного сложнее, но возможно. Вам нужно будет знать положение и направление ваших камер, параметры объектива (например, F / #), параметры датчика (шаг пикселя / интервал). Обладая этой информацией, вы сможете найти крайние точки стопы и выполнить некоторые измерения. Вот общая схема того, как это может работать. Вы можете использовать вид сверху, чтобы определить среднюю линию стопы, чтобы знать, как далеко она находится от боковых камер. Затем у вас есть вся информация, необходимая для решения пиксельных измерений в реальном пространстве. Верхняя камера проста; поскольку все находится в плоскости (при условии, что камера правильно выровнена и исправлена), все, что вам нужно сделать, это положить линейку на пол и сделать несколько снимков. Затем вы можете измерить количество пикселей для преобразования в реальном пространстве прямо с изображения.

Что касается вашей проблемы трехмерного моделирования, я хотел бы указать, что вам на самом деле не нужно получать полное облако точек. Вы можете просто взять модель стопы и масштабировать ее для отображения на основе сделанных вами измерений. В любом случае удачи в вашем проекте!

Я думал о том, чтобы напечатать узор Aruco на внутренних синих стенках коробки. Затем я бы использовал это известное соотношение пикселей / мм для получения разрешения.

JG123 19.09.2018 20:23

Я не думаю, что это сработает так хорошо, как вы надеетесь, для бокового обзора. Я могу отредактировать свой ответ, чтобы проиллюстрировать это, но проблема в том, что существует неоднозначность между размером и расстоянием для объектов, просматриваемых через камеру. Если вы используете какой-либо метод определения расстояния, вы можете определить размер. Но в вашем случае маркер будет на другом расстоянии, чем стопа, а это значит, что в вашем приближении будет некоторая ошибка.

NateTheGrate 19.09.2018 20:35

Я думал о aruco вместо линейки для вида сверху. Да, этот вид сбоку на самом деле проблема. Является ли несколько камер с перекрывающимся полем обзора, чтобы я мог реализовать стерео, лучший способ сделать это? Я тоже думал об использовании Kinect, но думаю, что это значительно усложнит задачу.

JG123 20.09.2018 00:13

Конечно, это может сработать. Возможно, я не передал это четко, но я хотел сказать, что вы можете использовать верхнюю камеру, чтобы определить местонахождение ступни в 2-мерной плоскости; затем используйте эту информацию о местоположении, чтобы ограничить проблему измерения вида сбоку. Я бы не стал сразу переходить к нескольким камерам или кинекту; с тщательной геометрией вы можете получить хорошие измерения без этой дополнительной сложности.

NateTheGrate 20.09.2018 14:00

Понятно. Я считаю, что это хороший подход. Я собираюсь потратить некоторое время, чтобы подумать, как я могу ограничить вид сбоку и заставить его работать. Спасибо за ответ и комментарии.

JG123 21.09.2018 22:17

Другие вопросы по теме