roboforum.ru

Технический форум по робототехнике.
Текущее время: 11 май 2025, 12:15

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 02 дек 2010, 17:18 
Не в сети
Аватара пользователя

Зарегистрирован: 07 окт 2009, 00:29
Сообщения: 6028
Откуда: СПб
Да я не про это хотел сказать - на реальном объекте падают тени, блестят грани, он подпрыгивает от вибрации, резкость наводится неидеально и т.д. и т.п.
Поэтому ценность этих "сеточек" в реальных приложениях очень условна.
Они работают, конечно - кто спорит, просто вживую будут другие проблемы и другие условия.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 02 дек 2010, 18:43 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
Michael_K,
Цитата:
Вам хочется просчитать все заранее и теоретически? Это невозможно!
Потому что на практике будет масса параметров, которые невозможно учесть.

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

Цитата:
Практически работает _только_ один способ - откалиброваться на месте.
Взять десяток реальных или изготовленныых "идеальных" таблеток в реальных условиях
освещения, резкости, механической жесткости конструкции - померить каждую микрометром и откалибровать вашу камеру по ним.
Это означает изготавливать самим идеальную таблетку. Не представляю себе во что это может обойтись. Плоскую, цилиндрическую еще можно. Но как по ней калибровать? Не вижу до конца процедуру. Как только с ее помощью измерить дисторсию? С помощью сеток же примерно ясно как это сделать: просто померить программно искривления на изображении и аппроксимировать их. Как это сделать без сетки?

GraphD,
Цитата:
Без микрометра будет точнее, принтер же есть 1200т/д

Значит дело за тем чтобы найти файл с изображением сетки(точек) и отпечатать его размером 20х20 мм? Но принтер даст 20+/- сколько мм? Скажем точки через миллиметр, 400 точек.
Я бы сам сделал такой файл, но у меня такое недоверие к матлабу... видно невооруженным глазом что точки разные по размеру получаются, печать еще добавит искажений... не знаю, попробую. Я бы миллиметровку взял, но тогда специальную программу для нее писать надо, с точками вроде проще.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 02 дек 2010, 19:00 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
а что корел дро уже не катит?
печатаем на А4 линию длинной 200 мм
меряем её штангенциркулем, если что вводим коррекцию для печати
вуаля, доли миллиметра в кореле будут на бумаге пропечатаны.
любые миры в кореле оч удобно рисовать)

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 02 дек 2010, 19:16 
Не в сети
Аватара пользователя

Зарегистрирован: 21 июн 2006, 11:22
Сообщения: 1387
Откуда: г. Омск
Skype: victorkazarinov
прог. языки: почти все понемногу
ФИО: Казаринов Виктор Геннадьевич
А м.б. уже пора применить к данному заданию нормальную экспертную систему? Скоро смогу выложить самую свежую версию моей программной платформы AIAssistant. В нее напрямую с помощью встроенного в нее OpenCV, можно закачивать изображения с камеры, производить экспертные логические выводы, формировать диалог с пользователем в виде удобного обычного GUI.
В таблетках есть множество проблем, основой которых по большей части является изменчивость реального наблюдаемого поля зрения. Удобнее было бы сделать всю систему обучающуюся в определенных пределах учителем и самостоятельно. Это позволило бы улучшить характеристики системы.
Со своей стороны я мог бы помогать вам в вашем программировании на языке ECLIPS. Конечно, это всего лишь мое предложение. Вам решать.

_________________
Проект Robosonic RS http://www.aigod.com


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 02 дек 2010, 21:17 
Не в сети

Зарегистрирован: 01 окт 2005, 00:56
Сообщения: 157
Откуда: С.-Петербург
Tur писал(а):
Значит дело за тем чтобы найти файл с изображением сетки(точек) и отпечатать его размером 20х20 мм? Но принтер даст 20+/- сколько мм? Скажем точки через миллиметр, 400 точек.

Очень просто, в Word графикой рисуешь квадраты, указывая размеры и позиции, затем масштабируешь в N раз и отдаёшь на печать, получается точно те размеры, что вводил. Работы на 15 мин. В методе Zhanga используются матрицы до 10х10 тчк, больше смысла нет...

Michael_K писал(а):
Да я не про это хотел сказать - на реальном объекте падают тени, блестят грани, он подпрыгивает от вибрации, резкость наводится неидеально и т.д. и т.п.

я так понял товарищу Туру именно геометрию посчитать надо, а как потом таблетки измерять - ещё такого вопроса не вставало.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 09 дек 2010, 18:16 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
Виктор Казаринов, спасибо за предложение, возможно я им воспользуюсь.
Цитата:
В таблетках есть множество проблем, основой которых по большей части является изменчивость реального наблюдаемого поля зрения.
Я этого не понял. Не могли бы Вы это пояснить.
Предполагается что наша система будет работать так: система установлена на линии или в лаборатории. система переведена в режим калибрации. Фотографируется матрица и процессором вычисляются все необходимые параметры. Все, теперь система может работать. Т.е. мне необходимы алгоритмы если и не полной калибрации, то по крайней мере устранения дисторсии и введения сетки/системы координат на пиксели чтобы можно было измерять. Конечно полная калибрация была бы идеальным вариантом, но пока она мне не по зубам, с дисторсией бы разобраться.

GraphD, Ваша идея с принтером оказалась наилучшей, спасибо. Теперь могу хоть что то реальное начать делать хотя бы как подготовку. Сделал все на матлабе, сфотографировал точки своим домашним олимпусом IR-500
Вложение:
points-50x50.PNG
points-50x50.PNG [ 656.18 КиБ | Просмотров: 3008 ]
видно не вооруженным глазом что есть дисторсия.
а вот вырезка из этой картинки
Вложение:
points-cut-3x3.PNG
points-cut-3x3.PNG [ 17.87 КиБ | Просмотров: 2973 ]
по этой вырезке можно оценить резолюцию олимпуса, примерно 17 пар линий на мм
вот график яркостей для этой вырезки с плоскотью-уровнем по которому можно отсекать затемненные места, но как это сделать эффективно?
Вложение:
points-3x3-level.PNG
points-3x3-level.PNG [ 75.4 КиБ | Просмотров: 2981 ]
Каким то кустарным образом я наверное смогу это сделать, но самое главное что дальше?
Из Википедии http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%B8%D1%8F например
Вложение:
вики-дисторсия.PNG
вики-дисторсия.PNG [ 53.84 КиБ | Просмотров: 2976 ]
не видно как измерить коэффициенты F3, F5...
Вот параметры двух объективов одной серии с фокусным расстоянием 17.5 мм и 25 мм(раньше я их уже приводил)
Вложение:
param-obj2.PNG
param-obj2.PNG [ 57.5 КиБ | Просмотров: 2973 ]
Что за параметры указаны в дисторсии? Почему два параметра: диагональ и горизонталь? Как они скачут от рабочей дистанции. С чего бы это? Почему два параметра, ведь объектив круглый. Как то это не согласуется с википедией с идеей радиальной дисторсии.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 10 дек 2010, 22:20 
Не в сети

Зарегистрирован: 01 окт 2005, 00:56
Сообщения: 157
Откуда: С.-Петербург
Tur писал(а):
вот график яркостей для этой вырезки с плоскотью-уровнем по которому можно отсекать затемненные места, но как это сделать эффективно?

Это делается так: захватывается в круг радиусом на пару пикселей больше самого пика и ищется центр масс инвертированных пикселей внутри.
Tur писал(а):
Что за параметры указаны в дисторсии? Почему два параметра: диагональ и горизонталь? Как они скачут от рабочей дистанции. С чего бы это?

Может быть это два коэффициента дисторсии при r^2 и r^4. Обычно их используют на практике, зануляя остальные.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 14 дек 2010, 19:02 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
GraphD, я не понял только зачем пиксели инвертировать. Скоро закончу получение координат подобных сеток. Что дальше - вот вопрос... Пытаюсь понять Вашу статью
Вложение:
Там есть итерационный алгоритм. Подойдет ли он мне?

Есть еще вопрос на другую тему.
Один человек производит зубчатые колеса и другие детали правильной формы. Их можно отсканировать на производственной линии и т.о. получить размеры детали. Предлагается сравнивать эти размеры с приведенными в формате DXF. С этим форматом я до сих пор не работал, не знаком.
Вопрос: можно ли из этого формата извлечь программно точные размеры детали-эталона?
На сколько я понял DXF не картинка, а чертеж. Если он упрощен до одной проекции, то можно ли с него без автокада снять размеры детали хотя бы плоские? Написать на чем-нибудь exe и все.
Он хочет чтобы при смене файла установка сама отбраковывала новые детали по новому шаблону.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 16 дек 2010, 20:21 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
Поторопился я с предыдущим постом, с теми вопросами. С координатами исходных точек все просто и ясно. Вот они наложенные на исходное фото.
Вложение:
2500points-w.PNG
2500points-w.PNG [ 863.46 КиБ | Просмотров: 2903 ]

А вот те же точки на графике (ось Y только не перевернута)
Вложение:
2500points-plot.PNG
2500points-plot.PNG [ 42.13 КиБ | Просмотров: 2910 ]

внутри белых точек их приближения по центру масс.
При более детальном рассмотрении приближения вовсе не внутри конечно же. Вот первые четыре точки (белые точки - целопиксельные, синие - их приближения)
Вложение:
4+4 points.PNG
4+4 points.PNG [ 6.19 КиБ | Просмотров: 3225 ]

сумма всех отклонений по Y, т.е. сумма всех разностей между целыми значениями строчек и их приближениями для всех 2500 точек примерно 30. Для Х, т.е. для колонок получилось примерно 43. Должны то быть нули, но получаются вот такие числа.
С первым шагом разобрался, алгоритм работает надежно, начинаю с центра картинки и иду к верхней левой точке...
Но что дальше, как дисторсию исправлять, пока неясно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 17 дек 2010, 18:11 
Не в сети

Зарегистрирован: 01 окт 2005, 00:56
Сообщения: 157
Откуда: С.-Петербург
Начёт дисторсии смотри в этой статье (см. 2.3)
Короче, для нашей модели камеры мы делали так:

Код:
xd=...; //x~ координата с дисторсией (пикс.)
yd=...; //y~ координата с дисторсией (пикс.)
k=sqrt((xd-x0)*(xd-x0)+(yd-y0)*(yd-y0)); //r~
r=k; //исходная длина радиус-вектора
z=0.0; //f

do //компенсация дисторсии
{
  r+=z; //длина радиус-вектора
  d=1.0+k1*(r*r-r0*r0)+k2*(r*r*r*r-r0*r0*r0*r0); //D(r)
  if(abs(z)<abs(k-r*d))
    break;
  z=k-r*d;//f
}
while(abs(z)>0.000001);//small const

x=(xd-x0)/d+x0; //x координата без дисторсии (пикс.)
y=(yd-y0)/d+y0; //y координата без дисторсии (пикс.)


Последний раз редактировалось GraphD 19 дек 2010, 23:10, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 19 дек 2010, 19:16 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
GraphD, видимо я что то капитально не понимаю в этой компенсации дисторсии. Ваш код основан на k1 и k2, а они то как раз и неизвестны, их то и надо определить, в этом вся проблема. А как их можно определить? Видимо опираясь на свойства исходных точек, на то что они расположены группами лежащими на прямых линиях и/или на равенство расстояний между точками. Так? Если так, то видимо следует основываться на формулах 3.7 - 3.11, но их я не понимаю. Разобрать бы какой-нибудь пример, тогда наверное все бы стало ясно. Если скажем на сцене имеем три точки A, B, C, лежащие на одной прямой и их изображения Ad, Bd, Cd. Допустим также что AB = BC. Известен также центр матрицы О(xo, yo).
Вложение:
AdBdCd.PNG
AdBdCd.PNG [ 3.69 КиБ | Просмотров: 3137 ]
Реально есть на изображении только точки Ad, Bd, Cd, и О(xo,yo). Синие точки Ad,Bd,Cd, я специально сместил по векторам ОА,ОВ,ОС как бы получая подушко-образную дисторсию.Вот теперь бы записать все уравнения и понять алгоритм нахождения k1 и k2...
Скажем находим прямую по точкам Ad, Bd, Cd. Пересечения этой прямой с прямыми ОАd,ОВd,ОСd и дадут искомые точки A, B, C. (обошлись без k1 и k2 :cry: ) Бред конечно, но каков же здесь алгоритм?

Вот это меня останавливает
Вложение:
3.12.PNG
3.12.PNG [ 2.83 КиБ | Просмотров: 3107 ]
как записать эту формулу? С Марквардтом разберусь потом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 19 дек 2010, 23:09 
Не в сети

Зарегистрирован: 01 окт 2005, 00:56
Сообщения: 157
Откуда: С.-Петербург
Статья требуется только как иллюстрация процесса компенсации, а калибровать нужно zhang-ом, т.е. шахматной доской. У zhang-а просто небыло нужного этапа компенсации, в этом и была проблема.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 20 дек 2010, 12:55 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
Извиняюсь, опять ничего не понял: я же хочу не калибровать (на первом этапе по крайней мере), а дисторсию скомпенсировать без калибровки. И это возможно на сколько я понял из статьи. Вот цитата из введения
Цитата:
In our work, we propose to estimate and compensate for the radial lens distorsion without full knowledge of 3-D point coordinates. In this case, only radial distorsion parameters are estimated, unlike the extrinsic and intrinsic parameters of the linear camera.

Там дальше описан метод и алгоритм как они предлагают это делать. Но я пока плохо понимаю это, так что мне нужна помощь именно в этом. Разве я не на верном пути?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 20 дек 2010, 18:52 
Не в сети

Зарегистрирован: 01 окт 2005, 00:56
Сообщения: 157
Откуда: С.-Петербург
Я пока не читал всю статью... Интересно, зачем тебе коэф. дисторсии без внутр./внешн. параметров камеры?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Определение линейных размеров объекта по его 2D снимкам
СообщениеДобавлено: 20 дек 2010, 20:17 
Не в сети

Зарегистрирован: 01 сен 2010, 08:47
Сообщения: 29
Как зачем? Чтобы ее скомпенсировать. Как скомпенсировать дисторсию без k1 и k2 ?
Статья утверждает что можно скомпенсировать дисторсию, т.е. узнать k1 и k2 без знания внешних и внутренних параметров камеры. Я поэтому и ухватился за эту статью. В ней предлагается считать гомографию (формула 3.2). Пытаюсь разобраться с этим, но вряд ли смогу это сделать без помощи.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 76 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO