Компьютерра, 2006 № 06 (626) | страница 34
Большинство оптических методов разрабатываются в расчете на центрально проецирующие камеры. Напомню, что при такой проекции прямые остаются прямыми, а если мы посмотрим на снимки, сделанные реальными фотоаппаратами, то увидим, что зачастую прямые линии выгибаются от центра кадра (особенно по краям). Эти недостатки свойственны камерам с небольшим объективом, а именно такие и устанавливаются на большинство роботов. Естественно, если искажения на кадре будут столь заметны, то восстановить по ним 3D с хорошей точностью не удастся. Чтобы можно было бороться с этой проблемой, применяется процедура калибровки камеры.
Если в модели центральной проекции камера имеет всего один параметр (фокусное расстояние), то в реальности к нему добавляется несколько параметров (их число зависит от выбранной модели), описывающих свойства «бочки». Далее фотографируют что-то с заранее известной структурой (это может быть шахматная доска, или решетка, или лист бумаги с нанесенными в определенных местах точками) и по полученному кадру определяют параметры камеры. Теперь любой кадр, сделанный ею, можно с достаточно хорошей точностью привести к виду, соответствующему центральной проекции. И уже преобразованный таким образом кадр использовать для алгоритмов восстановления 3D.
Какие есть пути решения данной проблемы? Можно искать на изображениях соответствия не только точек, но и прямых и эллипсов (проекция окружности). Ведь роботы скорее всего будут находиться в антропогенной среде, а современные офисные интерьеры и городские пейзажи практически полностью состоят из прямых линий, да и окружности встречаются нередко. Вернемся к примеру с кубом. Пусть нам удалось найти соответствия между углами, тогда отыскать отрезки, соединяющие углы, и разбить их на пары соответствия, тоже не составит труда. Далее можно сделать предположение, что четыре отрезка, образующих замкнутую ломаную, ограничивают плоскость[Оглянитесь вокруг, и вы увидите, что чаще всего так и бывает]. Вот наша задача и решена! Теперь мы можем построить тот самый куб, составив его из плоскостей. Если наш робот наткнется на кружку или кастрюлю, он без труда распознает в ее основании окружность, что поможет ему «разобраться» и с формой этого предмета.
Но иногда жестко закреплять глаза робота нецелесообразно или вообще ненужно, поскольку восстановить положение камер по двум снимкам не слишком трудно. К тому же это решение зачастую дает более высокую точность, нежели механическое соединение камер. Да и возможность независимо оперировать двумя глазами довольно заманчива, особенно в тех задачах, где не требуется восприятие трехмерной информации (например, такой робот сможет одновременно читать две страницы книги).