roboforum.ru

Технический форум по робототехнике.

Определение линейных размеров объекта по его 2D снимкам

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Michael_K » 02 дек 2010, 17:18

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 02 дек 2010, 18:43

Michael_K,
Вам хочется просчитать все заранее и теоретически? Это невозможно!
Потому что на практике будет масса параметров, которые невозможно учесть.

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

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

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

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Myp » 02 дек 2010, 19:00

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Виктор Казаринов » 02 дек 2010, 19:16

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение GraphD » 02 дек 2010, 21:17

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

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

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

я так понял товарищу Туру именно геометрию посчитать надо, а как потом таблетки измерять - ещё такого вопроса не вставало.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 09 дек 2010, 18:16

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

GraphD, Ваша идея с принтером оказалась наилучшей, спасибо. Теперь могу хоть что то реальное начать делать хотя бы как подготовку. Сделал все на матлабе, сфотографировал точки своим домашним олимпусом IR-500
points-50x50.PNG
видно не вооруженным глазом что есть дисторсия.
а вот вырезка из этой картинки
points-cut-3x3.PNG
по этой вырезке можно оценить резолюцию олимпуса, примерно 17 пар линий на мм
вот график яркостей для этой вырезки с плоскотью-уровнем по которому можно отсекать затемненные места, но как это сделать эффективно?
points-3x3-level.PNG
Каким то кустарным образом я наверное смогу это сделать, но самое главное что дальше?
Из Википедии http://ru.wikipedia.org/wiki/%D0%94%D0% ... 0%B8%D1%8F например
вики-дисторсия.PNG
не видно как измерить коэффициенты F3, F5...
Вот параметры двух объективов одной серии с фокусным расстоянием 17.5 мм и 25 мм(раньше я их уже приводил)
param-obj2.PNG
Что за параметры указаны в дисторсии? Почему два параметра: диагональ и горизонталь? Как они скачут от рабочей дистанции. С чего бы это? Почему два параметра, ведь объектив круглый. Как то это не согласуется с википедией с идеей радиальной дисторсии.
Tur
 
Сообщения: 29
Зарегистрирован: 01 сен 2010, 08:47

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение GraphD » 10 дек 2010, 22:20

Tur писал(а):вот график яркостей для этой вырезки с плоскотью-уровнем по которому можно отсекать затемненные места, но как это сделать эффективно?

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

Может быть это два коэффициента дисторсии при r^2 и r^4. Обычно их используют на практике, зануляя остальные.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 14 дек 2010, 19:02

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

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 16 дек 2010, 20:21

Поторопился я с предыдущим постом, с теми вопросами. С координатами исходных точек все просто и ясно. Вот они наложенные на исходное фото.
2500points-w.PNG

А вот те же точки на графике (ось Y только не перевернута)
2500points-plot.PNG

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

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение GraphD » 17 дек 2010, 18:11

Начёт дисторсии смотри в этой статье (см. 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 раз.
GraphD
 
Сообщения: 157
Зарегистрирован: 01 окт 2005, 00:56
Откуда: С.-Петербург

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 19 дек 2010, 19:16

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение GraphD » 19 дек 2010, 23:09

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 20 дек 2010, 12:55

Извиняюсь, опять ничего не понял: я же хочу не калибровать (на первом этапе по крайней мере), а дисторсию скомпенсировать без калибровки. И это возможно на сколько я понял из статьи. Вот цитата из введения
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.

Там дальше описан метод и алгоритм как они предлагают это делать. Но я пока плохо понимаю это, так что мне нужна помощь именно в этом. Разве я не на верном пути?
Tur
 
Сообщения: 29
Зарегистрирован: 01 сен 2010, 08:47

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение GraphD » 20 дек 2010, 18:52

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

Re: Определение линейных размеров объекта по его 2D снимкам

Сообщение Tur » 20 дек 2010, 20:17

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

Пред.След.

Вернуться в Компьютерное зрение

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

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