phpInsIDE 0 Жалоба Опубликовано March 16, 2011 Здравствуйте, уважаемые мастера и боги компьютерного зрения. Прошу у Вас помощи разобраться мне с одной задачей. Знаю, что эта тема на данном форуме обсуждалось "тысячу" раз, однако хотелось бы вашей непосредственной помощи в решении возникшей проблемы. Имеется объект с проецированной на него через проектор красной линией . Вопрос состоит в следующем: как выделить на фоне всего остального спроецированный псевдолуч и как получить координаты каждой его точки (усреднить информацию о каждом пикселе)? Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 16, 2011 самое простое - из красного канала вычесть другой. после подбора коэффициентов останется яркая полоса(на месте красных точек). Дальше пороговое преобразование. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
phpInsIDE 0 Жалоба Опубликовано March 16, 2011 самое простое - из красного канала вычесть другой. после подбора коэффициентов останется яркая полоса(на месте красных точек). Дальше пороговое преобразование. Это понятно. Спасибо большое. А что можно сделать дальше с полученной полосой, как усреднить, чтобы можно было манипулировать ею как совокупностью точек с координатами x и y? Ну то есть сейчас линия "в ширину" несколько пикселей, а хотелось бы уменьшить до одного так, чтобы информация о рельефе объекта сохранилась (может, усреднением или чем-то подобным).. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Виталий 6 Жалоба Опубликовано March 16, 2011 Если линия будет вертикальной или не сильно наклонной, то можно найти средний пиксель в каждой строке и дальше работать с массивом пикселей. Можно пойти дальше и использовать скелетизацию(тема где-то была с примером руки). Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
phpInsIDE 0 Жалоба Опубликовано March 16, 2011 Я очень благодарен всем за предоставляемую помощь. Если возможно, советуйте еще как можно поступить в решении вышеописанной проблемы, а я буду реализовывать и отписываться о результатах. Также хотелось бы узнать мнение товарища Smorodov, если несложно, конечно Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Smorodov 579 Жалоба Опубликовано March 16, 2011 Вот тут посмотрите: http://www.compvision.ru/forum/index.php?showtopic=198&st=0&p=790&hl=%D1%81%D0%BA%D0%B0%D0%BD%D0%BD%D0%B5%D1%80&fromsearch=1&#entry790 Если бинаризация уже пройденный этап и дает хороший результат, то можно усреднить по строкам (найти центр масс для каждой строки) и получим линию. Далее надо найти разрывы (большие расстояния по горизонтали в соседних точках), и по ним разбить линию на куски. Затем эти куски переведите в аналитический вид ( разложите в ряд Фурье, аппроксимируйте полииномом Чебышева или постройте сплайн), уберите высокие частоты это уже можно использовать для расчетов. Есть еще мысль по поводу выделения самой линии. Сначала снимите картинку без луча, а затем с лучом и вычитанием можно получить достаточно точную картинку. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
phpInsIDE 0 Жалоба Опубликовано March 17, 2011 Далее надо найти разрывы (большие расстояния по горизонтали в соседних точках), и по ним разбить линию на куски. Затем эти куски переведите в аналитический вид ( разложите в ряд Фурье, аппроксимируйте полииномом Чебышева или постройте сплайн), уберите высокие частоты это уже можно использовать для расчетов. А зачем нужно разбивать линию на куски? Есть еще мысль по поводу выделения самой линии. Сначала снимите картинку без луча, а затем с лучом и вычитанием можно получить достаточно точную картинку. Я работаю над трехмерным сканером и буду обрабатывать каждое изображение видео потока, поэтому этот вариант, как мне кажется, не подойдет. Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах