СПОСОБ И СИСТЕМА КАЛИБРОВКИ КАМЕРЫ
METHOD AND SYSTEM OF CALIBRATING CAMERA

Предпосылки создания изобретения
Настоящее изобретение относится к способу и системе калибровки камеры.
Для этого сначала определяют параметры дисторсии объектива, затем определяют фокусное расстояние и, наконец, определяют посторонние положения камеры/камер.
На основе описанной методики в настоящем изобретении предложены усовершенствованные способ и система калибровки камеры.
Краткое изложение сущности изобретения
В одном из примеров осуществления предложена система калибровки камеры, содержащая:
источник энергии и калибруемую камеру, при этом по меньшей мере источник энергии или камера установлены на механическом приводе с возможностью перемещения относительно друг друга,
процессор, соединенный с источником энергии, механическим приводом и камерой, при этом процессор запрограммирован на:
управление механическим приводом с целью перемещения по меньшей мере источника энергии или камеры относительно друг друга через множество дискретных точек целевой модели калибровки,
управление камерой в каждой из дискретных точек с целью получения цифрового изображения,
определение параметров дисторсии объектива на каждом изображении,
определение фокусного расстояния камеры, содержащей любой соединенный с камерой объектив, путем:
выбора первоначального фокусного расстояния,
использования алгоритмов в сочетании с первоначальным фокусным расстоянием, физическими размерами пикселов, координатами источника энергии неискаженного изображения в каждой точке последовательности и точными положениями механического привода в каждой точке последовательности с целью определения положения камеры относительно каждой дискретной точки,
определения того, насколько плотно сгруппированы положения камеры, и
уточнения в числовой форме первоначального фокусного расстояния, пока определенные дискретные точки не будут наиболее плотно упакованы, и
определение постороннего (несвойственного) положения камеры для каждого изображения.
Процессор может определять параметры дисторсии объектива путем:
выбора модели коррекции дисторсии и осуществления первоначального расчета параметров этой модели с целью коррекции наблюдаемой дисторсии,
выбора показателя прямолинейности для измерения и представления в количественной форме колинеарных точек на протяжении дискретизированной линии,
использования показателя прямолинейности и уточнения в числовой форме первоначального расчета параметров, пока линии на изображении со скорректированной дисторсией не станут максимально прямыми.
Процессор может определять постороннее положение камеры путем:
создания пучка векторов на геометрической основе,
создания пучка векторов на основе обработки изображений,
выбора показателя для измерения сходства двух пучков векторов, и
уточнения расчетного положения камеры относительно источника энергии с целью доведения до максимума сходства пучков векторов.
В одном из примеров после того, как зарегистрированы цифровые изображения, процессор дополнительно выполняет следующие шаги обработки изображений:
определяет, какие области соседних пикселов на изображении имеют интенсивность, превышающую выбранное пороговое значение,
генерирует список таких областей и пикселов, относящихся к каждой области, с указанием координат и интенсивности пикселов,
удаляет из этого списка любые области, содержащие слишком малое или слишком число большое составляющих пикселов, определенное в зависимости от характеристик камеры, объектива и источника энергии,
удаляет из списка все области, не отвечающие критериям формы, и
определяет центр наибольшей остающейся области.
Процессор может определять центр путем подгонки эллипса к пикселу области и использования ее центра или путем вычисления центра тяжести пикселов в области.
Критерием формы может являться симметрия, при этом симметрия проверяется путем нахождения поперечного сечения области, образующего наиболее протяженный профиль с точки зрения расстояния от первого обнаруженного пиксела до последнего обнаруженного пиксела, и сравнения этого расстояния с расстоянием, определенным при использовании перпендикуляра к наиболее длинной оси.
В одном из примеров процессор управляет механическим приводом с целью его перемещения таким образом, чтобы последовательность точек была поделена на несколько совокупностей, каждая из которых содержит по меньшей мере 3 точки в плоскости и по меньшей мере одну точку вне плоскости, заданной остальными точками.
Процессор определяет точные относительные смещения этих точек путем использования позиционной обратной связи с механическим приводом.
Например, каждая совокупность создается путем применения отличающегося поступательного и углового сдвига с шестью степенями свободы к стандартной нетрансформированной совокупности точек с получением новой совокупности дискретных точек, которые имеют такие же относительные положения.
В другом примере осуществления предложен способ калибровки камеры, включающий:
управление механическим приводом с целью перемещения по меньшей мере источника энергии или камеры относительно друг друга через множество дискретных точек на целевой модели калибровки,
получение цифрового изображения в каждой из дискретных точек с помощью камеры,
определение параметров дисторсии объектива на каждом изображении,
определение фокусного расстояния камеры, содержащей любой соединенный с камерой объектив, и
определение постороннего положения камеры для каждого изображения.
Краткое описание чертежей
На фиг. 1 проиллюстрирован один из примеров системы калибровки цифровой камеры, и
на фиг. 2 показана блок-схема, на которой проиллюстрирован процессор системы, показанной на фиг. 1.
Описание вариантов осуществления
Изобретение относится к способу и система калибровки камеры.
В настоящем изобретении определяются характеристики камеры с любым (известным) спектром чувствительности с точки зрения ее собственных и посторонних параметров. Собственными являются параметры, которые затрагивают проекцию наблюдаемой реальной сцены на формирующее изображения электронное оборудование камеры, и включают по меньшей мере одно из следующего: параметры дисторсии объектива, фокусное расстояние объектива, размер пикселов и ортогональность формирующего изображения электронного оборудования оптической оси объектива.
Посторонние параметры включают по меньшей мере местонахождение камеры относительно точки отсчета или ее ориентацию относительно выбранного определения оси.
Как показано на сопровождающих чертежах, система 10 содержит по меньшей мере одну камеру 12 и/или по меньшей мере один источник 14 энергии.
Следует учесть, что может использоваться несколько камер 12 и несколько источников 14 энергии.
Система также содержит процессор 16, соединенный с источником энергии и/или камерой. Процессор 16 имеет несколько модулей, функциональные возможности которых будут подробнее описаны далее.
В одном из примеров осуществления описанные далее модули могут быть реализованы посредством машиночитаемой среды, в которой воплощены команды, которые при их выполнении машиной побуждают ее осуществлять любой из описанных выше способов.
В другом примере осуществления модули могут быть реализованы с использованием программно-аппаратного обеспечения, специально запрограммированного на осуществление описанных в изобретении способов.
Следует учесть, что варианты осуществления настоящего изобретения не ограничены такой архитектурой и также могут находить применение в системе с распределенной или одноранговой архитектурой. Так, проиллюстрированные модули могут размещаться в одном или нескольких серверах, управляемых одной или несколькими организациями.
Следует также учесть, что в любом из этих случаев модули образуют физическое устройство с физическими модулями специально для выполнения шагов описанного в изобретении способа.
С процессором 16 соединена память 28.
В одном из примеров осуществления для выполнения описанной калибровки используется механический привод 18 в виде роботизированной руки, перемещающей источник энергии в поле обзора камеры.
В проиллюстрированном примере осуществления механический привод 18 может перемещаться серводвигателями (не показанными) под управлением процессора 16.
Положение роботизированной руки 18 в любой заданный момент является известным, и камера регистрирует изображения источника энергии.
Каждое изображение роботизированной руки и источника энергии, регистрируется камерой и доставляется в процессор 16. Камера 12 может быть сконфигурирована таким образом, чтобы сократить время экспозиции и/или раскрыть ирисовую диафрагму объектива, в результате чего источник энергии является видимым, и при этом исключается большая часть фона. Описанные далее алгоритмы действуют независимо от того, сделано ли это, и требуют лишь одного изображения с видимым источником энергии.
Сначала процессор 16 определяет характеристики дисторсии объектива, а затем определяет фокусное расстояние и, наконец, посторонние положения камеры/камер. Эти шаги буду подробнее описаны далее.
После того как зарегистрированы цифровые изображения, модуль 20 обработки цифровых изображений выполняет следующие шаги обработки изображений с целью реализации описанных выше принципов.
1) Определяет, какие области соседних пикселов на изображении имеют интенсивность, превышающую выбранное пороговое значение. Генерирует список таких областей и пикселов, относящихся к каждой области, с указанием координат и интенсивности пикселов.
2) Удаляет из этого списка любые области, содержащие слишком малое или слишком число большое составляющих пикселов, определенное в зависимости от характеристик камеры, объектива и источника энергии.
3) Удаляет из списка все области, не отвечающие критериям формы, таким как симметрия. Симметрия проверяется путем нахождения поперечного сечения области, образующего наиболее протяженный профиль с точки зрения расстояния от первого обнаруженного пиксела до последнего обнаруженного пиксела. Это расстояние сравнивается с расстоянием, определенным при использовании перпендикуляра к наиболее длинной оси. Если соотношение двух расстояний превышает заданное допустимое отклонение от единицы, область отбрасывается.
4) Находит центр наибольшей остающейся области. Он может быть найден, например, путем подгонки эллипса к пикселу области и использования ее центра или путем вычисления центра тяжести пикселов в области.
Затем модуль 22 определения параметров дисторсии объектива процессора 16 выполняет следующие шаги определения параметров дисторсии объектива.
1) Неподвижно устанавливает камеру в положение, позволяющее без помех наблюдать перемещение роботом источника энергии.
2) Побуждает робота перемещать источник энергии по ряду прямых линий. Хотя предполагается, что линии охватывают все поле обзора камеры, это не является строго необходимым.
3) Получает в нескольких (по меньшей мере трех) точках на протяжении каждой линии, а затем обрабатывает изображение источника энергии, как описано выше.
4) Выбирает модель коррекции дисторсии и осуществляет первоначальный расчет параметров этой модели с целью коррекции наблюдаемой дисторсии. При этом используется расширенная форма модели Брауна дисторсии объектива, и используются предшествующие знания или генетический алгоритм с целью определения первоначального исходного положения.
5) Выбирает показатель прямолинейности, определяющий и представляющий в количественной форме степень колинеарности точек на протяжении каждой дискретизированной линии, использованной на шаге 2. Это делается путем подбора подогнанной методом наименьших квадратов линии с наилучшим приближением погрешности на протяжении каждой из дискретизированных точек для каждой прямой. В таком случае показателем является среднеквадратичное расстояние по вертикали от каждой дискретизированной точки до соответствующей ей линии с наилучшим приближением.
6) Использует полученный на шаге 5 показатель. Уточняет в числовой форме выполненный на шаге 4 первоначальный расчет параметров, пока линии на изображении со скорректированной дисторсией (полученном с использованием модели дисторсии и текущего набора параметров) не станут максимально прямыми. Для этого применяются методы многомерной нелинейной численной оптимизации для сведения к минимуму показателя, описанного на шаге 5. В частности, применяются методы с перешагиванием и метод Флетчера-Ривса определения сопряженных градиентов.
После этого модуль 24 определения фокусного расстояния процессора 16 следующим образом определяет фокусное расстояние.
1) Определяет характеристики дисторсии объектива камеры.
2) Неподвижно устанавливает камеру в положение, позволяющее без помех наблюдать перемещение роботом источника энергии.
3) Перемещает робота таким образом, чтобы он задерживался в последовательности дискретных точек. Эта последовательность точек поделена на несколько совокупностей. Каждая совокупность содержит по меньшей мере 3 точки в плоскости и по меньшей мере одну точку вне плоскости, заданной остальными точками. Точные относительные смещения этих точек определяются путем использования позиционной обратной связи с роботом. Каждая совокупность создается путем применения отличающегося поступательного и углового сдвига с шестью степенями свободы к стандартной нетрансформированной совокупности точек с получением новой совокупности дискретных точек, которые имеют такие же относительные положения. Например, в одном из опытных вариантов осуществления каждая совокупность состоит из четырех точек, образующих тетраэдр. В каждом из пяти положений было создано четыре тетраэдра под углом вверх влево, вверх вправо, вниз влево и вниз вправо. В результате общее число тетраэдров составило 20.
4) Обрабатывает изображение камеры в каждой из описанных на шаге 3 дискретных точек, как описано выше, с целью определения координат источника энергии.
5) Использует определенные параметры дисторсии, чтобы найти положение неискаженных пикселов для каждой зарегистрированной координаты, полученной на шаге 4.
6) Выбирает первоначальное фокусное расстояние на основании предшествующих знаний или указанного изготовителем номинального фокусного расстояния.
7) Применяет алгоритмы, описанные в документе RANSAC (Martin А. Fischler и Robert С. Bolles. 1981 г. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. Commun. ACM 24, 6 (июнь 1981 г. ), 381-395. DOI=10.1145/358669.358692 http://doi.acm.org/10.1145/358669.358692) или документе Kieper (L. Kneip, D. Scaramuzza, R. Siegwart, "A Novel Parametrization of the Perspective-Three-Point Problem for a Direct Computation of Absolute Camera Position and Orientation", Proc. of The IEEE Conference on Computer Vision and Pattern Recognition (CVPR), Колорадо-Спрингс, США, июнь 2011 г. ) в сочетании с предполагаемым фокусным расстоянием; физическими размерами пикселов; координатами источника энергии неискаженного изображения в каждой точке последовательности; и точными положениями робота в каждой точке последовательности с целью определения положения камеры относительно каждой совокупности точек.
8) Определяет, насколько плотно сгруппированы определенные положения камеры с шестью степенями свободы. Теоретически положения камеры должны быть идентичными, поскольку камера была установлена неподвижно на шаге 2. Для этого используется сумма стандартных отклонений каждого из положений с шестью степенями свободы в качестве показателя плотности. Тем самым эта чувствительность дополнительно повышается путем наблюдения последовательности точек в двух неподвижных положениях и использования суммы стандартных отклонений относительного положения камер, которые, разумеется, должны быть постоянными.
9) Уточняет в числовой форме предполагаемое фокусное расстояние объектива, пока определенные точки камеры не будут наиболее плотно упакованы в соответствии с показателем, полученным на шаге 8. При этом выполняется простой поиск методом "грубо-точного" последовательного перебора в силу прерывистой природы показателя и его одномерности.
Затем модуль 26 определения посторонних положений камеры процессора 16 следующим образом определяет посторонние положения камер.
1) Определяет параметры дисторсии объектива камеры. Требуются по меньшей мере параметры радиальной и тангенциальной дисторсии, считающиеся значимыми.
2) Определяет фокусное расстояние камеры (или добавляет его к списку неизвестных величин, как описано далее).
3) Неподвижно устанавливает камеру/камеры на механическом основании, желательном для конкретного применения, неподвижно устанавливает механическое основание таким образом, чтобы камеры без помех наблюдали перемещение роботом источника энергии.
4) Перемещает робота через последовательность дискретных точек. Регистрирует изображения в каждой дискретной точке и находит центр источника энергии на изображении камеры, как описано ранее. Также регистрирует в каждой точке точное положение источника энергии, определенное роботом.
5) Определяет первоначальное расчетное положение камеры относительно робота. Для этого используются предшествующие знания о физическом расположении или генетический алгоритм.
6) Создает пучок векторов на основе изображений. Это делается путем использования определенных параметров дисторсии в сочетании с физическими размерами пикселов и фокусным расстоянием. Это фокусное расстояние может быть известно априорно или может быть добавлено в качестве седьмой неизвестной величины, подлежащей определению.
7) Создает пучок векторов на геометрической основе. Они создаются путем использования предполагаемого положения камеры с шестью степенями свободы (шаг 5) и известного положения источника энергии в каждой точке последовательности.
8) Выбирает показатель для определения сходства двух пучков векторов. Для этого в качестве показателя используется сумма углов между соответствующими векторами.
9) Уточняет расчетное положение камеры с шестью степенями свободы относительно робота (и фокусное расстояние камеры, если оно не известно априори) с целью доведения до максимума сходства двух пучков векторов. Для этого используется алгоритм Флетчера-Ривса определения сопряженных градиентов (Fletcher, R. и Reeves, С., "Function minimization by conjugate gradients", Computer Journal 7, 140-054 (1964)) или многомерные нелинейные алгоритмы численной оптимизации с перешагиванием (Snyman, J., "An improved version of the original leap-frog dynamic method for unconstrained minimization: Lfop1(b)," Applied Mathematics and Modelling 7, 216-218 (1983)).
10) В случае калибровки множества камера и при желании выбирает одну камеру или другую известную точку качестве система отсчета для набора камер и отображает определенные положения камер относительно этой точки.
Далее более подробно описаны математические вычисления, лежащие в основе описанных шагов.
abc
abc
Далее используется следующая система математических обозначений: трехмерный вектор V означает вектор, направленный от точки a в сторону точки b и выраженный в виде его проекций на оси системы с ортогональных координат. V используется, когда величина вектора не известна или не имеет значения.
abc
ab
a
T означает перемещение или смещение точки b относительно точки . R означает эйлерову матрицу поворота 3×3, отображающую поворот системы a с ортогональной осью относительно системы b с ортогональной осью (и в виде ее проекций на нее). Отдельные элементы трехмерных векторов обозначаются как x, y или z, а элементы двухмерных векторов обозначаются во избежание путаницы как горизонтальные (h) и вертикальные (ν).
Соответствующие модули процессора 16 выполняют следующие функциональные шаги с данными зарегистрированных изображений.
1.1) Осуществляют маркировку связных компонент всех пикселов с более высокой яркостью, чем выбранный порог.
1.2) Отбрасывают все компоненты, не отвечающие критериям размера, зависящим от типа источника энергии и разрешения камеры.
1.3) Отбрасывают все компоненты, не отвечающие критериям симметрии формы, т.е. следующим образом для каждой связной компоненты:
a) подбирают линию с наилучшим приближением для каждого из пикселов компоненты:
при этом:
i
i
(x, y) = кратный i пиксел компоненты
N = число пикселов в компоненте и
= коэффициенты для линии y=mx+c.
Уравнение 1
A
A,
max
A,
min
L=L-L
при этом:
iЄ(0, N-1)
N = число пикселов, и
m, c = как указано в Уравнении 1.
Уравнение 2
б) определяют ширину компоненты, перпендикулярной линии с наилучшим приближением.
P
P,
max
P,
min
L-L-L
при этом:
iЄ(0, N-1)
N = число пикселов, и
m, c = как указано в Уравнении 1.
Уравнение 3
A
P
Затем процессор сравнивает соотношение длины (L) и ширины (L) и отбрасывает его, его оно не отвечает заданным критериям.
1.4) Определяют центр каждой компоненты соответствующим методом, такими как два метода, описанные далее в целях иллюстрации.
а) Центр тяжести
I(x, y) = интенсивность пискела в положении (x, y),
i
i
(x, y) = координаты кратного i пиксела компоненты
iЄ(0, N-1) и
N = число пикселов в компоненте.
Уравнение 4
б) Подгонка эллипса путем (например) сведения к минимуму следующего показателя:
0
1
2
metric=cπab+с(CS-ES)+c(WS-2ES),
при этом
n
c = энный весовой член,
CS = сумма интенсивностей по результатам вычисления центра,
I(h, ν) = интенсивность изображения с двухмерной координатой (h, v),
α=(1-(CR-ER))
h
h
W=h∈(E-(a+3), E+(a+3)),
ν
ν
ν∈(E-(a+3), E+(a+3))
h
ν
(E, E) = центр эллипса,
а = большая ось эллипса,
b = малая ось эллипса
θ = угол большой оси к горизонтали.
Уравнение 5
Определение параметров дисторсии объектива
i
<mrow><msubsup><mi>P</mi><mrow><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>d</mi></msubsup></mrow>
Для определения параметров дисторсии объектива используется тот факт, что после коррекции дисторсии прямые линии в реальном мире должны проецироваться на прямые линии в пространстве изображения. Для этого робот (и приданный ему источник энергии) перемещается по ряду прямых линий, останавливаясь в нескольких точках на протяжении каждой линии с целью регистрации изображения. В результате регистрируется N линий, каждая из которых имеет M, iε(0, N-1) точек. Эти точки обозначаются как
и указывают положение кратной j точки на кратной i линии первоначального необработанного (т.е. искаженного) изображения.
После этого может быть в числовом виде определено произвольное число параметров модели дисторсии объектива Брауна (Brown DC (1966). "Decentering distortion of lenses.". Photogrammetric Engineering. 7:444-462).
Может использоваться любая стандартная программа многомерной численной оптимизации, хотя некоторые из них являются менее эффективными в силу своей техники математических решений и в высокой степени коррелированного характера параметров и остаточного шума, присущего результатам измерений входных данных.
В одном из прототипов настоящего изобретения используется расширенный вариант модели Брауна, в котором к параметрам радиальной дисторсии применяется коэффициент масштабирования радиального усиления, чтобы способствовать разбросу, который мог бы быть вызван неортогональностью объектива оптической оси или другими производственными дефектами. Это не влияет на применимость этой модели, поскольку f(θ)=1 соответствует стандартному случаю, описанному в литературе. Без ущерба для применимости в целях наглядности предположим, что f(θ) имеет форму:
при этом:
u
u
(x, y) = точка неискаженного изображения,
d
d
(x, y) = точка искаженного изображения,
с
c
(х, y) = центр дисторсии,
n
K= энный радиальный коэффициент искажения,
n
P = энный тангенциальный коэффициент искажения,
f(θ) = радиальное усиление,
и
… = бесконечный ряд.
Уравнение 6
Для измерения того, насколько прямой является совокупность линий, используется показатель, который определяет линию с наилучшим приближением с использованием точек каждой зарегистрированной прямой линии (смотри Уравнение 1), а затем определяет среднеквадратичное расстояние от точек до их прямых линий. Процедура, используемая для определения линии с наилучшим приближением, приведена в Уравнении 1. Этим показателем является:
при этом
L
N = число прямых линий в зарегистрированных данных,
n
M = число точек на протяжении энной линии,
n
d = однонаправленный вектор, ортогональный среднеквадратичной прямой n,
n
n
m, c = коэффициент линии n с наилучшим приближением согласно Уравнению 1 и
<mrow><msubsup><mrow><mover accent="true"><mi>P</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>n</mi><mo>,</mo><mi>m</mi></mrow><mi>u</mi></msubsup></mrow>
= рассматриваемая неискаженная точка.
Уравнение 7
Затем выполняются следующие шаги, чтобы определить остаточную дисторсию, возникающую при заданном наборе параметров.
2.1) Масштабируются полученные параметры из десенсибилизированного пространства градиента:
<mrow><msub><mi>x</mi><mi>c</mi></msub><mo>=</mo><msub><mi>κ</mi><mrow><mi>x</mi><mi>c</mi></mrow></msub><msubsup><mi>x</mi><mi>c</mi><mi>n</mi></msubsup></mrow>
<mrow><msub><mi>y</mi><mi>c</mi></msub><mo>=</mo><msub><mi>κ</mi><mrow><mi>y</mi><mi>c</mi></mrow></msub><msubsup><mi>y</mi><mi>c</mi><mi>n</mi></msubsup></mrow>
при этом:
K
N = число радиальных параметров,
P
N = число тангенциальных параметров,
γ
N = число параметров асимметрии,
xc
xy
(κ, κ) = параметры масштабирования центра дисторсии,
Ki
κ = коэффициент масштабирования кратного i радиального параметра,
Pi
κ = коэффициент масштабирования кратного i тангенциального параметра,
γi
κ = коэффициент масштабирования кратного i параметра асимметрии,
<mrow><mrow><mo>(</mo><mrow><msubsup><mi>x</mi><mi>c</mi><mi>n</mi></msubsup><mo>,</mo><mtext> </mtext><msubsup><mi>y</mi><mi>c</mi><mi>n</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
= полученный нормализованный центр дисторсии,
<mrow><msubsup><mi>K</mi><mi>i</mi><mi>n</mi></msubsup></mrow>
= полученный нормализованный радиальный параметр,
<mrow><msubsup><mi>P</mi><mi>i</mi><mi>n</mi></msubsup></mrow>
= полученный нормализованный тангенциальный параметр и
<mrow><msubsup><mi>γ</mi><mi>i</mi><mi>n</mi></msubsup></mrow>
= полученный нормализованный параметр асимметрии.
Уравнение 8
2.2) Используются масштабированные параметры, чтобы устранить искажение каждой точки каждой линии, зарегистрированной с целью устранения искажения, т.е.
при этом:
indist
F = расширенная модель Брауна, приведенная в Уравнении 6.
Уравнение 9
2.3) Используется Уравнение 1 с целью определения линии с наилучшим приближением с использованием точек с устраненным искажением каждой линии из набора входных данных.
2.4) Используется Уравнение 7 среднеквадратичного расстояния по вертикали от точек до их линий.
Далее приведена процедура численной оптимизации характеризующих дисторсию параметров.
Затем процессор 16 следующим образом вычисляет численную оптимизацию характеризующих дисторсию параметров.
3.1) Определяет, какие параметры будут оптимизироваться. Иными словами, выбирает число параметров радиальной и тангенциальной дисторсии; выбирает, используется ли центр изображения или будет ли найден оптимальный центр дисторсии; и выбирает функцию радиального усиления.
3.2) Выбирает первоначальное значение для каждого параметра. Для этого используются три общепринятых способа:
а) установка всех параметров на 0,
б) использование предшествующих знаний для выбора приблизительных первоначальных значений,
в) определение диапазона каждого параметра и осуществление грубой глобальной оптимизации, такой как, поиск методом последовательного перебора или генетический алгоритм.
3.3) Масштабирует каждый из входных параметров с тем, чтобы градиент был в равной мере чувствительным к отклонению каждого измерения постоянного размера. Это позволяет более точно рассчитывать градиент путем локальной оптимизации, что обеспечивают лучшее определение параметров. В Уравнении 10 представлена процедура масштабирования согласно Уравнению 8.
при этом:
<mrow><mrow><mo>(</mo><mrow><msubsup><mi>x</mi><mi>c</mi><mi>s</mi></msubsup><mo>,</mo><mtext> </mtext><msubsup><mi>y</mi><mi>c</mi><mi>s</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
= первоначальные значения центра дисторсии,
<mrow><msubsup><mi>K</mi><mi>i</mi><mi>s</mi></msubsup></mrow>
= первоначальные значения параметров радиальной коррекции,
<mrow><msubsup><mi>P</mi><mi>i</mi><mi>s</mi></msubsup></mrow>
= первоначальные значения параметров тангенциальной коррекции
<mrow><msubsup><mi>γ</mi><mi>i</mi><mi>s</mi></msubsup></mrow>
и
Уравнение 10
3.4) Использует процедуру локальной оптимизации с целью уточнения в числовой форме нормализованных первоначальных параметров, приведенных в Уравнении 10, при этом значение для сведения к минимуму указано в Алгоритме 2. В частности, для выполнения операции минимизации применяются методы с перешагиванием и методы Флетчера-Ривса.
3.5) Денормализует полученные значения характеризующих дисторсию параметров с использованием Уравнения 8.
Определение фокусного расстояния
Процессор 16 определяет фокусные параметры без включения посторонних параметры в группу параметров, подлежащих уточнению в числовой форме.
Далее будет описано определение фокусного расстояния одновременно с посторонними параметрами. При независимом определении фокусного расстояния уменьшается размерность определения посторонних параметров и устраняется неоднозначность, препятствующая возможности определять фокусное расстояние при ортогональном наблюдении плоскостной модели (или последовательности перемещений робота в плоскости).
А. Задача тетраэдральной перспективы
При этой калибровке используется задача трехточечной перспективы, которая в виде формул представлена в документах RANSAC и KIEPER (упомянутых выше) и в целях пояснения в словесной форме изложена в настоящем описании. Когда наблюдает три точки, расстояния между которыми известно, ориентация и перемещение камеры относительно трех точек может определяться методами анализа.
Это делается путем вычисления однонаправленных векторов от камеры до каждой из точек (смотри Уравнение 20), а затем вычисления угла между этими направляющими векторами (посредством скалярного произведения векторов).
Теорема косинусов, приведенная в Уравнении 11, является обобщением теоремы Пифагора применительно к непрямоугольным треугольникам.
2
2
2
a
а=b+c-2bccos(θ)
при этом:
a, b, c = длины сторон треугольника и
а
θ = угол напротив стороны а.
Уравнение 11
С помощью теоремы косинусов и с учетом того, что скалярное произведение двух векторов равно косинусу угла между ними, можно создать ряд следующих совместных уравнений, выражающих три неизвестные длины векторов от камеры до каждой точки обзора в перечете на единичные векторы от камеры до точек и известные расстояния между точками треугольника:
= расстояние между точками i и j треугольника
= расстояние между камерой и точкой i треугольника
= единичный вектор, направленный от камеры к точке i треугольника согласно Уравнению 20.
при этом:
i,j
L: = расстояние между точками i и j треугольника
c,i
L: = расстояние между камерой и точкой I треугольника
<mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>i</mi><mi>c</mi><mi>c</mi></mrow></msub><mo>:</mo></mrow>
= единичный вектор, направленный от камеры к точке i треугольника согласно
Уравнение 12
Уравнение 12 имеет четыре множества решений (которые определены в документах RANSAC и KIEPER (упомянутых выше), хотя не все решения являются вполне вещественными на комплексной плоскости. Чтобы выбрать, какое решение является верным, требуется четвертая точка, которая лежит вне плоскости первых трех точек и смещение которой относительно другой точки является известным. В таком случае четыре точки образуют тетраэдр, при этом четвертая точка является вершиной. Для каждого вещественного решения вычисляется положение камеры относительно треугольника точек (т.е. основания тетраэдра), а затем вычисляется положение четвертой точки относительно камеры. Направленный в это вычисленное положение вектор четвертой точки сравнивается с вектором, вычисленным на основании координат изображения четвертой точки, и в качестве верного решения выбирается решение с наименьшим углом между этими двумя векторами.
Вся процедура обобщенно представлена далее в Уравнении 13.
при этом:
t
f = процедуры, описанные раннее в данном разделе,
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>t</mi><mi>c</mi><mi>t</mi></mrow></msub></mrow>
= перемещение камеры относительно тетраэдра в системе координат тетраэдра,
ct
R = эйлерова матрица поворота системы координат камеры относительно тетраэдра,
<mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow></msub></mrow>
= единичный вектор, направленный от камеры к  точке I тетраэдра, согласно Уравнению 20 и
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>t</mi><mi>i</mi><mi>t</mi></mrow></msub></mrow>
= перемещение кратной i точки тетраэдра в его
Уравнение 13
При определении фокусного расстояния используется описанная выше и обобщенно представленная в Уравнении 13 задача тетраэдра. Следует отметить, что в Уравнении 13 используется следующее далее Уравнение 20, зависящее от параметров дисторсии объектива, которые считаются уже калиброванными методам, описанными в алгоритме 3, и от фокусного расстояния, которое является предметом этого определения параметров.
Используется робот для помещения источника энергии в определенное число положений в поле обзора камеры, в результате чего создается определенное число тетраэдров. В одном из примеров осуществления создается 20 тетраэдров в виде четырех групп по 5 тетраэдров. В каждой группе имеется тетраэдр с центром в отличающемся положении, при этом центральные положения групп образуют ′+′. Поскольку тетраэдры имеют угловое смещение в каждом положении, оптическая ось камеры не перпендикулярна основанию тетраэдра. Тетраэдры в группе расположены под соответствующим углом вверх вправо, вниз вправо, вниз влево и вверх влево относительно точки обзора камеры.
С целью определения фокусного расстояния камера была помещена в два положения для наблюдения тетраэдров. Камеру неподвижно установили в первое положение, а затем наблюдали все тетраэдры, после чего установили ее во второе положение и снова наблюдали, как робот перемещается через те же самые тетраэдры. Камеры была неподвижна в каждом положении при наблюдении тетраэдров. Это означает, что относительное перемещение камеры являлось постоянным. Поскольку для перемещения источника энергии в каждое последующее положение для каждого тетраэдра использовался робот, перемещении точек тетраэдра являются известными. Если параметры дисторсии уже известны, единственным параметром, требуемым Уравнением 13, остается фокусное расстояние.
icc
Для предполагаемого фокусного расстояния может быть вычислено положение и ориентация камеры относительно роботизированного эталона (которым является система координат, в которой известны перемещения источника энергии (т.е. T из Уравнения 13)).
При правильном фокусном расстоянии геометрическое место точек вычисленных положений камеры будет являться наименьшим. Это само по себе может использоваться в качестве показателя для определения идеального фокусного расстояния, хотя при сравнении относительного положения и ориентации камеры во втором положении и в первом положении эта чувствительность к фокусному расстоянию возрастает для каждого тетраэдра. Возможно, это объясняется высокой степенью однотипности используемых роботов (в примере осуществления и ABB IRB120). Отклонение относительных положений является показателем, который сводится к минимуму. Вычисление этого показателя описано далее в Алгоритме 4.
Затем процессор следующим образом вычисляет отклонение камеры от положений с шестью степенями свободы для набора тетраэдров и фокусное расстояние.
4.1) Вычисляет единичные векторы на основании обработанных изображений источника энергии, параметров дисторсии и заданного фокусного расстояния, как описано в Уравнении 20:
<mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>j</mi></mrow></msub><mi>i</mi><msub><mi>c</mi><mrow><msub><mrow /><mrow><mi>a</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></msub></mrow></msub><mo>=</mo><msub><mi>f</mi><mrow><mi>U</mi><mi>V</mi></mrow></msub><mrow><mo>(</mo><mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>a</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi></mrow><mi>d</mi></msubsup><mo>,</mo><mtext> </mtext><mi>D</mi><mi>i</mi><mi>s</mi><mi>t</mi><mi>o</mi><mi>r</mi><mi>t</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>P</mi><mi>a</mi><mi>r</mi><mi>a</mi><mi>m</mi><mi>e</mi><mi>t</mi><mi>e</mi><mi>r</mi><mi>s</mi><mo>,</mo><mtext> </mtext><mi>F</mi><mi>o</mi><mi>c</mi><mi>a</mi><mi>l</mi><mo>_</mo><mi>L</mi><mi>e</mi><mi>n</mi></mrow><mo>)</mo></mrow></mrow>
<mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>j</mi></mrow></msub><mi>i</mi><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></msub><mo>=</mo><msub><mi>f</mi><mrow><mi>U</mi><mi>V</mi></mrow></msub><mrow><mo>(</mo><mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>b</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi><mo>,</mo></mrow><mi>d</mi></msubsup><mtext> </mtext><mi>D</mi><mi>i</mi><mi>s</mi><mi>t</mi><mi>o</mi><mi>r</mi><mi>t</mi><mi>i</mi><mi>o</mi><mi>n</mi><mo>_</mo><mi>P</mi><mi>a</mi><mi>r</mi><mi>a</mi><mi>m</mi><mi>e</mi><mi>t</mi><mi>e</mi><mi>r</mi><mi>s</mi><mo>,</mo><mtext> </mtext><mi>F</mi><mi>o</mi><mi>c</mi><mi>a</mi><mi>l</mi><mo>_</mo><mi>L</mi><mi>e</mi><mi>n</mi></mrow><mo>)</mo></mrow></mrow>
при этом:
<mrow><mi>i</mi><mo>∈</mo><mrow><mo>[</mo><mrow><mn>1,4</mn></mrow><mo>]</mo></mrow></mrow>
означает номер вершины тетраэдра,
<mrow><mi>i</mi><mo>∈</mo><mrow><mo>[</mo><mrow><mn>1,</mn><msub><mi>N</mi><mrow><mi>t</mi><mi>e</mi><mi>t</mi></mrow></msub></mrow><mo>]</mo></mrow></mrow>
означает номер тетраэдра,
tet
N = число зарегистрированных тетраэдров
UV
f = создает единичный вектор на основании координаты изображения и собственных параметров камеры (Уравнение 20),
<mrow><msub><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>x</mi><mo>,</mo><mi>i</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow>
= координаты изображения зарегистрированного центра источника энергии с рукой робота в вершине i тетраэдра j при наблюдении с камеры в положении x, и
<mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>x</mi><mo>,</mo><mi>j</mi></mrow></msub><mi>i</mi><msub><mi>c</mi><mrow><mi>x</mi><mo>,</mo><mi>j</mi></mrow></msub></mrow></msub></mrow>
= единичный вектор от камеры в положении x в
Уравнение 14
4.2) Вычисляет для всех тетраэдров положение камеры в каждом положении (следует отметить, что в качестве оси тетраэдра используется роботизированный эталон.
<mrow><mo>∴</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>t</mi><mi>i</mi></msub><mi>x</mi><mi>r</mi></mrow></msub><mo>≡</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>x</mi><mi>r</mi></mrow></msub><mo stretchy="false">)</mo><mo>:</mo></mrow>
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mi>r</mi></msub><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi><mo>,</mo><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow><mo>)</mo></mrow><mo>=</mo><msub><mi>f</mi><mi>t</mi></msub><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>j</mi><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub></mrow></msub><mo>∀</mo><mi>j</mi><mo>∈</mo><mrow><mo>[</mo><mrow><mn>1,4</mn></mrow><mo>]</mo></mrow><mo>,</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>t</mi><mi>i</mi></msub><mi>j</mi><mi>r</mi></mrow></msub><mo>∀</mo><mi>j</mi><mo>∈</mo><mrow><mo>[</mo><mrow><mn>1,4</mn></mrow><mo>]</mo></mrow></mrow><mo>)</mo></mrow></mrow>
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mi>r</mi></msub><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi><mo>,</mo><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow><mo>)</mo></mrow><mo>=</mo><msub><mi>f</mi><mi>t</mi></msub><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>j</mi><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub></mrow></msub><mo>∀</mo><mi>j</mi><mo>∈</mo><mrow><mo>[</mo><mrow><mn>1,4</mn></mrow><mo>]</mo></mrow><mo>,</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>t</mi><mi>i</mi></msub><mi>j</mi><mi>r</mi></mrow></msub><mo>∀</mo><mo>∈</mo><mrow><mo>[</mo><mrow><mn>1,4</mn></mrow><mo>]</mo></mrow></mrow><mo>)</mo></mrow></mrow>
при
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>t</mi><mi>j</mi></msub><mi>i</mi><mi>r</mi></mrow></msub></mrow>
= перемещение вершины i тетраэдра j, выраженное относительно роботизированного эталона,
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><msub><mi>c</mi><mrow><mi>x</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow>
= перемещение камеры в положении x, выраженное относительно роботизированного эталона и вычисленное с использованием тетраэдра i, и
<mrow><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow>
= ориентация камеры в положении x, выраженная
Уравнение 15
4.3) Вычисляет для каждого тетраэдра положение камеры в положении b относительно камеры в положении a.
<mrow><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub></mrow></msub><mo>=</mo><msubsup><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow><mi>T</mi></msubsup><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow>
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub><mo>=</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub><mo>−</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow>
при
<mrow><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub></mrow></msub></mrow>
= ориентация камеры в положении b относительно ориентации в положении a, вычисленная с использованием тетраэдра i, и
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><msub><mi>c</mi><mrow><mi>b</mi><mo>,</mo><mi>i</mi></mrow></msub><msub><mi>c</mi><mrow><mi>a</mi><mo>,</mo><mi>i</mi></mrow></msub><mi>r</mi></mrow></msub></mrow>
= перемещение камеры в положении b относительно перемещения в положении а, вычисленное с использованием тетраэдра i.
Уравнение 16
<mrow><msub><mi>R</mi><mrow><msub><mi>c</mi><mrow><mi>b</mi><mn>3</mn></mrow></msub><msub><mi>c</mi><mrow><mi>a</mi><mn>3</mn></mrow></msub></mrow></msub></mrow>
4.4) Производит итерацию с результатами и выделяет углы рыскания, тангажа и крена из эйлеровых матриц поворота относительных ориентации камеры в двух положениях (т.е. из)
.
4.5) Вычисляет стандартное отклонение ординаты X относительного перемещения камер, вычисленного на протяжении всех тетраэдров. Повторяет вычисление для ординаты Y, ординаты Z и только что вычисленных положений рыскания, тангажа и крена.
4.6) Вычисляет взвешенную сумму стандартных отклонений для использования в качестве показателя:
<mrow><mi>m</mi><mi>e</mi><mi>t</mi><mi>r</mi><mi>i</mi><mi>c</mi><mo>=</mo><msub><mi>K</mi><mn>0</mn></msub><msub><mi>X</mi><mrow><mi>s</mi><mi>t</mi><mi>d</mi><mi>d</mi><mi>e</mi><mi>υ</mi></mrow></msub><mo>+</mo><msub><mi>K</mi><mn>1</mn></msub><msub><mi>Y</mi><mrow><mi>s</mi><mi>t</mi><mi>d</mi><mi>d</mi><mi>e</mi><mi>υ</mi></mrow></msub><mo>+</mo><msub><mi>K</mi><mn>2</mn></msub><msub><mi>Z</mi><mrow><mi>s</mi><mi>t</mi><mi>d</mi><mi>d</mi><mi>e</mi><mi>υ</mi></mrow></msub><mo>+</mo><msub><mi>K</mi><mn>3</mn></msub><mi>Y</mi><mi>a</mi><msub><mi>ω</mi><mrow><mi>s</mi><mi>t</mi><mi>d</mi><mi>d</mi><mi>e</mi><mi>υ</mi></mrow></msub><msub><mi>K</mi><mn>4</mn></msub><mi>P</mi><mi>i</mi><mi>t</mi><mi>c</mi><msub><mi>h</mi><mrow><mi>s</mi><mi>t</mi><mi>d</mi><mi>d</mi><mi>e</mi><mi>υ</mi></mrow></msub><mo>+</mo><msub><mi>K</mi><mn>5</mn></msub><mi>R</mi><mi>o</mi><mi>l</mi><msub><mi>l</mi><mrow><mi>s</mi><mi>t</mi><mi>d</mi><mi>d</mi><mi>e</mi><mi>υ</mi></mrow></msub></mrow>
при этом:
n
K = n-й весовой
Уравнение 17
0
1
2
3
4
5
В одном из примеров осуществления в Уравнении 17 использовались значения весового коэффициента K=K=K=1:0 и K=K=K=10:0.
Чтобы найти идеальное фокусное расстояние, для минимального значения Уравнения 17 должен быть найден диапазон, сосредоточенный вокруг заявленного/расчетного фокусного расстояния объектива. Это может сделано любым методом последовательного перебора, таким как метод Пауэлла или метод Ньютона с целью нахождения переход производной через нуль. Поскольку, как показано, показатель является прерывистым и одномерным, в одном из примеров осуществления применяется поиск методом "грубо-точного" последовательного перебора.
Определение посторонних параметров
Требуется определить положение камеры с шестью степенями свободы относительно робота, фокусное расстояние (если оно не определено, как описано в Разделе VI) и положение пикселов в точке оптического пересечения (также известное как главная точка). Для этого любой из показателей, представленных в Уравнении 18 или Уравнении 19, может быть оптимизирован в числовом виде с использованием устойчивого алгоритма, такого как алгоритм Флетчера-Ривса или алгоритм с перешагиванием (которые упомянуты выше). Первый показатель действует медленнее, но является более точным за счет повышенной чувствительности к почти параллельным векторам, генерируемым обратной косинусной функцией (с большим объемом вычислений).
Уравнения 18 и 19
Показателем является сравнение двух пучков векторов. В Уравнении 20 далее показано, как может генерироваться один из пучков векторов на основании изображений источника энергии, установленного на роботе, после обработки изображений, как описано в Разделе IV, а затем устраняться искажения с использованием Уравнения 6 и характеризующих дисторсию окончательных параметров, определенных в Разделе V. Поскольку считается, что размеры пикселов известны из технических данных, единственными неизвестными величинами остаются (потенциальное) фокусное расстояние и точка пересечения оптических осей. Хорошими исходными подсказками для численной оптимизация служат заявленное изготовителем фокусное расстояние и центр дисторсии, соответственно.
<mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mi>i</mi><mi>u</mi></msubsup><mo>=</mo><msup><mi>f</mi><mrow><mi>u</mi><mi>n</mi><mi>d</mi><mi>i</mi><mi>s</mi><mi>t</mi><mi>o</mi><mi>r</mi><mi>t</mi></mrow></msup><mrow><mo>(</mo><mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mi>i</mi><mi>d</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
<mrow><msub><mrow><mover accent="true"><mi>V</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow></msub><mo>=</mo><mrow><mo>[</mo><mrow><mtable><mtr><mtd><mrow><mi>F</mi><mi>o</mi><mi>c</mi><mi>a</mi><mi>l</mi><mo>_</mo><mi>L</mi><mi>e</mi><mi>n</mi></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>P</mi><msub><mi>P</mi><mi>h</mi></msub><mo>−</mo><msubsup><mi>I</mi><mrow><msub><mi>i</mi><mi>h</mi></msub></mrow><mi>u</mi></msubsup></mrow><mo>)</mo></mrow><mi>p</mi><mi>i</mi><mi>x</mi><mo>_</mo><mi>ω</mi></mrow></mtd></mtr><mtr><mtd><mrow><mrow><mo>(</mo><mrow><mi>P</mi><msub><mi>P</mi><mi>υ</mi></msub><mo>−</mo><msubsup><mi>I</mi><mrow><msub><mi>i</mi><mi>υ</mi></msub></mrow><mi>u</mi></msubsup></mrow><mo>)</mo></mrow><mi>p</mi><mi>i</mi><mi>x</mi><mo>_</mo><mi>h</mi></mrow></mtd></mtr></mtable></mrow><mo>]</mo></mrow></mrow>
<mrow><msubsup><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow><mn>1</mn></msubsup><mo>=</mo><mrow><mrow><msub><mrow><mover accent="true"><mi>V</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow></msub></mrow><mo>/</mo><mrow><mrow><mo>‖</mo><mrow><msub><mrow><mover accent="true"><mi>V</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow></msub></mrow><mo>‖</mo></mrow></mrow></mrow></mrow>
при этом:
<mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mi>i</mi><mi>d</mi></msubsup></mrow>
= положение пикселов 2D изображения источника энергии в
undiatort
f = положении i,
PP = заданная функция, характеризующая устранение дисторсии
pix_ω = объектива,
pix_h = положение пикселов в точке пересечения оптических осей,
Focal_Len = ширина пикселов на изображении камеры,
<mrow><msubsup><mi>U</mi><mrow><mi>i</mi><mi>c</mi><mi>c</mi></mrow><mn>1</mn></msubsup></mrow>
= высота пикселов на изображении камеры,
Уравнение 20
Второй пучок векторов вычисляют посредством Уравнения 21.
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>i</mi><mi>r</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
rc
Предполагается, что в каждом положении робота известно положение источника энергии
. После этого используют неизвестный пространственный сдвиг роботизированного эталона
и (также неизвестный) эйлеров поворот роботизированного эталона относительно камеры (R), чтобы определить, а затем нормализовать вектор к каждому положению источника энергии. Следует также отметить, что оба показателя имеют определенную особенность при использовании плоскостного оптического направляющего шаблона, который помещают перпендикулярно оптической оси камеры.
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow></msub><mo>=</mo><msub><mi>R</mi><mrow><mi>r</mi><mi>c</mi></mrow></msub><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>i</mi><mi>r</mi></mrow></msub><mo>+</mo><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow>
<mrow><msubsup><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow><mn>2</mn></msubsup><mo>=</mo><mrow><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow></msub></mrow><mo>/</mo><mrow><mrow><mo>‖</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>i</mi><mi>c</mi><mi>c</mi></mrow></msub></mrow><mo>‖</mo></mrow></mrow></mrow></mrow>
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow>
= пространственное положение роботизированного эталона относительно камеры,
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>i</mi><mi>r</mi></mrow></msub></mrow>
= пространственный сдвиг источника энергии относительно
rc
R = роботизированного эталона,
<mrow><msubsup><mrow><mover accent="true"><mi>U</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>i</mi><mi>c</mi></mrow><mn>2</mn></msubsup></mrow>
= эйлерова матрица поворота роботизированного эталона относительно
Уравнение 21
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>i</mi><mi>r</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
<mrow><mrow><mo>(</mo><mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mi>i</mi><mi>d</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
В следующем далее алгоритме поясняется, как определяют посторонние параметры, если задан соответствующий набор положений источника энергии, полученных от робота
, и координаты пикселов в местоположении источника энергии на изображении камеры
, полученные способами, описанными в алгоритме 3. Считается, что параметры дисторсии уже были определены, как описано выше.
Далее процессор следующим образом определяет посторонние параметры камеры.
5.1) Выбирает первоначальные значения девяти оптимизируемых параметров. Заявленное/расчетное значение является хорошей отправной точкой для определения фокусного расстояния, а центр дисторсии - для определения главной точки. Отправной точкой для определения трех параметров перемещения и трех параметров ориентации может служить приблизительное физическое измерение. В качестве альтернативы, для получения первоначальных значений может применяться метод грубой глобальной оптимизации, такой как дискретизация методом разреженного последовательного перебора или (как в одном из примеров осуществления) генетический алгоритм.
5.2) Выбирает для каждого из параметров градиент, уменьшающий восприимчивость к коэффициентам масштабирования. Далее приведены значения, используемые в одном из примеров осуществления.
FLen
-1
а) Коэффициент γ масштабирования фокусного расстояния составляет 10 при определении фокусного расстояния (в мм) или исключается из набора оптимизируемых параметров при определении посредством алгоритма 3,
PPh
PPν
2
б) Коэффициенты γ, γ масштабирования главной точки по горизонтали и вертикали составляют 10 при определении главной точки (в пикселах) или исключается из набора параметров при использовании центра дисторсии,
Yaw
0
в) коэффициент γ масштабирования рыскания составляет 10, при этом угол выражен в радианах,
Pitch
0
г) коэффициент γ масштабирования тангажа составляет 10, при этом угол выражен в радианах,
Roll
0
д) коэффициент γ масштабирования крена составляет 10, при этом угол выражен в радианах,
X
-3
е) коэффициент γ масштабирования по оси X составляет 10, при этом смещение выражено в мм,
Y
-3
ж) коэффициент γ масштабирования по оси Y составляет 10, при этом смещение выражено в мм,
Z
-3
з) коэффициент γ масштабирования по оси Z составляет 10, при этом смещение выражено в мм.
5.3) Делит каждый параметр на его соответствующий коэффициент масштабирования, чтобы получить нормализованные параметры (обозначенные надстрочным индексом n).
5.4) Уточняет в числовой форме масштабированные параметры с использованием показателя, описанного в Алгоритме 6. Может использоваться любая нелинейная многомерная численная локальная оптимизация. В одном из примеров осуществления используется алгоритм с перешагиванием или алгоритм Флетчера-Ривса (которые упомянуты выше).
rc
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
5.5) Умножает полученные масштабированные параметры на их соответствующие коэффициенты масштабирования, чтобы определить положение робота относительно камеры, выраженное через ось камеры (R) и перемещение робота относительно камеры, выраженное через ось камеры
.
5.6) Вычисляет положение камеры относительно робота:
<mrow><msub><mi>R</mi><mrow><mi>c</mi><mi>r</mi></mrow></msub><mo>=</mo><msubsup><mi>R</mi><mrow><mi>r</mi><mi>c</mi></mrow><mi>T</mi></msubsup></mrow>
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>c</mi><mi>r</mi></mrow></msub><mo>=</mo><mo>−</mo><msub><mi>R</mi><mrow><mi>c</mi><mi>r</mi></mrow></msub><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow>
при этом:
c
Rr = эйлерова матрица поворота камеры относительно оси координат робота и
<mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>c</mi><mi>r</mi></mrow></msub></mrow>
= перемещение камеры относительно оси роботизированного эталона, выраженное через ось координат робота.
Уравнение 22
Затем вычисляют показатель уточнения постороннего параметра.
6.1) Умножают полученные параметры на их соответствующие коэффициенты масштабирования:
Уравнение 23
rc
6.2) Вычисляют эйлерову матрицу поворота робот относительно камеры (R) на основании углов рыскания, тангажа и крена.
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
6.3) Конкатенируют значения X, Y, Z, чтобы определить перемещение робота относительно камеры:
.
<mrow><mrow><mo>(</mo><mrow><msubsup><mrow><mover accent="true"><mi>I</mi><mo stretchy="true">→</mo></mover></mrow><mi>i</mi><mi>d</mi></msubsup></mrow><mo>)</mo></mrow></mrow>
6.4) Вычисляют основанный на изображении пучок единичных векторов с использованием Уравнения 20, фокусного расстояния, главной точки, размера пикселов, параметров коррекции дисторсии согласно Уравнению 6 и совокупности положений пикселов центров источника энергии
. (Это требуется делать только один раз, если фокусное расстояние и главная точка не входят в набор оптимизированных параметров).
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>r</mi><mi>i</mi><mi>r</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
<mrow><mrow><mo>(</mo><mrow><msub><mrow><mover accent="true"><mi>T</mi><mo stretchy="true">→</mo></mover></mrow><mrow><mi>c</mi><mi>r</mi><mi>c</mi></mrow></msub></mrow><mo>)</mo></mrow></mrow>
rc
6.5) Вычисляют пучок векторов на основании положения камеры относительно робота с использованием Уравнения 21, совокупности положений источника энергии п оси робота
, текущей оценки ориентации робота относительно камеры (R) и текущей оценки перемещения робота относительно камеры
.
6.6) Измеряют сходство двух пучков векторов с использованием Уравнения 18.
Следует учесть, что описанные выше способ и система относятся к процессу калибровки камеры и используются в одном из примеров осуществления. Пример осуществления является лишь одним из возможных примеров осуществления интеллектуальной собственности, права на которую заявлены в настоящем изобретении. В частности:
1) использование роботизированной руки для регистрации точек на протяжении прямых линий с целью калибровки параметров дисторсии объектива камера путем подбора модели дисторсии объектива, чтобы обеспечить проекцию прямых линий в пространстве объекта на прямые линии в пространстве изображения. Модели дисторсии могут включать без ограничения модель дисторсии объектива Брауна (упомянутую выше) с использованием или без использования функции радиального усиления и нейронные сети.
2) Определение фокусного расстояния путем сведения к минимуму геометрического места точек (трех- или шестимерных) положений камеры, вычисленных путем наблюдения трех или более планарных точек и одной или нескольких точек вне плоскости.
3) Определение (трех- или шестимерного) положения камеры путем наблюдения набора изображений источника энергии, перемещаемого роботом, и сравнение пучка векторов, основанных на анализе изображений, со вторым пучком векторов, вычисленных на основании предполагаемого (трех- или шестимерного) положения камеры.
После того как камера калибрована, она может использоваться для определения точного местонахождения источника энергии.