Оцените внешние монокулярные параметры камеры с помощью шахматной доски
[
оценивает внешние параметры монокулярной камеры при помощи внутренних параметров камеры и калибровочного шаблона шахматной доски. Возвращенные внешние параметры задают рыскание, тангаж, и прокручивают углы поворота между системой координат камеры и осями системы координат транспортного средства. Функция также возвращает высоту камеры над землей. Задайте внутренние параметры, изображение и мировые координаты угловых точек шахматной доски и высоту источника шаблона шахматной доски над землей.pitch
,yaw
,roll
,height
] = estimateMonoCameraParameters(intrinsics
,imagePoints
,worldPoints
,patternOriginHeight
)
По умолчанию функция принимает, что камера стоит вперед и что шаблон шахматной доски параллелен с землей. Для всей возможной камеры и размещений шахматной доски, смотрите, Калибруют Монокулярную Камеру.
[
задает опции с помощью одной или нескольких пар "имя-значение", в дополнение к вводам и выводам от предыдущего синтаксиса. Например, можно задать ориентацию или положение шаблона шахматной доски.pitch
,yaw
,roll
,height
] = estimateMonoCameraParameters(___,Name,Value
)
Сконфигурируйте монокулярную fisheye-камеру путем удаления искажения объектива и затем оценки внешних параметров камеры. Используйте изображение шахматной доски как калибровочный шаблон. Для более подробного взгляда на то, как сконфигурировать монокулярную камеру, которая имеет линзу подозрительного взгляда, смотрите Сконфигурировать Монокулярный пример Fisheye-камеры.
Загрузите внутренние параметры монокулярной камеры, которая имеет линзу подозрительного взгляда. intrinsics
fisheyeIntrinsics
объект.
ld = load('fisheyeCameraIntrinsics');
intrinsics = ld.intrinsics;
Загрузите изображение шаблона шахматной доски, который помещается плоский на земле. Это изображение в иллюстративных целях и не было взято из камеры, смонтированной к транспортному средству. В камере, смонтированной к транспортному средству, Ось X точек шаблона справа от транспортного средства и Ось Y шаблона указывают на камеру. Отобразите изображение.
imageFileName = fullfile(toolboxdir('driving'),'drivingdata','checkerboard.png'); I = imread(imageFileName); imshow(I)
Обнаружьте координаты углов шахматной доски в изображении.
[imagePoints,boardSize] = detectCheckerboardPoints(I);
Сгенерируйте соответствующие мировые координаты углов.
squareSize = 0.029; % Square size in meters
worldPoints = generateCheckerboardPoints(boardSize,squareSize);
Оцените внешние параметры, требуемые сконфигурировать monoCamera
объект. Поскольку шаблон шахматной доски находится непосредственно на земле, установите высоту источника шаблона к 0.
patternOriginHeight = 0;
[pitch,yaw,roll,height] = estimateMonoCameraParameters(intrinsics, ...
imagePoints,worldPoints,patternOriginHeight);
Поскольку monoCamera
не принимает fisheyeIntrinsics
объекты, удалите искажение из изображения и вычислите новые внутренние параметры из неискаженного изображения. camIntrinsics
cameraIntrinsics
объект. Отобразите изображение, чтобы подтвердить, что искажение удалено.
[undistortedI,camIntrinsics] = undistortFisheyeImage(I,intrinsics,'Output','full'); imshow(undistortedI)
Сконфигурируйте монокулярную камеру с помощью предполагаемых параметров.
monoCam = monoCamera(camIntrinsics,height,'Pitch',pitch,'Yaw',yaw,'Roll',roll)
monoCam = monoCamera with properties: Intrinsics: [1x1 cameraIntrinsics] WorldUnits: 'meters' Height: 0.4447 Pitch: 21.8459 Yaw: -3.6130 Roll: -3.1707 SensorLocation: [0 0]
Сконфигурируйте монокулярную камеру с помощью кругового шаблона сетки и затем оцените внешние параметры камеры. Используйте изображение асимметричной круговой сетки как калибровочный шаблон.
Загрузите внутренние параметры монокулярной камеры. intrinsics
cameraIntrinsics
объект.
ld = load('IRCameraIntrinsics');
intrinsics = ld.intrinsics;
Загрузите изображение асимметричного кругового шаблона сетки, который помещается параллельный земле, помещенной в высоту. Это изображение в иллюстративных целях и не было взято из камеры, смонтированной к транспортному средству. В камере, смонтированной к транспортному средству, Ось X точек шаблона справа от транспортного средства и Ось Y шаблона указывают на камеру. Отобразите изображение.
imageFileName = fullfile(toolboxdir('vision'),'visiondata', ... 'calibration','circleGrid','stereo','left','left07.jpg'); I = imread(imageFileName); imshow(I)
Задайте круговые размерности шаблона сетки и обнаружьте центры кругов в изображении.
patternDims = [4 11]; imagePoints = detectCircleGridPoints(I,patternDims);
Сгенерируйте соответствующие мировые координаты углов.
centerDistance = 0.0365; % Center-to-center distance in meters
worldPoints = generateCircleGridPoints(patternDims,centerDistance);
Оцените внешние параметры, требуемые сконфигурировать monoCamera
объект. Поскольку шаблон шахматной доски помещается в высоту 1,2 м от земли, установите высоту источника шаблона к 1,2 м.
patternOriginHeight = 1.2;
[pitch,yaw,roll,height] = estimateMonoCameraParameters(intrinsics, ...
imagePoints,worldPoints,patternOriginHeight);
Сконфигурируйте монокулярную камеру с помощью предполагаемых параметров.
monoCam = monoCamera(intrinsics,height,'Pitch',pitch,'Yaw',yaw,'Roll',roll)
monoCam = monoCamera with properties: Intrinsics: [1x1 cameraIntrinsics] WorldUnits: 'meters' Height: 1.3869 Pitch: 60.2886 Yaw: -26.5963 Roll: -45.7440 SensorLocation: [0 0]
Задайте область перед камерой, которую вы хотите преобразовать в вид с высоты птичьего полета. Установите область от 0 до 2,5 метров перед камерой с 1,75 метрами любой стороне камеры.
bottomOffset = 0; distAhead = 2.5; spaceToOneSide = 1.75; outView = [bottomOffset,distAhead,-spaceToOneSide,spaceToOneSide];
Установите ширину выходного изображения на 250 пикселей. Вычислите продолжительность выхода автоматически из ширины путем установки длины на NaN
.
outImageSize = [NaN,250];
Создайте объект для выполнения вида с высоты птичьего полета, преобразовывает, с помощью ранее заданных параметров.
birdsEye = birdsEyeView(monoCam,outView,outImageSize);
Преобразуйте входное изображение в вид с высоты птичьего полета, отображают и отображают результат.
BEV = transformImage(birdsEye,I); imshow(BEV)
intrinsics
— Внутренние параметры камерыcameraIntrinsics
возразите |
fisheyeIntrinsics
объектВнутренние параметры камеры в виде cameraIntrinsics
или fisheyeIntrinsics
объект.
Изображения шаблона шахматной доски, произведенные этими камерами, могут включать искажение объектива, которое может влиять на точность обнаружений угловой точки. Чтобы удалить искажение объектива и вычислить новые внутренние параметры, используйте эти функции:
Для cameraIntrinsics
объекты, использовать undistortImage
.
Для fisheyeIntrinsics
объекты, использовать undistortFisheyeImage
.
imagePoints
— Отобразите координаты угловых точек шахматной доскиОтобразите координаты угловых точек шахматной доски в виде M-by-2 матрица количества M [x
y] векторы. Эти моменты должны наступить от изображения, полученного монокулярной камерой. Чтобы обнаружить эти точки в изображении, используйте detectCheckerboardPoints
функция.
estimateMonoCameraParameters
принимает что все точки в worldPoints
находятся в (X P, Y P) плоскость и которого M больше или равен 4. Задавать высоту (X P, Y P) плоскость над землей, patternOriginHeight
использования.
Типы данных: single
| double
worldPoints
— Мировые координаты угловых точек в шахматной доскеМировые координаты угловых точек в шахматной доске в виде M-by-2 матрица количества M [x y] векторы.
estimateMonoCameraParameters
принимает что все точки в worldPoints
находятся в (X P, Y P) плоскость и которого M больше или равен 4. Задавать высоту (X P, Y P) плоскость над землей, patternOriginHeight
использования.
Точка (0,0) соответствует нижнему правому углу верхнего левого квадрата шахматной доски.
Типы данных: single
| double
patternOriginHeight
— Высота источника шаблона шахматной доскиВысота источника шаблона шахматной доски над землей в виде неотрицательного действительного скаляра. Источник является нижним правым углом верхнего левого квадрата шахматной доски.
Измерение patternOriginHeight
зависит от ориентации шаблона шахматной доски, как показано в этих схемах.
Горизонтальная ориентация | Вертикальная ориентация |
---|---|
|
|
Чтобы задать ориентацию шаблона, используйте 'PatternOrientation'
пара "имя-значение". Если вы устанавливаете 'PatternOrientation'
к 'horizontal'
(значение по умолчанию) и шаблон находятся на земле, затем устанавливают patternOriginHeight
к 0
.
Типы данных: single
| double
Задайте дополнительные разделенные запятой пары Name,Value
аргументы. Name
имя аргумента и Value
соответствующее значение. Name
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN
.
'PatternOrientation','vertical','PatternPosition','right'
PatternOrientation
— Ориентация шаблона шахматной доски'horizontal'
(значение по умолчанию) | 'vertical'
Ориентация шаблона шахматной доски относительно земли в виде разделенной запятой пары, состоящей из 'PatternOrientation'
и одно из следующего:
'horizontal'
— Шаблон шахматной доски параллелен земле.
'vertical'
— Шаблон шахматной доски перпендикулярен земле.
PatternPosition
— Положение шаблона шахматной доски'front'
(значение по умолчанию) | 'back'
| 'left'
| 'right'
Положение шаблона шахматной доски относительно земли в виде разделенной запятой пары, состоящей из 'PatternPosition'
и одно из следующего:
'front'
— Шаблон шахматной доски перед транспортным средством.
'back'
— Шаблон шахматной доски находится позади транспортного средства.
'left'
— Шаблон шахматной доски слева от транспортного средства.
'right'
— Шаблон шахматной доски справа от транспортного средства.
pitch
— Передайте уголПередайте угол между горизонтальной плоскостью транспортного средства и оптической осью камеры, возвращенной как действительный скаляр в градусах. pitch
использует соглашение ISO для вращения, с по часовой стрелке положительным угловым направлением при взгляде в положительном направлении V-оси Y транспортного средства.
Для получения дополнительной информации смотрите Угловые Направления.
yaw
— Угол рысканияУгол рыскания между V-осью X транспортного средства и оптической осью камеры, возвращенной как действительный скаляр в градусах. yaw
использует соглашение ISO для вращения, с по часовой стрелке положительным угловым направлением при взгляде в положительном направлении V-оси Z транспортного средства.
Для получения дополнительной информации смотрите Угловые Направления.
roll
— КренКрен камеры вокруг ее оптической оси, возвращенной как действительный скаляр в градусах. roll
использует соглашение ISO для вращения, с по часовой стрелке положительным угловым направлением при взгляде в положительном направлении V-оси X транспортного средства.
Для получения дополнительной информации смотрите Угловые Направления.
height
— Перпендикулярная высота с земли на камеруПерпендикулярная высота от земли до центра камеры, возвращенной как неотрицательный действительный скаляр в мировых единицах измерения, таких как метры.
В системе координат транспортного средства (X V, Y V, Z V) заданный monoCamera
объект:
V-ось X указывает вперед от транспортного средства.
V-ось Y указывает налево, как просматривается при направлении вперед.
V-ось Z подчеркивает от земли, чтобы обеспечить правую систему координат.
По умолчанию источник этой системы координат находится на дорожном покрытии, непосредственно ниже центра камеры (центр камеры).
Получить более надежные результаты estimateMonoCameraParameters
, шаблон шахматной доски должен быть помещен в точные местоположения относительно этой системы координат. Для получения дополнительной информации смотрите, Калибруют Монокулярную Камеру.
Монокулярный датчик камеры использует по часовой стрелке положительные угловые направления при взгляде в положительном направлении Z - Y - и X - оси, соответственно.
estimateCameraParameters
| estimateFisheyeParameters
| detectCheckerboardPoints
| generateCheckerboardPoints
| extrinsics
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.