RU2759965C1 - Method and apparatus for creating a panoramic image - Google Patents
Method and apparatus for creating a panoramic image Download PDFInfo
- Publication number
- RU2759965C1 RU2759965C1 RU2020134608A RU2020134608A RU2759965C1 RU 2759965 C1 RU2759965 C1 RU 2759965C1 RU 2020134608 A RU2020134608 A RU 2020134608A RU 2020134608 A RU2020134608 A RU 2020134608A RU 2759965 C1 RU2759965 C1 RU 2759965C1
- Authority
- RU
- Russia
- Prior art keywords
- image
- images
- shift
- mobile device
- projected
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G03—PHOTOGRAPHY; CINEMATOGRAPHY; ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ELECTROGRAPHY; HOLOGRAPHY
- G03B—APPARATUS OR ARRANGEMENTS FOR TAKING PHOTOGRAPHS OR FOR PROJECTING OR VIEWING THEM; APPARATUS OR ARRANGEMENTS EMPLOYING ANALOGOUS TECHNIQUES USING WAVES OTHER THAN OPTICAL WAVES; ACCESSORIES THEREFOR
- G03B37/00—Panoramic or wide-screen photography; Photographing extended surfaces, e.g. for surveying; Photographing internal surfaces, e.g. of pipe
- G03B37/04—Panoramic or wide-screen photography; Photographing extended surfaces, e.g. for surveying; Photographing internal surfaces, e.g. of pipe with cameras or projectors providing touching or overlapping fields of view
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/30—Determination of transform parameters for the alignment of images, i.e. image registration
- G06T7/38—Registration of image sequences
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Studio Devices (AREA)
- Image Processing (AREA)
Abstract
Description
ОБЛАСТЬ ТЕХНИКИFIELD OF TECHNOLOGY
[1] Настоящее техническое решение, в общем, относится к цифровой обработке изображений, а более конкретно к созданию панорамных изображений из серии изображений, полученных с помощью мобильного устройства.[1] The present technical solution generally relates to digital image processing, and more specifically to the creation of panoramic images from a series of images obtained using a mobile device.
УРОВЕНЬ ТЕХНИКИLEVEL OF TECHNOLOGY
[2] В настоящее время использование панорамных изображений получило широкое распространение в различных сферах жизнедеятельности. Панорамные изображения используют и в качестве бизнес инструментов, и для художественного представления помещений, городских улиц, ландшафтов и пр. Панорамные изображения позволяют получать такие изображения, угол обзора которых может достигать 360 градусов, что создает эффект присутствия и дает возможность запечатлеть все детали вокруг точки съемки.[2] Currently, the use of panoramic images has become widespread in various spheres of life. Panoramic images are used both as business tools and for artistic representations of premises, city streets, landscapes, etc. Panoramic images allow you to obtain images with a viewing angle of up to 360 degrees, which creates the effect of presence and makes it possible to capture all the details around the shooting point ...
[3] Создание панорамных изображений происходит путем сшивки серии последовательных фотоснимков (image stitching), снятых из одной точки в единое изображение, как правило, большого разрешения. При этом большое внимание уделяется устранению артефактов, таких как дублирование, затирание, исчезновение объектов, параллакс, шумы и т.д., поскольку их появление ухудшает качество итогового панорамного изображения и приводит к некорректной сшивки изображений. Особенно заметными артефакты становятся при съемке сцены, находящейся достаточно близко и имеющей однородные объекты (стены комнаты) и повторяющиеся объекты (обои с черно-белыми полосами). Кроме того, дополнительной проблемой при создании панорамного изображения с использованием мобильных телефонов, планшетов и т.д., является погрешность гироскопов и смещение камеры мобильного устройства пользователем при съемке сцены, что также вызывает большое количество артефактов и создает дополнительные проблемы.[3] Panoramic images are created by stitching a series of sequential photographs (image stitching) taken from one point into a single image, usually of high resolution. At the same time, much attention is paid to eliminating artifacts, such as duplication, blurring, disappearance of objects, parallax, noise, etc., since their appearance degrades the quality of the final panoramic image and leads to incorrect image stitching. Artifacts become especially noticeable when shooting a scene that is close enough and has uniform objects (walls of the room) and repeating objects (wallpaper with black and white stripes). In addition, an additional problem when creating a panoramic image using mobile phones, tablets, etc. is the error of gyroscopes and the movement of the camera of the mobile device by the user when shooting a scene, which also causes a large number of artifacts and creates additional problems.
[4] Из уровня техники известен способ создания панорамного изображения, описанный в заявке США № US 2018/197321 A1 (PETTERSSON GUSTAF), опубл. 12.07.2018. Указанный способ обеспечивает сшивку серии последовательных фотоснимков в панорамное изображение на мобильном телефоне, путем нахождения множества точек на стыках, пересекающихся между собой, изображений, вычисления векторов сдвига для указанных точек, причем вектора сдвига вычисляются на основе карты подобия, выравнивания изображений на основе вычисленных векторов сдвига и нахождения швов для сшивки выровненных изображений. Указанный способ позволяет решать проблемы параллакса и уменьшает возникновение артефактов при создании панорамы сцены, находящейся на достаточно большом расстоянии от точки съемки.[4] From the prior art, a method for creating a panoramic image is known, described in US application No. US 2018/197321 A1 (PETTERSSON GUSTAF), publ. 12.07.2018. The specified method provides for stitching a series of sequential photographs into a panoramic image on a mobile phone, by finding a set of points at the joints, intersecting with each other, images, calculating shift vectors for these points, and the shift vectors are calculated based on a similarity map, aligning images based on the calculated shift vectors and finding seams for stitching the aligned images. This method allows you to solve parallax problems and reduces the occurrence of artifacts when creating a panorama of a scene located at a sufficiently large distance from the shooting point.
[5] Однако указанный способ не применим в условиях съемки помещений с однородными объектами, например, комната с однотонными стенами, и при нахождении точки съемки достаточно близко к снимаемым объектам, т.к. в них практически отсутствуют общие точки, а также присутствует сильные шумы, что приводит к появлению артефактов и сильному разбросу векторов сдвига соседних точек. Кроме того, при использовании указанного способа на объектах с повторяющимся рисунком, например черно-белыми обоями, высока вероятность попадания в локальный минимум, когда перебираемые параметры (черно-белые полосы на обоях) могут хорошо совпасть, и функция ошибки будет низкая, при этом реальный сдвиг, который нужно сделать, может сильно отличаться.[5] However, this method is not applicable in the conditions of shooting rooms with homogeneous objects, for example, a room with monochromatic walls, and when the shooting point is located sufficiently close to the objects being shot, because there are practically no common points in them, and there is also strong noise, which leads to the appearance of artifacts and a strong scatter of the shift vectors of neighboring points. In addition, when using this method on objects with a repeating pattern, for example, black and white wallpaper, there is a high probability of hitting the local minimum, when the enumerated parameters (black and white stripes on the wallpaper) can match well, and the error function will be low, while the real the shift to be made can be very different.
[6] Из уровня техники также известен способ создания панорамного изображения, описанный в заявке США № US 2016/295108 A1 (CAO CHENG), опубл. 06.10.2016. Указанный способ использует специальную конструкцию, позволяющую закрепить множество камер таким образом, чтобы углы обзора соседних камер образовывали перекрывающиеся области. Для создания панорамного изображения в перекрывающихся изображениях находят координаты точек и проецируют на плоскость указанные изображения с известными координатами точек. После этого происходит выравнивание соседних проекций перекрывающихся изображений по точкам с помощью нахождения минимального значения метрики попиксельной разности для двух соседних проекций изображений. Выровненные изображения сшиваются в единое панорамное изображения.[6] From the prior art is also known a method for creating a panoramic image described in US application No. US 2016/295108 A1 (CAO CHENG), publ. 06.10.2016. This method uses a special design that allows multiple cameras to be fixed in such a way that the viewing angles of adjacent cameras form overlapping areas. To create a panoramic image in the overlapping images, the coordinates of the points are found and the indicated images with the known coordinates of the points are projected onto the plane. After that, the neighboring projections of the overlapping images are aligned by points by finding the minimum metric of the pixel-by-pixel difference for two adjacent image projections. The aligned images are stitched into a single panoramic image.
[7] Недостатком указанного решения является высокая сложность конструкции и невозможность использования алгоритмов выравнивания изображений, которые получили с отличных, от указанной конструкции крепления камер, источников съемки, например, с мобильных телефонов. Кроме того, выравнивание происходит методом простого перебора, что увеличивает сложность и объем вычислений. Также, использование указанного алгоритма не обеспечивает предотвращение попадания в локальный минимум при съемке однородных объектов (обои с повторяющимся рисунком), находящихся достаточно близко к точке съемки.[7] The disadvantage of this solution is the high complexity of the design and the impossibility of using algorithms for aligning images, which were obtained from sources other than the specified camera mounts, for example, from mobile phones. In addition, the alignment is performed by a simple enumeration method, which increases the complexity and volume of computations. Also, the use of the specified algorithm does not ensure the prevention of falling into the local minimum when shooting homogeneous objects (wallpaper with a repeating pattern) that are close enough to the shooting point.
[8] Общим недостатком существующих подходов является отсутствие способа создания панорамного изображения с помощью мобильных устройств, обеспечивающего высокое качество итогового панорамного изображения и предотвращающего появление артефактов, даже в условиях съемки однородных и повторяющихся объектов (комната с обоями с рисунком, однотонные стены). Также, такого рода решение должно обеспечивать стабильность работы в любых условиях съемки, не зависимо от расстояния до сцены.[8] A common disadvantage of existing approaches is the lack of a way to create a panoramic image using mobile devices, which ensures high quality of the final panoramic image and prevents artifacts, even when shooting homogeneous and repetitive objects (room with wallpaper with a pattern, plain walls). Also, this kind of solution should provide stability in any shooting conditions, regardless of the distance to the scene.
РАСКРЫТИЕ ИЗОБРЕТЕНИЕDISCLOSURE INVENTION
[9] Данное техническое решение направлено на устранение недостатков, присущих существующим решениям, известным из уровня техники.[9] This technical solution is aimed at eliminating the disadvantages inherent in existing solutions known from the prior art.
[10] Настоящее изобретение направлено на решение технической проблемы или технической задачи, заключающейся в создании панорамного изображения высокого качества из серии последовательных изображений, полученных с камеры мобильного устройства.[10] The present invention is directed to solving a technical problem or technical problem of creating a panoramic image of high quality from a series of sequential images obtained from the camera of a mobile device.
[11] Техническим результатом, достигающимся при решении вышеуказанной технической задачи, является повышение качества созданного панорамного изображения, полученного из серии последовательных изображений.[11] The technical result achieved by solving the above technical problem is to improve the quality of the created panoramic image obtained from a series of sequential images.
[12] Дополнительным техническим результатом, достигающимся при решении вышеуказанной задачи, является предотвращение возникновения артефактов при создании панорамного изображения, полученного из серии последовательных изображений.[12] An additional technical result achieved when solving the above problem is the prevention of artifacts when creating a panoramic image obtained from a series of sequential images.
[13] Указанные технические результаты достигаются благодаря осуществлению компьютерно-реализуемого способа создания панорамного изображения из серии последовательных изображений, выполняющегося процессором и содержащего этапы на которых:[13] The indicated technical results are achieved due to the implementation of a computer-implemented method for creating a panoramic image from a series of sequential images, executed by a processor and containing the stages at which:
a) получают последовательный набор изображений, полученных с помощью камеры мобильного устройства, причем каждое из изображений содержит по меньшей мере информацию об угле обзора камеры мобильного устройства и информацию об ориентации мобильного устройства во время съемки;a) obtaining a sequential set of images obtained using the camera of the mobile device, and each of the images contains at least information about the angle of view of the camera of the mobile device and information about the orientation of the mobile device during shooting;
b) определяют скорректированный угол обзора камеры на основе предполагаемого радиуса вращения телефона, предполагаемого среднего расстояния до объектов на изображении и информации об угле обзора камеры мобильного телефона;b) determining the corrected angle of view of the camera based on the assumed radius of rotation of the phone, the assumed average distance to objects in the image, and information about the angle of view of the camera of the mobile phone;
c) проецируют полученный на этапе а) набор изображений на равнопромежуточное представление панорамы, используя определенный скорректированный угол обзора камеры и информацию об ориентации мобильного устройства во время съемки;c) projecting the set of images obtained in step a) onto an equidistant view of the panorama using a certain corrected angle of view of the camera and information about the orientation of the mobile device during shooting;
d) получают, для каждого изображения из по меньшей мере двух спроецированных пересекающихся изображений, изображение границ;d) obtaining, for each image from at least two projected intersecting images, an image of the boundaries;
e) выполняют сглаживание, с радиусом, равным заданному шагу сдвига, для каждого из по меньшей мере двух спроецированных пересекающихся изображений и изображений границ;e) performing smoothing, with a radius equal to a predetermined shear step, for each of at least two projected intersecting images and boundary images;
f) вычисляют функцию сдвига, смещая на заданный шаг сдвига, по меньшей мере, первое изображение из по меньшей мере двух спроецированных пересекающихся изображений в точки сдвига из набора точек сдвига;f) calculating a shift function by shifting by a predetermined shift step at least a first image of at least two projected intersecting images to shift points from a set of shift points;
g) сдвигают, по меньшей мере, первое изображение из по меньшей мере двух спроецированных пересекающихся изображений в точку сдвига, где значение функции сдвига минимально;g) shifting at least a first image of the at least two projected intersecting images to a shift point where the value of the shift function is minimum;
h) сравнивают значение функции сдвига в сдвинутом положении с пороговым значением;h) comparing the value of the shift function at the shifted position with a threshold value;
i) уменьшают шаг сдвига в два раза при превышении значения функции сдвига в сдвинутом положении порогового значения;i) decreasing the shift step by half when the value of the shift function at the shifted position of the threshold value is exceeded;
j) повторяют этапы f) - i) до тех пор, пока значение функции сдвига в точке сдвига не достигнет порогового значения;j) repeating steps f) to i) until the value of the shift function at the shift point reaches a threshold;
k) выполняют сшивку по меньшей мере двух спроецированных изображений.k) stitching together at least two projected images.
[14] В одном из частных примеров осуществления способа предполагаемый радиус вращения телефона и предполагаемое среднее расстояние до объектов на изображении задается вручную пользователем[14] In one of the particular examples of the implementation of the method, the estimated radius of rotation of the phone and the estimated average distance to objects in the image are set manually by the user
[15] В другом частном примере осуществления способа предполагаемый радиус вращения телефона и предполагаемое среднее расстояние до объектов на изображении задается автоматически, на основе выбранного режима съемки.[15] In another particular embodiment of the method, the estimated radius of rotation of the phone and the estimated average distance to objects in the image are set automatically based on the selected shooting mode.
[16] В другом частном примере осуществления способа изображение границ получают при помощи детектора границ Канни.[16] In another particular embodiment of the method, the image of the borders is obtained using the Canny border detector.
[17] В другом частном примере осуществления способа набор точек сдвига представляет собой по меньшей мере следующие точки: текущее положение изображений; сдвиг по горизонтальной оси первого изображения на текущий шаг сдвига во встречном по отношению ко второму изображению направлении; сдвиг по горизонтальной оси первого изображения на текущий шаг сдвига в противоположном по отношению ко второму изображению направлении; сдвиг по вертикальной оси первого изображения на текущий шаг сдвига во встречном по отношению ко второму изображению направлении; сдвиг по вертикальной оси первого изображения на текущий шаг сдвига в противоположном по отношению ко второму изображению направлении.[17] In another particular embodiment of the method, the set of offset points is at least the following points: the current position of the images; a shift along the horizontal axis of the first image by the current shift step in the direction opposite to the second image; shift along the horizontal axis of the first image by the current shift step in the direction opposite to the second image; shift along the vertical axis of the first image by the current shift step in the direction opposite to the second image; shift along the vertical axis of the first image by the current shift step in the direction opposite to the second image.
[18] В другом частном примере осуществления способа сглаживание изображений выполняется на основе фильтра размытия по Гауссу.[18] In another particular embodiment of the method, image smoothing is performed based on a Gaussian blur filter.
[19] В другом частном примере осуществления способа сшивка по меньшей мере двух проекций изображений осуществляется методом динамического программирования.[19] In another particular embodiment of the method, the stitching of at least two image projections is carried out by the dynamic programming method.
[20] Кроме того, заявленный технический результат достигается за счет устройства создания панорамного изображения из серии последовательных изображений содержащего:[20] In addition, the claimed technical result is achieved by a device for creating a panoramic image from a series of sequential images containing:
по меньшей мере один процессор;at least one processor;
по меньшей мере одну память, соединенную с процессором, которая содержит машиночитаемые инструкции, которые при их выполнении по меньшей мере одним процессором обеспечивают выполнение способа создания панорамного изображения из серии последовательных изображений.at least one memory connected to the processor, which contains computer-readable instructions that, when executed by at least one processor, provide a method for creating a panoramic image from a series of sequential images.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF DRAWINGS
[21] Признаки и преимущества настоящего технического решения станут очевидными из приводимого ниже подробного описания и прилагаемых чертежей, на которых:[21] The features and advantages of the present technical solution will become apparent from the following detailed description and the accompanying drawings, in which:
[22] Фиг. 1 иллюстрирует блок-схему выполнения заявленного способа создания панорамного изображения из серии последовательных изображений, полученных с мобильного устройства.[22] FIG. 1 illustrates a block diagram of an implementation of the claimed method for creating a panoramic image from a series of sequential images obtained from a mobile device.
[23] Фиг. 2 иллюстрирует изменение угла обзора камеры мобильного устройства.[23] FIG. 2 illustrates the change in the angle of view of the camera of a mobile device.
[24] Фиг. 3 иллюстрирует проецирование изображений на плоскость.[24] FIG. 3 illustrates the projection of images onto a plane.
[25] Фиг. 4 иллюстрирует пример нахождения карты границ изображения.[25] FIG. 4 illustrates an example of finding an image border map.
[26] Фиг. 5-6 иллюстрируют пример работы алгоритма сдвига для пары пересекающихся спроецированных изображений.[26] FIG. 5-6 illustrate an example of how the shift algorithm works for a pair of overlapping projected images.
[27] Фиг. 7 - иллюстрирует общий вид вычислительного устройства.[27] FIG. 7 illustrates a general view of a computing device.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯCARRYING OUT THE INVENTION
[28] Ниже будут описаны термины и понятия, необходимые для реализации настоящего технического решения.[28] Below will be described the terms and concepts necessary for the implementation of this technical solution.
[29] В настоящем изобретении термины: изображение, снимок, фотография являются синонимами и отражают общий технический термин, означающий захват сцены с объектами с помощью камеры мобильного устройства пользователя.[29] In the present invention, the terms: image, snapshot, photograph are synonymous and reflect the general technical term meaning capture of a scene with objects using the camera of the user's mobile device.
[30] Панорамное изображение - изображение, сшитое из множества последовательных изображений.[30] Panoramic image is an image stitched from many consecutive images.
[31] Параллакс - изменение видимого положения объекта относительно удаленного фона в зависимости от положения наблюдателя.[31] Parallax is a change in the apparent position of an object relative to a distant background, depending on the position of the observer.
[32] Артефакт изображения - любая черта, не присутствующая в отображаемом объекте, но присутствующая на изображении.[32] An image artifact is any feature not present in a displayable, but present in an image.
[33] Сшивка изображений - совмещение отдельных изображений, имеющих перекрывающиеся области в единое изображение.[33] Image stitching is the combination of individual images with overlapping areas into a single image.
[34] Заявленное техническое решение предлагает новых подход в создании панорамных изображений, в том числе и 360° панорамных изображений, из серии последовательных снимков, полученных с помощью мобильного телефона или другого переносного устройства, например, планшета и т.д. Основной особенностью заявленного решения является возможность сшивки последовательных изображений в панорамное изображение высокого качества, даже в условиях съемки близко расположенной сцены, содержащей однородные и повторяющиеся объекты. Например, создание панорамного изображения 360° комнаты с однотонными стенами или комнаты с черно-белыми обоями.[34] The claimed technical solution offers a new approach to creating panoramic images, including 360 ° panoramic images, from a series of sequential images obtained using a mobile phone or other portable device, such as a tablet, etc. The main feature of the claimed solution is the ability to stitch sequential images into a high-quality panoramic image, even when shooting a closely spaced scene containing homogeneous and repeating objects. For example, creating a 360 ° panoramic image of a room with plain walls or a room with black and white wallpaper.
[35] Кроме того, заявленное решение позволяет решать проблемы, связанные с возникновением артефактов (дублирование объектов, затирание объектов), вызванных смещением точки съемки относительно объектов сцены (например, вращение пользователя с мобильным устройством на вытянутых руках). Также, заявленное решение позволяет с высокой точностью сопоставить спроецированные изображения для последующей сшивки в панорамное изображение, тем самым устраняя проблемы, возникающие из-за погрешности гироскопа мобильного устройства.[35] In addition, the claimed solution allows you to solve the problems associated with the occurrence of artifacts (duplication of objects, blurring of objects) caused by the displacement of the shooting point relative to the objects in the scene (for example, the rotation of the user with a mobile device on outstretched arms). Also, the claimed solution makes it possible to match the projected images with high accuracy for subsequent stitching into a panoramic image, thereby eliminating the problems arising from the error of the gyroscope of the mobile device.
[36] Данное техническое решение может быть реализовано в виде средства создания панорамных изображений или машиночитаемого носителя, содержащего инструкции для выполнения заявленного способа.[36] This technical solution can be implemented in the form of a means for creating panoramic images or a computer-readable medium containing instructions for performing the claimed method.
[37] В данном решении под средством создания панорамного изображения понимается, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций).[37] In this solution, a means of creating a panoramic image is understood as a computer (electronic computer), CNC (numerical control), PLC (programmable logic controller), computerized control systems and any other devices capable of performing a given, well-defined sequence computing operations (actions, instructions).
[38] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы)/[38] A command processing device means an electronic unit or an integrated circuit (microprocessor) that executes machine instructions (programs) /
[39] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных, например таких устройств, как оперативно запоминающие устройства (ОЗУ) и/или постоянные запоминающие устройства (ПЗУ). В качестве ПЗУ могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, твердотельные накопители (SSD), оптические носители данных (CD, DVD, BD, MD и т.п.) и др.[39] The command processor reads and executes machine instructions (programs) from one or more storage devices, such as devices such as random access memory (RAM) and / or read only memory (ROM). The ROM can be, but is not limited to, hard disks (HDD), flash memory, solid state drives (SSD), optical data carriers (CD, DVD, BD, MD, etc.), etc.
[40] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.[40] A program is a sequence of instructions intended for execution by a computer control device or a command processing device.
[41] На Фиг. 1 представлена блок схема способа (100) создания панорамного изображения из последовательных снимков, полученных с мобильного устройства пользователя, который раскрыт поэтапно более подробно далее.[41] FIG. 1 shows a block diagram of a method (100) for creating a panoramic image from sequential images obtained from a user's mobile device, which is disclosed in more detail in stages below.
[42] На этапе (101) средство создания панорамного изображения получает последовательный набор изображений для создания панорамного изображения. Для получения последовательного набора изображений пользователь совершает серию последовательных снимков сцены с объектами из одной точки съемки. Получение изображений может осуществляться непосредственно в реальном времени с помощью камеры мобильного устройства в средстве создания панорамного изображения. В другом частном варианте, пользователь может создавать панорамное изображение из сохраненных в памяти последовательных фотографий сцены.[42] In step (101), the panoramic image creation means obtains a sequential set of images to create a panoramic image. To obtain a sequential set of images, the user takes a series of sequential shots of a scene with objects from one shooting point. The acquisition of images can be carried out directly in real time using the camera of the mobile device in the tool for creating a panoramic image. In another particular embodiment, the user can create a panoramic image from sequential photographs of the scene stored in memory.
[43] Средство создания панорамного изображения более подробно раскрывается на Фиг. 7 и может содержать графический интерфейс пользователя, предназначенный для создания панорамного изображения. Для получения панорамного изображения пользователь может поворачиваться вокруг своей оси с мобильным устройством в руках, и в это время будет происходить захват объектов сцены вокруг пользователя (фотографирование). Отображение процесса съемки сцены может происходить на графическом интерфейсе средства создания панорамного изображения. При вращении пользователя вокруг своей оси набор последовательных снимков может создаваться автоматически на основе угла обзора камеры. Созданный набор последовательных изображений сохраняется в памяти средства создания панорамных изображений с информацией с гироскопа об ориентации телефона в момент съемки и информацией об угле обзора камеры, а также номером каждой фотографии.[43] The panoramic image creation means is disclosed in more detail in FIG. 7 and may contain a graphical user interface for creating a panoramic image. To obtain a panoramic image, the user can rotate around his axis with a mobile device in his hands, and at this time objects of the scene around the user will be captured (photographing). The process of shooting a scene can be displayed on the graphical interface of the panoramic image creation tool. By rotating the user around its axis, a set of consecutive shots can be created automatically based on the camera's angle of view. The created set of sequential images is saved in the memory of the panoramic imaging tool with information from the gyroscope about the orientation of the phone at the time of shooting and information about the camera's angle of view, as well as the number of each photo.
[44] Указанная информация хранится в виде метаданных фотографий в таких форматах как EXIF IPTC, ХМР и т.д., и создается автоматически в момент снимка. Последовательный набор фотографий с информацией может быть получен непосредственно с помощью встроенной камеры мобильного устройства и отправлен в средство создания панорамных изображений. В настоящем изобретении под мобильным устройством понимается любое персональное переносное устройство пользователя, например, мобильный телефон, планшет, переносная фото-видео камера и т.д.[44] The specified information is stored in the form of photo metadata in formats such as EXIF IPTC, XMP, etc., and is created automatically at the time of the picture. A sequential set of photos with information can be captured directly with the built-in camera of the mobile device and sent to the panoramic imaging tool. In the present invention, a mobile device means any personal portable device of a user, for example, a mobile phone, tablet, portable photo-video camera, etc.
[45] Как было отмечено ранее, существует проблема того, что пользователь делает фотографии не из одной точки, а двигая камеру по некоторой окружности вокруг себя. Из-за этого происходит эффект параллакса, когда взаимное расположение фона и объектов, находящихся достаточно близко к точке съемки, отличается на разных кадрах, что приводит к дублированию или затиранию объектов на итоговой панораме.[45] As noted earlier, there is a problem that the user takes photos not from one point, but moving the camera in a certain circle around him. Because of this, the parallax effect occurs when the relative position of the background and objects that are close enough to the shooting point differs in different frames, which leads to duplication or blurring of objects in the final panorama.
[46] Как видно на Фиг. 2, при совершении последовательных снимков пользователь вращает средство съемки вокруг своей оси по радиусу 201, который является радиусом вращения средства съемки вокруг точки съемки. Радиус 201, как правило, возникает из-за того, что пользователь держит телефон на некотором расстоянии от той точки, где он располагается, что приводит в момент поворота пользователя к созданию снимков из разных точек (смещение нодальной точки съемки при фотографировании). Поскольку, в некоторых ситуациях объекты сцены располагаются близко к точке съемки, то смещение точки съемки приводит к тому, что угол 202 - реальный угол обзора камеры мобильного устройства, не перекрывает некоторые области сцены. Также, указанные факторы влияют на дублирование или затирание части объектов сцены при проецировании набора изображений.[46] As seen in FIG. 2, when taking successive shots, the user rotates the survey means around its axis along the
[47] Для решения указанной проблемы был предложен следующий подход, заключающийся в том, что если известно расстояние 203 от точки съемки до большинства объектов, то можно изменить угол 202 при проецировании фотографии так, чтобы достичь наиболее хорошей сшивки панорамы именно на этом расстоянии и минимизировать эффект параллакса.[47] To solve this problem, the following approach was proposed, which consists in the fact that if the
[48] С учетом того, что указанный способ (100) предназначен для создания 360° панорам небольших помещений, где параллакс является значительной проблемой, то для его устранения и повышения качества итогового панорамного изображения, сшитого из последовательного набора изображений, вычисляется угол 204 - скорректированный угол обзора камеры (103).[48] Given that this method (100) is designed to create 360 ° panoramas of small rooms, where parallax is a significant problem, then to eliminate it and improve the quality of the final panoramic image stitched from a sequential set of images, the
[49] Для этого на этапе (102) пользователь мобильного устройства вручную задает предполагаемый радиус вращения мобильного устройства, а также предполагаемое расстояние до объектов сцены, которое может являться расстоянием 203. Указанная операция может выполняться в графическом интерфейсе средства создания панорамного изображения. В другом частном варианте, предполагаемый радиус вращения мобильного телефона и предполагаемое расстояние до объектов сцены могут быть заданы автоматически на основе выбранного режима создания панорамного изображения.[49] For this, at step (102), the user of the mobile device manually sets the expected radius of rotation of the mobile device, as well as the estimated distance to objects in the scene, which may be the
[50] Так, например, если пользователь желает создать панорамное изображение помещения, то при выборе режима «помещение» указанные параметры могут быть заданы автоматически. Для указанного режима «помещение» было установлено, что оптимальными параметрами является расстояние 3 метра как наиболее вероятное расстояние от пользователя до стен помещения, и 0.4 метра как расстояние от оси вращения до телефона в руке пользователя. Однако, специалисту в данной области техники, очевидно, что указанное решение не ограничивается только одним режимом съемки и может содержать несколько режимов съемки с подобранными оптимальными параметрами предполагаемого радиуса вращения мобильного телефона и предполагаемого расстояния до объектов сцены, в зависимости от расстояния до сцены и роста пользователя.[50] So, for example, if the user wants to create a panoramic image of a room, then when the "room" mode is selected, these parameters can be set automatically. For the indicated mode “room” it was found that the optimal parameters are the distance of 3 meters as the most probable distance from the user to the walls of the room, and 0.4 meters as the distance from the axis of rotation to the phone in the user's hand. However, a person skilled in the art, it is obvious that the specified solution is not limited to only one shooting mode and may contain several shooting modes with selected optimal parameters of the estimated radius of rotation of the mobile phone and the estimated distance to objects in the scene, depending on the distance to the scene and the height of the user. ...
[51] Возвращаясь к этапу (103), для вычисления скорректированного угла обзора камеры 204, используется заданное предполагаемое расстояние до объектов сцены от точки съемки, предполагаемый радиус вращения мобильного телефона, реальный угол обзора камеры 201. Указанные вычисления могут производиться, например, в средстве создания панорамного изображения при помощи процессора. Для вычисления 204 используется следующая формула:[51] Returning to step (103), to calculate the corrected angle of view of the
где αreal - реальный угол обзора камеры,where α real is the real viewing angle of the camera,
αcorr - скорректированный угол обзора камеры,α corr - corrected angle of view of the camera,
Rhand - предполагаемый радиус вращения камеры,R hand - the estimated radius of rotation of the camera,
Rtarget - предполагаемое среднее расстояние до объектов на фотографии.R target is the estimated average distance to objects in the photo.
[52] Вычисленный угол 204 в дальнейшем используется для проецирования полученного набора последовательных снимков (104).[52] The calculated
[53] На этапе (104) каждый снимок с извлеченными метаданными последовательно проецируется на плоскость (на полотно будущей панорамы). Для этого каждый снимок в соответствии с его номером последовательно проецируют на равнопромежуточное представление панорамы. Так, например, как показано на Фиг. 3, снимок 301 проецируют на равнопромежуточное представление панорамы, т.е. на плоскость 302. При этом расположение фотографий в момент их проецирования зависит от информации с гироскопа мобильного устройства и угла обзора камеры. Для проецирования фотографии на полотно в способе (100) используется информация об ориентации телефона во время съемки и скорректированный угол обзора камеры. Для проецирования фотографий в данном решении используется гномоническая проекция. Однако специалисту в данной области техники, очевидно, что может быть использоваться и другой тип проекции, например, стереографическая, цилиндрическая и т.д.[53] In step (104), each image with the extracted metadata is sequentially projected onto a plane (onto the canvas of the future panorama). To do this, each image, in accordance with its number, is sequentially projected onto an equidistant view of the panorama. So, for example, as shown in FIG. 3, the
[54] Так как, в настоящий момент не существует таких гироскопов, которые бы обеспечивали точное сопоставление спроецированных изображений на полотне (отсутствие смещения изображений по вертикальной или горизонтальной оси друг относительно друга), то для обеспечения их дальнейшей сшивки в итоговую панораму, выполняется сдвиг указанных изображений. Для устранения смещения соседних проекций изображений в указанном решении применяется алгоритм сдвига изображений, который обеспечивает выравнивание спроецированных изображений между собой. Указанный алгоритм раскрывается более подробно ниже.[54] Since at the moment there are no such gyroscopes that would provide an accurate comparison of the projected images on the canvas (no displacement of images along the vertical or horizontal axis relative to each other), then to ensure their further stitching into the final panorama, the indicated images. To eliminate the displacement of adjacent projections of images in the specified solution, an image shift algorithm is used, which ensures the alignment of the projected images with each other. This algorithm is disclosed in more detail below.
[55] Основной особенностью алгоритма сдвига изображений является сопоставление проекций пересекающихся изображений на основе функции сдвига, без использования особых точек (feature points) таких изображений. Такой подход обусловлен тем, что в сценах с однородными объектами и повторяющимися объектами присутствует очень малое количество особых точек или же такие точки вообще отсутствуют. Также, указанный подход предотвращает попадания проекций изображений при их сопоставлении в локальные минимумы, когда сопоставляемые параметры соседних спроецированных изображений могут точно совпасть, однако реальный сдвиг, который будет необходим для сопоставления изображений будет сильно отличаться.[55] The main feature of the image shift algorithm is the comparison of projections of intersecting images based on the shift function, without using the feature points of such images. This approach is due to the fact that in scenes with homogeneous objects and repetitive objects, there are very few special points, or there are no such points at all. Also, this approach prevents the projections of images from falling into local minima when matching them, when the compared parameters of neighboring projected images can exactly coincide, but the actual shift that will be required for matching images will be very different.
[56] Для реализации алгоритма сдвига в способе (100) определяются все пересекающиеся спроецированные изображения (105).[56] To implement the shift algorithm in the method (100), all intersecting projected images (105) are determined.
[57] На этапе (105) происходит определение всех спроецированных изображений, чьи проекции пересекаются. Как правило, при создании панорамного изображения требуемого объекта, изображения проецируются либо в горизонтальной плоскости, либо в вертикальной плоскости, в зависимости от объекта и типа съемки (вертикальная панорама/горизонтальная панорама). Из этого следует, что при создании таких панорам изображения будут пересекаться со своими соседями в одной плоскости, т.е. по меньшей мере первое изображение из набора спроецированных изображений будет перекрывать часть по меньшей мере второго изображения из указанного набора изображений. В таком случае, определение пересекающихся проекций будет происходить попарно и будут определяться все пары пересекающихся спроецированных изображений. Определение пар изображений, чьи проекции пересекаются может происходить, например, по номерам снимков, которые были извлечены из метаданных на этапе (101) средством создания панорамного изображения.[57] In step (105), all the projected images, whose projections intersect, are determined. Typically, when creating a panoramic image of the desired subject, the images are projected either horizontally or vertically, depending on the subject and the type of shooting (vertical panorama / horizontal panorama). It follows from this that when creating such panoramas, the images will intersect with their neighbors in the same plane, i.e. at least a first image from a set of projected images will overlap a portion of at least a second image from said set of images. In this case, the definition of intersecting projections will occur in pairs and all pairs of intersecting projected images will be determined. Determination of pairs of images, whose projections intersect can occur, for example, by the numbers of the images that were extracted from the metadata in step (101) by means of creating a panoramic image.
[58] В другом частном варианте реализации, последовательные изображения проецируются на плоскость на этапе (104), размеченную сеткой (с заранее известными координатами), что обеспечивает известность расположения всех изображений на плоскости. Известность расположения всех последовательных изображений на плоскости позволяет заранее знать, какие именно спроецированные изображения пересекаются или должны пересекаться между собой. Такой вариант реализации делает необязательным этап определения спроецированных изображений (105). Кроме того, в еще одном варианте реализации, может происходить безусловное определение пересекающихся спроецированных изображений на основе только номера снимка в последовательности снимка.[58] In another particular implementation, successive images are projected onto a plane in step (104), marked with a grid (with previously known coordinates), which ensures the location of all images on the plane is known. The knowledge of the location of all consecutive images on the plane allows you to know in advance which projected images intersect or should intersect with each other. This implementation makes the step of determining the projected images unnecessary (105). Moreover, in yet another embodiment, overlapping projected images may be unconditionally determined based on only the snapshot number in the snapshot sequence.
[59] Стоит также отметить, что в еще одном частном варианте реализации, при создании 360° панорамного изображения, последовательные снимки на плоскости располагаются в, по меньшей мере, 2 ряда, то есть каждое спроецированное изображение пересекается с соседним изображением по горизонтали, и с изображением по вертикали (которое находится сверху/снизу по отношению к горизонтальному ряду). Определение спроецированных пересекающихся изображений при создании такой панорамы может происходить также, как и при создании обычной панорамы.[59] It is also worth noting that in another particular embodiment, when creating a 360 ° panoramic image, successive images on a plane are arranged in at least 2 rows, that is, each projected image intersects with an adjacent image horizontally, and with vertical image (which is above / below in relation to the horizontal row). The definition of projected overlapping images when creating such a panorama can be done in the same way as when creating a normal panorama.
[60] На этапе (106) для всех спроецированных пар, чьи проекции пересекаются, получают границы изображений как показано на Фиг. 4. Для получения границ изображения используется детектор границ, например, детектор границ Канни [1]. С помощью детектора границ Канни выполняется поиск контуров - точек в цифровом изображении, в которых яркость изображения резко меняется. Эти точки обычно организованы в виде набора кривых линий и называются краями, границами или контурами. Определение краев помогает установить границы и форму объекта. Так, на Фиг. 4 из изображения 401, с помощью детектора границ Канни получают его изображение границ 402.[60] In step (106), for all projected pairs whose projections intersect, image boundaries are obtained as shown in FIG. 4. To obtain the edges of the image, an edge detector is used, for example, the Canny edge detector [1]. The Canny Border Detector searches for contours - points in a digital image where the brightness of the image changes dramatically. These points are usually organized as a set of curved lines and are called edges, boundaries, or paths. Defining edges helps you establish the boundaries and shape of an object. Thus, in FIG. 4 from
[61] Полученные изображения границ и спроецированные пересекающиеся изображения используются в алгоритме сдвига для сопоставления спроецированных изображений. Сопоставление изображений выполняется с помощью алгоритма сдвига для каждой пары спроецированных пересекающихся изображений. Указанный алгоритм может выполняться одновременно для всех пар пересекающихся спроецированных изображений. Сопоставление изображений выполняется итеративно, как будет раскрыто более подробно ниже.[61] The resulting border images and the projected intersecting images are used in a shift algorithm to match the projected images. Image matching is performed using a shift algorithm for each pair of projected intersecting images. The specified algorithm can be executed simultaneously for all pairs of intersecting projected images. Image matching is performed iteratively, as will be discussed in more detail below.
[62] На первой итерации выбирается начальный шаг сдвига (S0), определяющий расстояние смещения первого изображения относительно второго изображения в каждой паре пересекающихся спроецированных изображений. Величина начального шага сдвига S0 выбирается случайным образом и может быть равна, например, 50 пикселей. Начальный шаг сдвига может быть задан автоматически средством создания панорамного изображения.[62] In the first iteration, an initial offset step (S 0 ) is selected, which determines the offset distance of the first image relative to the second image in each pair of intersecting projected images. The size of the initial step of the shift S 0 is chosen at random and can be equal, for example, 50 pixels. The initial step of the shift can be set automatically by the panoramic image creation tool.
[63] Далее, для устранения шумов на изображении и исключения попадания в локальные минимумы, выполняется сглаживание изображений (107).[63] Further, in order to eliminate noise in the image and exclude hitting the local minima, the images are smoothed (107).
[64] На этапе (107) к полученным изображениям границ, а также к проекциям пересекающихся изображений применяется сглаживание (размытие). Для этого к изображениям границ и проекциям пересекающихся изображений применяется матричный фильтр размытия, например, быстрое размытие по Гауссу. Специалисту в данной области техники, очевидно, что может применяться любой матричный фильтр, обеспечивающий размытие изображения.[64] In step (107), smoothing (blurring) is applied to the obtained border images as well as to the projections of the intersecting images. To do this, a matrix blur filter is applied to the border images and projections of intersecting images, for example, fast Gaussian blur. It will be apparent to those skilled in the art that any matrix filter that blur the image can be used.
[65] Кроме того, для исключения попадания в локальный минимум изображений при поиске вектора сдвига, в указанном способе (100) сглаживание выполняется с радиусом, равным текущему шагу сдвига (Si) на i-той итерации. Так, например, на первой итерации, изображения границ и проекции изображений сглаживаются с начальным шагом сдвига (S0).[65] In addition, in order to avoid falling into the local minimum of images when searching for the shift vector, in the specified method (100), smoothing is performed with a radius equal to the current shift step (S i ) at the i-th iteration. So, for example, at the first iteration, images of boundaries and projections of images are smoothed with an initial shift step (S 0 ).
[66] После сглаживания изображений границ и проекций пересекающихся изображений вычисляется функция сдвига в каждой точке из набора точек сдвига (108).[66] After smoothing the images of the boundaries and projections of the intersecting images, the shift function is calculated at each point from the set of shift points (108).
[67] На этапе (108) для получения набора точек сдвига используется текущий шаг сдвига Si, определяющий расстояние смещения первого изображения относительно второго изображения в каждой паре пересекающихся спроецированных изображений. Набор точек сдвига формируется посредством смещения указанного первого изображения по вертикальной и горизонтальной оси от текущего местоположения на расстояние, численно равное текущему шагу сдвига Si на i-той итерации. Таким образом, получается следующий набор точек сдвига:[67] In step (108), to obtain a set of offset points, the current offset step S i is used , which determines the offset distance of the first image relative to the second image in each pair of intersecting projected images. The set of shift points is formed by shifting the specified first image along the vertical and horizontal axes from the current location by a distance numerically equal to the current shift step S i at the i-th iteration. Thus, the following set of shear points is obtained:
• текущее положение изображений;• current position of images;
• сдвиг по горизонтальной оси первого изображения на шаг сдвига во встречном по отношению ко второму изображению направлении;• shift along the horizontal axis of the first image by a shift step in the direction opposite to the second image;
• сдвиг по горизонтальной оси первого изображения на шаг сдвига в противоположном по отношению ко второму изображению направлении;• shift along the horizontal axis of the first image by a shift step in the direction opposite to the second image;
• сдвиг по вертикальной оси первого изображения на шаг сдвига в верхнее положение по отношению ко второму изображению;• shift along the vertical axis of the first image by a shift step to the upper position in relation to the second image;
• сдвиг по вертикальной оси первого изображения на шаг сдвига в нижнее положение по отношению ко второму изображению.• shift along the vertical axis of the first image by a shift step to the lower position in relation to the second image.
[68] Продолжая этап (108), первое изображение из каждой пары пересекающихся спроецированных изображений сдвигают в каждую точку из набора точек сдвига и вычисляют функцию сдвига в этой точке по следующей формуле:[68] Continuing with step (108), the first image from each pair of intersecting projected images is shifted to each point from the set of offset points, and the offset function at that point is calculated using the following formula:
где P1 blurred - размытая проекция первого изображения из пары пересекающихся спроецированных изображений,where P 1 blurred is a blurred projection of the first image from a pair of intersecting projected images,
Р2 blurred - размытая проекция второго изображения из пары пересекающихся спроецированных изображений,Р 2 blurred - a blurred projection of the second image from a pair of intersecting projected images,
E1 blurred - размытое изображение карты границ первого изображения,E 1 blurred - blurred image of the map of the boundaries of the first image,
Е2 blurred - размытое изображение карты границ второго изображения,E 2 blurred - blurred image of the border map of the second image,
λ - весовой коэффициент совпадения контуров на изображениях,λ is the weighting factor of the coincidence of the contours in the images,
S - шаг сдвига.S - shift step.
[69] Вычисленная функция сдвига отображает разницу между изображениями. Расчет функции сдвига позволяет определить среднепиксельную разность между изображениями, учитывая при этом совпадение контуров указанных изображений. Минимальное значение функции сдвига означает положение, в которой указанные изображения совпадают наиболее точно.[69] The calculated shift function displays the difference between images. Calculation of the shift function allows you to determine the average pixel difference between the images, taking into account the coincidence of the contours of the indicated images. The minimum value of the shift function means the position at which the specified images match most closely.
[70] Таким образом, на этапе (108) для каждой пары пересекающихся спроецированных изображений вычисляется по меньшей мере пять значений функции сдвига и происходит сдвиг изображений в позицию, где значение функции минимально (109).[70] Thus, in step (108), for each pair of intersecting projected images, at least five values of the shift function are calculated and the images are shifted to the position where the value of the function is minimum (109).
[71] На этапе (109) на основе вычисленных функций сдвига в наборе точек сдвига (по меньшей мере 5 позиций) выполняется сдвиг первого изображения в каждой паре пересекающихся изображений в точку сдвига, где значение функции сдвига минимально, т.е. где изображения точнее всего совпадают друг с другом.[71] In step (109), based on the calculated shift functions in the set of shift points (at least 5 positions), the first image in each pair of intersecting images is shifted to a shift point where the shift function value is minimum, i. E. where the images match each other most closely.
[72] Далее указанное значение функции сдвига сравнивается с пороговым значением функции сдвига на этапе (110).[72] Next, the specified value of the shift function is compared with the threshold value of the shift function in step (110).
[73] Так как начальный шаг сдвига (S0) выбирается случайным образом, то могут возникать ситуации, когда минимальное значение функции сдвига в точке сдвига не обеспечивает точное сопоставление изображений. Для определения точности сопоставления изображений было введено пороговое значение функции сдвига. Пороговое значение функции сдвига интерпретирует точность сопоставления соседних спроецированных изображений. При значении функции сдвига меньше указанного порогового значения соседние проекции изображений совпадают с такой точностью, что при их сшивке на итоговом панорамном изображении отсутствуют визуальные смещения снимков. Так, например, в качестве порогового значения может быт выбрано значение среднепиксельной разности между изображениями не более 2 пикселей.[73] Since the initial shift step (S 0 ) is randomly selected, situations may arise where the minimum value of the shift function at the shift point does not provide accurate image matching. To determine the accuracy of the image matching, a threshold value of the shift function was introduced. The shift function threshold interprets the matching accuracy of adjacent projected images. When the value of the shift function is less than the specified threshold value, the neighboring projections of the images coincide with such an accuracy that when they are stitched together, there are no visual displacements of the images in the final panoramic image. So, for example, the value of the average pixel difference between images of not more than 2 pixels can be selected as a threshold value.
[74] На основе результатов сравнения, полученных на этапе (110) сопоставление изображений либо завершается и способ (100) переходит к этапу (112), либо способ (100) переходит к этапу (111) и происходит следующая итерация.[74] Based on the comparison results obtained in step (110), the image matching either ends and method (100) proceeds to step (112), or method (100) proceeds to step (111) and the next iteration occurs.
[75] Так, при значении функции сдвига больше порогового значения функции сдвига способ (100) переходит к этапу (111).[75] Thus, when the value of the shift function is greater than the threshold value of the shift function, the method (100) proceeds to step (111).
[76] На этапе (111) текущий шаг сдвига уменьшается в два раза. Это позволяет повысить точность сдвига спроецированных пересекающихся изображений.[76] In step (111), the current shift pitch is halved. This improves the offset accuracy of projected intersecting images.
[77] После уменьшения текущего шага сдвига в два раза способ (100) возвращается к этапам (107)-(111) и происходит повторение указанных этапов до тех пор, пока функция сдвига не станет меньше порогового значения. Причем, этапы (107)-(111) выполняются в каждой новой итерации с новым шагом сдвига и начальное положение изображений на новой итерации является точкой сдвига, где значение функции сдвига было минимально, которую получили на предыдущей итерации. При этом стоит отметить, что если на какой-либо итерации при получении нового шага сдвига, путем уменьшения текущего шага сдвига в два раза, новый шаг сдвига будет больше предыдущего, то способ (100) возвращается к этапам (107)-(111) с другим шагом сдвига, выбранным случайным образом. Уменьшение шага сдвига в два раза обеспечивает бинпоиск требуемой позиции сдвига в два раза быстрее по сравнению с обычным перебором.[77] After decreasing the current shift step by half, the method (100) returns to steps (107) - (111) and repeats these steps until the shift function becomes less than the threshold value. Moreover, steps (107) - (111) are performed in each new iteration with a new shift step, and the initial position of the images at the new iteration is the shift point, where the value of the shift function was minimal, which was obtained at the previous iteration. It should be noted that if at any iteration, when a new shift step is obtained, by decreasing the current shift step by half, the new shift step will be larger than the previous one, then method (100) returns to steps (107) - (111) with another shift step, chosen at random. Decreasing the shift step by half provides bin search for the required shift position twice as fast as compared to the usual search.
[78] Стоит также отметить, что в одном частном варианте осуществления, вместо достижения функцией сдвига порогового значения, способ (100) будет выполняться до тех пор, пока текущий шаг сдвига не уменьшиться в, по меньшей мере, 7 раз. То есть способ (100) будет выполнять по меньшей мере 7 итераций с уменьшением текущего шага сдвига в 2 раза. Такое количество итераций также обеспечит минимальное значение функции сдвига для пересекающихся спроецированных изображений. Для специалиста в данной области техники будет очевидно, что количество итераций повторения этапов (107)-(111), требуемых для достижения минимального значения функции сдвига, может зависеть от заданной точности и качества желаемого итогового панорамного изображения.[78] It should also be noted that in one particular embodiment, instead of reaching a threshold value by the shift function, method (100) will be performed until the current shift step is reduced by at least 7 times. That is, method (100) will perform at least 7 iterations with decreasing the current shift step by 2 times. This number of iterations will also provide a minimum shift function value for overlapping projected images. For a person skilled in the art it will be obvious that the number of iterations of repeating steps (107) - (111) required to achieve the minimum value of the shift function may depend on the desired accuracy and quality of the desired final panoramic image.
[79] На Фиг. 5-6, показан пример сопоставления соседних пересекающихся спроецированных изображений, описанный выше на этапах (107) - (111).[79] FIG. 5-6, an example of matching adjacent intersecting projected images described in steps (107) to (111) above is shown.
[80] На Фиг. 5 показана пара пересекающихся спроецированных изображений 501 и 502. Сопоставление указанных изображений начинается с выбора шага сдвига (S0). На первой итерации алгоритма сдвига, в средстве создания панорамного изображения случайным образом выбирается начальный шаг сдвига (S0). После выбора начального шага сдвига, алгоритм сдвига переходит на этап (107) (не показан), для осуществления сглаживания проекций изображений 501 и 502, а также их изображений границ. Как упоминалось выше, сглаживание выполняется с радиусом, равным шагу сдвига на текущей итерации. То есть для первой итерации алгоритма сдвига сглаживание выполняется с радиусом, равным начальному шагу сдвига (So), например с радиусом, равным 50 пикселей.[80] FIG. 5 shows a pair of intersecting projected
[81] Далее алгоритм переходит к этапу (108), где для изображений 501 и 502 формируется набор точек сдвига и вычисляется функция сдвига на основе формулы (2). Для формирования набора точек сдвига используется текущий шаг сдвига. На Фиг. 5, начальное положение, в котором изображения 501 и 502 спроецированы на плоскость, отображено как позиция 510. Указанная позиция представляет конкретный пример проецирования пары соседних изображений на плоскость. Как видно на Фиг. 5, из-за погрешности гироскопа мобильного устройства, с которого выполнялась съемка, проекции изображений 501 и 502 смещены друг относительно друга. Позиция 510 является первой точкой, в которой происходит вычисление функции сдвига. Для формирования остальных позиций для набора точек сдвига, первое изображение 501 смещают на текущий шаг сдвига. На первой итерации алгоритма сдвига первое изображение 501 смещают на начальный шаг сдвига (S0) в следующие положения:[81] Next, the flow proceeds to step (108), where a set of offset points is generated for
a) сдвиг по горизонтальной оси изображения 501 на S0 во встречном по отношению к изображению 502 направлении (позиция 511);a) a shift along the horizontal axis of the
b) сдвиг по горизонтальной оси изображения 501 на S0 в противоположном по отношению к изображению 502 направлении (позиция 512);b) a shift along the horizontal axis of the
c) сдвиг по вертикальной оси изображения 501 на S0 в верхнее положение по отношению к изображению 502 (позиция 513);c) shift along the vertical axis of the
d) сдвиг по вертикальной оси изображения 501 на S0 в нижнее положение по отношению к изображению 502 (позиция 514).d) shift along the vertical axis of the
[82] Таким образом, на основе шага сдвига формируется набор точек сдвига (позиции 510-514), где требуется вычислить функцию сдвига. Продолжая этап (108) происходит вычисление функции сдвига для каждой позиции 510-514 по формуле (2). Стоит отметить, что вычисление функции сдвига может происходить в момент формирования каждой позиции сдвига, то есть одновременно с формированием набора точек сдвига.[82] Thus, based on the shift step, a set of shift points (positions 510-514) are generated where the shift function is to be calculated. Continuing with step (108), a shift function is calculated for each position 510-514 using formula (2). It should be noted that the calculation of the shift function can occur at the time of the formation of each shift position, that is, simultaneously with the formation of a set of shift points.
[83] Далее алгоритм сдвига переходит к этапу (109). На этапе (109) происходит сравнение вычисленных значений функций сдвига в позициях 510-514 между собой и сдвиг изображения 501 в позицию, где значение функции минимально. Поскольку, как упоминалось выше функция сдвига характеризует разницу между изображениями, то при смещении в позицию, где значение функции сдвига минимально, изображения 501-502 будут располагаться наиболее ровно друг к другу относительно других позиций. Так, сравнивая функции сдвига в позициях 510-514 минимальное значение функции будет в позиции 511. Следовательно, изображение 501 сдвигают в позицию 511.[83] Next, the shift algorithm proceeds to step (109). At step (109), the calculated values of the shift functions in the positions 510-514 are compared with each other and the
[84] На этапе (110) значение функции сдвига в позиции 511 сравнивается с пороговым значением функции сдвига. В частном варианте осуществления, пороговое значение функции сдвига будет меньше 2 пикселей, что означает, что изображение 501 полностью совпадает с изображением 502. Если функция сдвига больше порогового значения, то способ (100) переходит к этапу (111). Если функция сдвига меньше или равна пороговому значению, то способ (100) переходит к этапу (112).[84] In step (110), the value of the shift function at
[85] Как видно на Фиг. 5, позиция 511 не обеспечивает точное совпадение изображений 501 и 502, что интерпретируется как превышение значения функции сдвига в этой точке порогового значения. Следовательно, алгоритм сдвига переходит к этапу (111)[85] As seen in FIG. 5, the
[86] На этапе (111) текущий шаг сдвига S0 уменьшается в два раза. Таким образом, мы получаем новый шаг сдвига S1, равный S0/2. После получения нового шага сдвига S1 первая итерация алгоритма сдвига завершается и происходит повторение этапов (107) -(111) до тех пор, пока функция сдвига на этапе (110) не станет меньше или равной пороговому значению функции сдвига. При этом, после завершения первой итерации, изображения 501 и 502 остаются в точке сдвига с минимальным значением функции сдвига. Таким образом, на основе n-ого количества итераций достигается точное сопоставление изображений, т.к. точность сдвига повышается в два раза по сравнению с предыдущей итерацией.[86] In step (111), the current shift pitch S 0 is halved. Thus, we get a new shift step S 1 , equal to S 0/2 . After receiving a new shift step S 1, the first iteration of the shift algorithm ends and steps (107) - (111) are repeated until the shift function in step (110) is less than or equal to the threshold value of the shift function. In this case, after the completion of the first iteration, the
[87] Фиг. 6 показывает вторую итерацию алгоритма сдвига с шагом сдвига S1. Также, как и на первой итерации алгоритма сдвига, вторая итерация начинается с этапа (107). Во второй итерации изображения 501 и 502 находятся в положении, в которое произошло их смещение на предыдущей итерации, то есть в положении 511. На этапе (107) выполняется сглаживание изображений границ и спроецированных изображений 501 и 502, однако в данной итерации радиус размытия ровняется S1. Это позволяет предотвратить попадание в локальный минимум, когда на изображениях есть повторяющиеся объекты (черно-белые полосы), и при некотором наборе перебираемых параметров эти объекты (черно-белые полосы) могут хорошо совпасть, что обеспечит маленькое значение функции сдвига, однако реальная величина сдвига, может сильно отличаться.[87] FIG. 6 shows a second iteration of the shift algorithm with a shift step S 1 . As in the first iteration of the shift algorithm, the second iteration starts from step (107). In the second iteration, the
[88] После выполнения сглаживания на этапе (107), на этапе (108) формируется набор точек сдвига и вычисляется функция сдвига в указанных точках. Формирование набора точек сдвига происходит также, как и в первой итерации, за исключением того, что шаг сдвига уже ровняется S1 и текущее положение изображений 501 и 502 является положение 511, то есть точка сдвига с минимальным значением функции сдвига, вычисленным на первой итерации, в которую произошел сдвиг. Таким образом, по аналогии с первой итерацией, на этапе (108) вычисляются значения функции сдвига для набора точек сдвига, полученных на основе шага сдвига S1, причем позиция 610 является позицией 511 из предыдущей итерации. Функция сдвига вычисляется для позиций 610-614.[88] After performing smoothing in step (107), in step (108), a set of offset points is generated and the offset function is calculated at these points. The formation of a set of shift points occurs in the same way as in the first iteration, except that the shift step is already equalized to S 1 and the current position of
[89] На этапе (109) происходит сравнение вычисленных значений функций сдвига в позициях 610-614 между собой и сдвиг изображения 501 в позицию, где значение функции минимально. Как видно на Фиг. 6, значение функции сдвига принимает минимальное значение в позиции 614.[89] In step (109), the calculated values of the shift functions at positions 610-614 are compared with each other and the
[90] На этапе (110) значение функции сдвига в позиции 614 сравнивается с пороговым значением функции сдвига. В примере, показанном на Фиг. 5-6, значение функции сдвига в позиции 614 меньше или равно пороговому значению, что визуально отображено на Фиг. 6, где изображения 501 и 502 в позиции 614 точно совпадают друг с другом. Однако, для специалиста в данной области техники, очевидно, что для достижения порогового значения в некоторых парах пересекающихся спроецированных изображений может потребоваться и большее количество итераций, например, три, четыре и т.д. Причем в каждой новой итерации шаг сдвига si+1 будет в равен si/2.[90] In step (110), the value of the shift function at
[91] После достижения функцией сдвига порогового значения способ (100) переходит к этапу (112) и алгоритм сдвига завершается.[91] After the shift function reaches the threshold, the method (100) proceeds to step (112) and the shift algorithm ends.
[92] Хотя и этапы, раскрытые на фиг. 5-6 описывают создание обычного панорамного изображения, указанные этапы также можно применять для создания 360° панорамного изображения. При создании такой панорамы добавляется, по меньшей мере, второй ряд последовательных снимков, что создает пересечение спроецированных изображений как в горизонтальном ряду, так и в вертикальном и, следовательно, увеличивает количество соседних спроецированных пересекающихся изображений. Однако, указанное расположение спроецированных снимков на плоскости не меняет последовательность этапов и принцип создания панорамного изображения, что позволяет применять указанные выше этапы и для создания 360° панорамного изображения. То есть функция сдвига для 360° панорам будет вычисляться как для пары пересекающихся спроецированных изображений, расположенных в одном горизонтальном ряду, так и для пары спроецированных пересекающихся изображений, находящихся в вертикальном ряду. [93] На этапе (112) происходит вычисление вектора сдвига для каждой пары пересекающихся изображений. Вектор сдвига показывает итоговый сдвиг, который необходимо совершить, чтобы наложить проекцию первого изображения на проекцию второго изображения. Вектор сдвига вычисляется для каждой пары пересекающихся спроецированных изображений, как суммарный сдвиг, который потребовался в паре изображений для их точного сопоставления. Так, например, при достижении совмещения изображений за 2 итерации, как показано на Фиг. 5-6, вектор сдвига для этой пары изображений будет равен S0+S1.[92] Although the steps disclosed in FIG. 5-6 describe how to create a conventional panoramic image, these steps can also be applied to create a 360 ° panoramic image. When creating such a panorama, at least a second row of sequential shots is added, which creates an intersection of the projected images both in the horizontal row and in the vertical one and, therefore, increases the number of adjacent projected intersecting images. However, the indicated arrangement of the projected images on the plane does not change the sequence of steps and the principle of creating a panoramic image, which allows the above steps to be applied to create a 360 ° panoramic image. That is, the shift function for 360 ° panoramas will be calculated both for a pair of intersecting projected images located in the same horizontal row, and for a pair of projected intersecting images located in a vertical row. [93] In step (112), a shift vector is calculated for each pair of intersecting images. The displacement vector shows the final displacement that needs to be done to superimpose the projection of the first image onto the projection of the second image. The displacement vector is calculated for each pair of intersecting projected images, as the total displacement that was required in the pair of images to match them exactly. So, for example, when the image alignment is achieved in 2 iterations, as shown in FIG. 5-6, the shift vector for this pair of images will be S 0 + S 1 .
[94] Таким образом, поскольку одна проекция пересекается с несколькими соседними проекциями, то для каждой проекции существует несколько векторов сдвига для каждого пересечения с соседней проекцией.[94] Thus, since one projection intersects with several neighboring projections, then for each projection there are several translation vectors for each intersection with the neighboring projection.
[95] Для вычисления результирующего сдвига для каждой проекции, на этапе (113) используется процедура Bundle Adjustment с методом оптимизации нулевого порядка [2]. Результирующий вектор сдвига позволяет учесть положение проекции относительно соседних пересекающихся проекций и рассчитать требуемое расстояние сдвига для всех проекций изображений. На основе вычисленного результирующего вектора сдвига выполняется сдвиг каждой проекции (114).[95] To calculate the resulting shift for each projection, at step (113), the Bundle Adjustment procedure is used with the zero-order optimization method [2]. The resulting displacement vector allows you to take into account the position of the projection relative to adjacent intersecting projections and calculate the required displacement distance for all image projections. Based on the calculated resulting shear vector, each projection is shifted (114).
[96] На этапе (114) выполняется сдвиг каждой проекции на вычисленный результирующий вектор сдвига. После совершения сдвига всех проекций, мы получаем набор последовательных спроецированных изображений, совмещенных на одном уровне, что обеспечивает их дальнейшую корректную сшивку в панорамное изображение.[96] In step (114), each projection is shifted by the computed resulting shift vector. After performing the shift of all projections, we get a set of sequential projected images, combined at the same level, which ensures their further correct stitching into a panoramic image.
[97] На этапе (115) происходит объединение всех проекций в итоговое панорамное изображение (сшивка изображений). Сшивка изображений обеспечивает соединение соседних проекций изображений по определенной линии (шву) создавая единое панорамное изображение. Для этого вычисляются швы, по которым будет происходить состыковка соседних изображений. Швы могут быть вычислены методом динамического программирования [3].[97] At step (115), all projections are combined into the final panoramic image (image stitching). Image stitching provides connection of adjacent projections of images along a certain line (seam), creating a single panoramic image. For this, the seams are calculated, along which the joining of adjacent images will take place. Seams can be calculated using dynamic programming [3].
[98] Таким образом, раскрытое техническое решение, позволяет получить панорамное изображение, в том числе и 360° панорамное изображение, высокого качества из серии последовательных снимков даже в условиях съемки близко расположенных сцен и сцен, содержащих однородные и повторяющиеся объекты.[98] Thus, the disclosed technical solution makes it possible to obtain a panoramic image, including a 360 ° panoramic image, of high quality from a series of sequential shots, even when shooting closely spaced scenes and scenes containing homogeneous and repeating objects.
[99] На Фиг. 7 представлен пример общего вида устройства (700), которое обеспечивает реализацию представленного решения. На базе устройства (700) может реализовываться различный спектр вычислительных устройств, например, средство создания панорамного изображения, устройство пользователя, компьютерная система создания панорамного изображения, сервер и т.д.[99] FIG. 7 shows an example of a general view of a device (700) that provides an implementation of the presented solution. On the basis of the device (700), a different range of computing devices can be implemented, for example, a means for creating a panoramic image, a user device, a computer system for creating a panoramic image, a server, etc.
[100] В общем виде устройство (700) содержит объединенные общей шиной информационного обмена один или несколько процессоров (701), средства памяти, такие как ОЗУ (702) и ПЗУ (703), интерфейсы ввода/вывода (704), устройства ввода/вывода (705), и устройство для сетевого взаимодействия (706).[100] In general, the device (700) contains one or more processors (701), united by a common data exchange bus, memory means such as RAM (702) and ROM (703), input / output interfaces (704), input / output (705), and a device for networking (706).
[101] Процессор (701) (или несколько процессоров, многоядерный процессор и т.п.) может выбираться из ассортимента устройств, широко применяемых в настоящее время, например, таких производителей, как: Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon™ и т.п. Под процессором или одним из используемых процессоров в устройстве (700) также необходимо учитывать графический процессор, например, GPU NVIDIA или Graphcore, тип которых также является пригодным для полного или частичного выполнения способа (100), а также может применяться для обучения и применения моделей машинного обучения в различных информационных системах.[101] The processor (701) (or multiple processors, multi-core processor, etc.) can be selected from a range of devices currently widely used, for example, manufacturers such as: Intel ™, AMD ™, Apple ™, Samsung Exynos ™, MediaTEK ™, Qualcomm Snapdragon ™, etc. Under the processor or one of the processors used in the device (700), it is also necessary to take into account the graphics processor, for example, NVIDIA GPU or Graphcore, the type of which is also suitable for full or partial execution of the method (100), and can also be used for training and applying machine models. training in various information systems.
[102] ОЗУ (702) представляет собой оперативную память и предназначено для хранения исполняемых процессором (701) машиночитаемых инструкций для выполнения необходимых операций по логической обработке данных. ОЗУ (702), как правило, содержит исполняемые инструкции операционной системы и соответствующих программных компонент (приложения, программные модули и т.п.). При этом, в качестве ОЗУ (702) может выступать доступный объем памяти графической карты или графического процессора.[102] RAM (702) is a random access memory and is intended for storing machine-readable instructions executed by the processor (701) for performing necessary operations for logical processing of data. RAM (702) typically contains executable instructions of an operating system and associated software components (applications, software modules, etc.). In this case, the available memory of the graphics card or graphics processor can act as RAM (702).
[103] ПЗУ (703) представляет собой одно или более средств для постоянного хранения данных, например, жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др.[103] ROM (703) is one or more means for permanent storage of data, for example, hard disk drive (HDD), solid state data storage device (SSD), flash memory (EEPROM, NAND, etc.), optical storage media (CD-R / RW, DVD-R / RW, BlueRay Disc, MD), etc.
[104] Для организации работы компонентов устройства (700) и организации работы внешних подключаемых устройств применяются различные виды интерфейсов В/В (704). Выбор соответствующих интерфейсов зависит от конкретного исполнения вычислительного устройства, которые могут представлять собой, не ограничиваясь: PCI, AGP, PS/2, IrDa, Fire Wire, LPT, COM, SAT A, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS/Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232 и т.п.[104] Various types of I / O interfaces (704) are used to organize the operation of device components (700) and to organize the operation of external connected devices. The choice of the appropriate interfaces depends on the specific version of the computing device, which can be, but are not limited to: PCI, AGP, PS / 2, IrDa, Fire Wire, LPT, COM, SAT A, IDE, Lightning, USB (2.0, 3.0, 3.1, micro, mini, type C), TRS / Audio jack (2.5, 3.5, 6.35), HDMI, DVI, VGA, Display Port, RJ45, RS232, etc.
[105] Для обеспечения взаимодействия пользователя с средством создания панорамного изображения применяются различные средства (705) В/В информации, например, клавиатура, дисплей (монитор), сенсорный дисплей, тач-пад, джойстик, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса) и т.п.[105] To ensure the interaction of the user with the means of creating a panoramic image, various means (705) of I / O information are used, for example, a keyboard, a display (monitor), a touch display, a touch-pad, a joystick, a mouse, a light pen, a stylus, a touch panel, trackball, speakers, microphone, augmented reality, optical sensors, tablet, light indicators, projector, camera, biometric identification (retina scanner, fingerprint scanner, voice recognition module), etc.
[106] Средство сетевого взаимодействия (706) обеспечивает передачу данных посредством внутренней или внешней вычислительной сети, например, Интранет, Интернет, ЛВС и т.п. В качестве одного или более средств (706) может использоваться, но не ограничиваться: Ethernet карта, GSM модем, GPRS модем, LTE модем, 5G модем, модуль спутниковой связи, NFC модуль, Bluetooth и/или BLE модуль, Wi-Fi модуль и др.[106] The networking tool (706) provides data transmission via an internal or external computer network, for example, Intranet, Internet, LAN, and the like. One or more means (706) may be used, but not limited to: Ethernet card, GSM modem, GPRS modem, LTE modem, 5G modem, satellite communication module, NFC module, Bluetooth and / or BLE module, Wi-Fi module and dr.
[107] Дополнительно могут применяться также средства спутниковой навигации в составе устройства (700), например, GPS, ГЛОНАСС, BeiDou, Galileo.[107] Additionally, satellite navigation aids can be used as part of the device (700), for example, GPS, GLONASS, BeiDou, Galileo.
[108] Конкретный выбор элементов устройств (700) для реализации различных программно-аппаратных архитектурных решений может варьироваться с сохранением обеспечиваемого требуемого функционала от того или иного типа устройства.[108] The specific choice of device elements (700) for the implementation of various software and hardware architectural solutions can vary while maintaining the required functionality provided from a particular type of device.
[109] Средство создания панорамного изображения может быть также реализовано на программно-аппартной части персонального устройства пользователя, которое может являться устройством (700) в виде набора аппаратных или логических модулей, способных выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций), или машиночитаемого носителя, содержащего инструкции, например, программные, для выполнения вышеупомянутого способа 100. Под средством создания панорамного изображения может пониматься электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).[109] The means for creating a panoramic image can also be implemented on the software and hardware part of the user's personal device, which can be a device (700) in the form of a set of hardware or logical modules capable of performing a given, well-defined sequence of computing operations (actions, instructions), or a computer-readable medium containing instructions, such as software, for performing the aforementioned method 100. A panoramic image creation means can be understood as an electronic unit or an integrated circuit (microprocessor) executing machine instructions (programs).
[110] Представленные материалы заявки раскрывают предпочтительные примеры реализации технического решения и не должны трактоваться как ограничивающие иные, частные примеры его воплощения, не выходящие за пределы испрашиваемой правовой охраны, которые являются очевидными для специалистов соответствующей области техники.[110] The presented application materials disclose preferred examples of the implementation of the technical solution and should not be interpreted as limiting other, particular examples of its implementation, which do not go beyond the scope of the claimed legal protection, which are obvious to specialists in the relevant field of technology.
Источники инофрмацииSources of information
1) Живрин Э.Я., Алкзир Н.Б., «Методы определения объектов на изображении», Молодой ученый №7 (193), с. 8-19. https://moluch.ru/archive/193/48447.1) Zhivrin E.Ya., Alkzir NB, "Methods for determining objects in the image", Young Scientist No. 7 (193), p. 8-19. https://moluch.ru/archive/193/48447.
2) В. Triggs; P. McLauchlan and R. Hartley and A. Fitzgibbon (1999). Bundle Adjustment - A Modern Synthesis. ICCV '99: Proceedings of the International Workshop on Vision Algorithms. Springer-Verlag. pp. 298-37.2) B. Triggs; P. McLauchlan and R. Hartley and A. Fitzgibbon (1999). Bundle Adjustment - A Modern Synthesis. ICCV '99: Proceedings of the International Workshop on Vision Algorithms. Springer-Verlag. pp. 298-37.
3) Xiong, Yingen & Pulli, Kari. (2010). Fast image stitching and editing for panorama painting on mobile phones.3) Xiong, Yingen & Pulli, Kari. (2010). Fast image stitching and editing for panorama painting on mobile phones.
Claims (26)
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020134608A RU2759965C1 (en) | 2020-10-21 | 2020-10-21 | Method and apparatus for creating a panoramic image |
PCT/RU2020/000708 WO2022086360A1 (en) | 2020-10-21 | 2020-12-16 | Method and device for creating a panoramic image |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
RU2020134608A RU2759965C1 (en) | 2020-10-21 | 2020-10-21 | Method and apparatus for creating a panoramic image |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2759965C1 true RU2759965C1 (en) | 2021-11-19 |
Family
ID=78607502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2020134608A RU2759965C1 (en) | 2020-10-21 | 2020-10-21 | Method and apparatus for creating a panoramic image |
Country Status (2)
Country | Link |
---|---|
RU (1) | RU2759965C1 (en) |
WO (1) | WO2022086360A1 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2794441C1 (en) * | 2022-05-27 | 2023-04-18 | Самсунг Электроникс Ко., Лтд. | Method and system for refining the camera position taking into account the room plan |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116246085B (en) * | 2023-03-07 | 2024-01-30 | 北京甲板智慧科技有限公司 | Azimuth generating method and device for AR telescope |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004312549A (en) * | 2003-04-09 | 2004-11-04 | Sharp Corp | Panoramic image photographing apparatus and panoramic image photographing method |
US20050286794A1 (en) * | 2004-06-24 | 2005-12-29 | Apple Computer, Inc. | Gaussian blur approximation suitable for GPU |
US20110141300A1 (en) * | 2009-12-11 | 2011-06-16 | Fotonation Ireland Limited | Panorama Imaging Using a Blending Map |
RU2718429C1 (en) * | 2019-12-13 | 2020-04-02 | федеральное государственное бюджетное образовательное учреждение высшего образования "Донской государственный технический университет" (ДГТУ) | Device for detecting local-stationary areas on an image |
-
2020
- 2020-10-21 RU RU2020134608A patent/RU2759965C1/en active
- 2020-12-16 WO PCT/RU2020/000708 patent/WO2022086360A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004312549A (en) * | 2003-04-09 | 2004-11-04 | Sharp Corp | Panoramic image photographing apparatus and panoramic image photographing method |
US20050286794A1 (en) * | 2004-06-24 | 2005-12-29 | Apple Computer, Inc. | Gaussian blur approximation suitable for GPU |
US20110141300A1 (en) * | 2009-12-11 | 2011-06-16 | Fotonation Ireland Limited | Panorama Imaging Using a Blending Map |
RU2718429C1 (en) * | 2019-12-13 | 2020-04-02 | федеральное государственное бюджетное образовательное учреждение высшего образования "Донской государственный технический университет" (ДГТУ) | Device for detecting local-stationary areas on an image |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2794441C1 (en) * | 2022-05-27 | 2023-04-18 | Самсунг Электроникс Ко., Лтд. | Method and system for refining the camera position taking into account the room plan |
Also Published As
Publication number | Publication date |
---|---|
WO2022086360A1 (en) | 2022-04-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11616919B2 (en) | Three-dimensional stabilized 360-degree composite image capture | |
US12272020B2 (en) | Method and system for image generation | |
US10122997B1 (en) | Automated matrix photo framing using range camera input | |
US8818131B2 (en) | Methods and apparatus for facial feature replacement | |
US10916033B2 (en) | System and method for determining a camera pose | |
US20160295108A1 (en) | System and method for panoramic imaging | |
US9516214B2 (en) | Information processing device and information processing method | |
JP5580164B2 (en) | Optical information processing apparatus, optical information processing method, optical information processing system, and optical information processing program | |
US10643376B2 (en) | Computer system and method for improved gloss representation in digital images | |
US10051180B1 (en) | Method and system for removing an obstructing object in a panoramic image | |
CN109087244A (en) | A kind of Panorama Mosaic method, intelligent terminal and storage medium | |
JP6500355B2 (en) | Display device, display program, and display method | |
US20130129191A1 (en) | Methods and Apparatus for Image Rectification for Stereo Display | |
US9047692B1 (en) | Scene scan | |
US11769308B2 (en) | Systems and methods of augmented reality guided image capture | |
WO2017032336A1 (en) | System and method for capturing and displaying images | |
EP4266239A1 (en) | Image splicing method, computer-readable storage medium, and computer device | |
CN113920196B (en) | Visual positioning method, device and computer equipment | |
Schöps et al. | Real-time view correction for mobile devices | |
RU2759965C1 (en) | Method and apparatus for creating a panoramic image | |
US20150154736A1 (en) | Linking Together Scene Scans | |
EA040325B1 (en) | METHOD AND DEVICE FOR CREATING PANORAMIC IMAGE | |
KR20150026358A (en) | Method and Apparatus For Fitting A Template According to Information of the Subject | |
US20190260939A1 (en) | Enhanced automatic perspective and horizon correction | |
CN114882162B (en) | Texture image mapping method, device, electronic device and readable storage medium |