СПОСОБ И УСТРОЙСТВО СОЗДАНИЯ ПАНОРАМНОГО ИЗОБРАЖЕНИЯ
METHOD AND APPARATUS FOR CREATING A PANORAMIC IMAGE

ОБЛАСТЬ ТЕХНИКИ
[1] Настоящее техническое решение, в общем, относится к цифровой обработке изображений, а более конкретно к созданию панорамных изображений из серии изображений, полученных с помощью мобильного устройства.
УРОВЕНЬ ТЕХНИКИ
[2] В настоящее время использование панорамных изображений получило широкое распространение в различных сферах жизнедеятельности. Панорамные изображения используют и в качестве бизнес инструментов, и для художественного представления помещений, городских улиц, ландшафтов и пр. Панорамные изображения позволяют получать такие изображения, угол обзора которых может достигать 360 градусов, что создает эффект присутствия и дает возможность запечатлеть все детали вокруг точки съемки.
[3] Создание панорамных изображений происходит путем сшивки серии последовательных фотоснимков (image stitching), снятых из одной точки в единое изображение, как правило, большого разрешения. При этом большое внимание уделяется устранению артефактов, таких как дублирование, затирание, исчезновение объектов, параллакс, шумы и т.д., поскольку их появление ухудшает качество итогового панорамного изображения и приводит к некорректной сшивки изображений. Особенно заметными артефакты становятся при съемке сцены, находящейся достаточно близко и имеющей однородные объекты (стены комнаты) и повторяющиеся объекты (обои с черно-белыми полосами). Кроме того, дополнительной проблемой при создании панорамного изображения с использованием мобильных телефонов, планшетов и т.д., является погрешность гироскопов и смещение камеры мобильного устройства пользователем при съемке сцены, что также вызывает большое количество артефактов и создает дополнительные проблемы.
[4] Из уровня техники известен способ создания панорамного изображения, описанный в заявке США № US 2018/197321 A1 (PETTERSSON GUSTAF), опубл. 12.07.2018. Указанный способ обеспечивает сшивку серии последовательных фотоснимков в панорамное изображение на мобильном телефоне, путем нахождения множества точек на стыках, пересекающихся между собой, изображений, вычисления векторов сдвига для указанных точек, причем вектора сдвига вычисляются на основе карты подобия, выравнивания изображений на основе вычисленных векторов сдвига и нахождения швов для сшивки выровненных изображений. Указанный способ позволяет решать проблемы параллакса и уменьшает возникновение артефактов при создании панорамы сцены, находящейся на достаточно большом расстоянии от точки съемки.
[5] Однако указанный способ не применим в условиях съемки помещений с однородными объектами, например, комната с однотонными стенами, и при нахождении точки съемки достаточно близко к снимаемым объектам, т.к. в них практически отсутствуют общие точки, а также присутствует сильные шумы, что приводит к появлению артефактов и сильному разбросу векторов сдвига соседних точек. Кроме того, при использовании указанного способа на объектах с повторяющимся рисунком, например черно-белыми обоями, высока вероятность попадания в локальный минимум, когда перебираемые параметры (черно-белые полосы на обоях) могут хорошо совпасть, и функция ошибки будет низкая, при этом реальный сдвиг, который нужно сделать, может сильно отличаться.
[6] Из уровня техники также известен способ создания панорамного изображения, описанный в заявке США № US 2016/295108 A1 (CAO CHENG), опубл. 06.10.2016. Указанный способ использует специальную конструкцию, позволяющую закрепить множество камер таким образом, чтобы углы обзора соседних камер образовывали перекрывающиеся области. Для создания панорамного изображения в перекрывающихся изображениях находят координаты точек и проецируют на плоскость указанные изображения с известными координатами точек. После этого происходит выравнивание соседних проекций перекрывающихся изображений по точкам с помощью нахождения минимального значения метрики попиксельной разности для двух соседних проекций изображений. Выровненные изображения сшиваются в единое панорамное изображения.
[7] Недостатком указанного решения является высокая сложность конструкции и невозможность использования алгоритмов выравнивания изображений, которые получили с отличных, от указанной конструкции крепления камер, источников съемки, например, с мобильных телефонов. Кроме того, выравнивание происходит методом простого перебора, что увеличивает сложность и объем вычислений. Также, использование указанного алгоритма не обеспечивает предотвращение попадания в локальный минимум при съемке однородных объектов (обои с повторяющимся рисунком), находящихся достаточно близко к точке съемки.
[8] Общим недостатком существующих подходов является отсутствие способа создания панорамного изображения с помощью мобильных устройств, обеспечивающего высокое качество итогового панорамного изображения и предотвращающего появление артефактов, даже в условиях съемки однородных и повторяющихся объектов (комната с обоями с рисунком, однотонные стены). Также, такого рода решение должно обеспечивать стабильность работы в любых условиях съемки, не зависимо от расстояния до сцены.
РАСКРЫТИЕ ИЗОБРЕТЕНИЕ
[9] Данное техническое решение направлено на устранение недостатков, присущих существующим решениям, известным из уровня техники.
[10] Настоящее изобретение направлено на решение технической проблемы или технической задачи, заключающейся в создании панорамного изображения высокого качества из серии последовательных изображений, полученных с камеры мобильного устройства.
[11] Техническим результатом, достигающимся при решении вышеуказанной технической задачи, является повышение качества созданного панорамного изображения, полученного из серии последовательных изображений.
[12] Дополнительным техническим результатом, достигающимся при решении вышеуказанной задачи, является предотвращение возникновения артефактов при создании панорамного изображения, полученного из серии последовательных изображений.
[13] Указанные технические результаты достигаются благодаря осуществлению компьютерно-реализуемого способа создания панорамного изображения из серии последовательных изображений, выполняющегося процессором и содержащего этапы на которых:
a) получают последовательный набор изображений, полученных с помощью камеры мобильного устройства, причем каждое из изображений содержит по меньшей мере информацию об угле обзора камеры мобильного устройства и информацию об ориентации мобильного устройства во время съемки;
b) определяют скорректированный угол обзора камеры на основе предполагаемого радиуса вращения телефона, предполагаемого среднего расстояния до объектов на изображении и информации об угле обзора камеры мобильного телефона;
c) проецируют полученный на этапе а) набор изображений на равнопромежуточное представление панорамы, используя определенный скорректированный угол обзора камеры и информацию об ориентации мобильного устройства во время съемки;
d) получают, для каждого изображения из по меньшей мере двух спроецированных пересекающихся изображений, изображение границ;
e) выполняют сглаживание, с радиусом, равным заданному шагу сдвига, для каждого из по меньшей мере двух спроецированных пересекающихся изображений и изображений границ;
f) вычисляют функцию сдвига, смещая на заданный шаг сдвига, по меньшей мере, первое изображение из по меньшей мере двух спроецированных пересекающихся изображений в точки сдвига из набора точек сдвига;
g) сдвигают, по меньшей мере, первое изображение из по меньшей мере двух спроецированных пересекающихся изображений в точку сдвига, где значение функции сдвига минимально;
h) сравнивают значение функции сдвига в сдвинутом положении с пороговым значением;
i) уменьшают шаг сдвига в два раза при превышении значения функции сдвига в сдвинутом положении порогового значения;
j) повторяют этапы f) - i) до тех пор, пока значение функции сдвига в точке сдвига не достигнет порогового значения;
k) выполняют сшивку по меньшей мере двух спроецированных изображений.
[14] В одном из частных примеров осуществления способа предполагаемый радиус вращения телефона и предполагаемое среднее расстояние до объектов на изображении задается вручную пользователем
[15] В другом частном примере осуществления способа предполагаемый радиус вращения телефона и предполагаемое среднее расстояние до объектов на изображении задается автоматически, на основе выбранного режима съемки.
[16] В другом частном примере осуществления способа изображение границ получают при помощи детектора границ Канни.
[17] В другом частном примере осуществления способа набор точек сдвига представляет собой по меньшей мере следующие точки: текущее положение изображений; сдвиг по горизонтальной оси первого изображения на текущий шаг сдвига во встречном по отношению ко второму изображению направлении; сдвиг по горизонтальной оси первого изображения на текущий шаг сдвига в противоположном по отношению ко второму изображению направлении; сдвиг по вертикальной оси первого изображения на текущий шаг сдвига во встречном по отношению ко второму изображению направлении; сдвиг по вертикальной оси первого изображения на текущий шаг сдвига в противоположном по отношению ко второму изображению направлении.
[18] В другом частном примере осуществления способа сглаживание изображений выполняется на основе фильтра размытия по Гауссу.
[19] В другом частном примере осуществления способа сшивка по меньшей мере двух проекций изображений осуществляется методом динамического программирования.
[20] Кроме того, заявленный технический результат достигается за счет устройства создания панорамного изображения из серии последовательных изображений содержащего:
по меньшей мере один процессор;
по меньшей мере одну память, соединенную с процессором, которая содержит машиночитаемые инструкции, которые при их выполнении по меньшей мере одним процессором обеспечивают выполнение способа создания панорамного изображения из серии последовательных изображений.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[21] Признаки и преимущества настоящего технического решения станут очевидными из приводимого ниже подробного описания и прилагаемых чертежей, на которых:
[22] Фиг. 1 иллюстрирует блок-схему выполнения заявленного способа создания панорамного изображения из серии последовательных изображений, полученных с мобильного устройства.
[23] Фиг. 2 иллюстрирует изменение угла обзора камеры мобильного устройства.
[24] Фиг. 3 иллюстрирует проецирование изображений на плоскость.
[25] Фиг. 4 иллюстрирует пример нахождения карты границ изображения.
[26] Фиг. 5-6 иллюстрируют пример работы алгоритма сдвига для пары пересекающихся спроецированных изображений.
[27] Фиг. 7 - иллюстрирует общий вид вычислительного устройства.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[28] Ниже будут описаны термины и понятия, необходимые для реализации настоящего технического решения.
[29] В настоящем изобретении термины: изображение, снимок, фотография являются синонимами и отражают общий технический термин, означающий захват сцены с объектами с помощью камеры мобильного устройства пользователя.
[30] Панорамное изображение - изображение, сшитое из множества последовательных изображений.
[31] Параллакс - изменение видимого положения объекта относительно удаленного фона в зависимости от положения наблюдателя.
[32] Артефакт изображения - любая черта, не присутствующая в отображаемом объекте, но присутствующая на изображении.
[33] Сшивка изображений - совмещение отдельных изображений, имеющих перекрывающиеся области в единое изображение.
[34] Заявленное техническое решение предлагает новых подход в создании панорамных изображений, в том числе и 360° панорамных изображений, из серии последовательных снимков, полученных с помощью мобильного телефона или другого переносного устройства, например, планшета и т.д. Основной особенностью заявленного решения является возможность сшивки последовательных изображений в панорамное изображение высокого качества, даже в условиях съемки близко расположенной сцены, содержащей однородные и повторяющиеся объекты. Например, создание панорамного изображения 360° комнаты с однотонными стенами или комнаты с черно-белыми обоями.
[35] Кроме того, заявленное решение позволяет решать проблемы, связанные с возникновением артефактов (дублирование объектов, затирание объектов), вызванных смещением точки съемки относительно объектов сцены (например, вращение пользователя с мобильным устройством на вытянутых руках). Также, заявленное решение позволяет с высокой точностью сопоставить спроецированные изображения для последующей сшивки в панорамное изображение, тем самым устраняя проблемы, возникающие из-за погрешности гироскопа мобильного устройства.
[36] Данное техническое решение может быть реализовано в виде средства создания панорамных изображений или машиночитаемого носителя, содержащего инструкции для выполнения заявленного способа.
[37] В данном решении под средством создания панорамного изображения понимается, ЭВМ (электронно-вычислительная машина), ЧПУ (числовое программное управление), ПЛК (программируемый логический контроллер), компьютеризированные системы управления и любые другие устройства, способные выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций).
[38] Под устройством обработки команд подразумевается электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы)/
[39] Устройство обработки команд считывает и выполняет машинные инструкции (программы) с одного или более устройства хранения данных, например таких устройств, как оперативно запоминающие устройства (ОЗУ) и/или постоянные запоминающие устройства (ПЗУ). В качестве ПЗУ могут выступать, но, не ограничиваясь, жесткие диски (HDD), флеш-память, твердотельные накопители (SSD), оптические носители данных (CD, DVD, BD, MD и т.п.) и др.
[40] Программа - последовательность инструкций, предназначенных для исполнения устройством управления вычислительной машины или устройством обработки команд.
[41] На Фиг. 1 представлена блок схема способа (100) создания панорамного изображения из последовательных снимков, полученных с мобильного устройства пользователя, который раскрыт поэтапно более подробно далее.
[42] На этапе (101) средство создания панорамного изображения получает последовательный набор изображений для создания панорамного изображения. Для получения последовательного набора изображений пользователь совершает серию последовательных снимков сцены с объектами из одной точки съемки. Получение изображений может осуществляться непосредственно в реальном времени с помощью камеры мобильного устройства в средстве создания панорамного изображения. В другом частном варианте, пользователь может создавать панорамное изображение из сохраненных в памяти последовательных фотографий сцены.
[43] Средство создания панорамного изображения более подробно раскрывается на Фиг. 7 и может содержать графический интерфейс пользователя, предназначенный для создания панорамного изображения. Для получения панорамного изображения пользователь может поворачиваться вокруг своей оси с мобильным устройством в руках, и в это время будет происходить захват объектов сцены вокруг пользователя (фотографирование). Отображение процесса съемки сцены может происходить на графическом интерфейсе средства создания панорамного изображения. При вращении пользователя вокруг своей оси набор последовательных снимков может создаваться автоматически на основе угла обзора камеры. Созданный набор последовательных изображений сохраняется в памяти средства создания панорамных изображений с информацией с гироскопа об ориентации телефона в момент съемки и информацией об угле обзора камеры, а также номером каждой фотографии.
[44] Указанная информация хранится в виде метаданных фотографий в таких форматах как EXIF IPTC, ХМР и т.д., и создается автоматически в момент снимка. Последовательный набор фотографий с информацией может быть получен непосредственно с помощью встроенной камеры мобильного устройства и отправлен в средство создания панорамных изображений. В настоящем изобретении под мобильным устройством понимается любое персональное переносное устройство пользователя, например, мобильный телефон, планшет, переносная фото-видео камера и т.д.
[45] Как было отмечено ранее, существует проблема того, что пользователь делает фотографии не из одной точки, а двигая камеру по некоторой окружности вокруг себя. Из-за этого происходит эффект параллакса, когда взаимное расположение фона и объектов, находящихся достаточно близко к точке съемки, отличается на разных кадрах, что приводит к дублированию или затиранию объектов на итоговой панораме.
[46] Как видно на Фиг. 2, при совершении последовательных снимков пользователь вращает средство съемки вокруг своей оси по радиусу 201, который является радиусом вращения средства съемки вокруг точки съемки. Радиус 201, как правило, возникает из-за того, что пользователь держит телефон на некотором расстоянии от той точки, где он располагается, что приводит в момент поворота пользователя к созданию снимков из разных точек (смещение нодальной точки съемки при фотографировании). Поскольку, в некоторых ситуациях объекты сцены располагаются близко к точке съемки, то смещение точки съемки приводит к тому, что угол 202 - реальный угол обзора камеры мобильного устройства, не перекрывает некоторые области сцены. Также, указанные факторы влияют на дублирование или затирание части объектов сцены при проецировании набора изображений.
[47] Для решения указанной проблемы был предложен следующий подход, заключающийся в том, что если известно расстояние 203 от точки съемки до большинства объектов, то можно изменить угол 202 при проецировании фотографии так, чтобы достичь наиболее хорошей сшивки панорамы именно на этом расстоянии и минимизировать эффект параллакса.
[48] С учетом того, что указанный способ (100) предназначен для создания 360° панорам небольших помещений, где параллакс является значительной проблемой, то для его устранения и повышения качества итогового панорамного изображения, сшитого из последовательного набора изображений, вычисляется угол 204 - скорректированный угол обзора камеры (103).
[49] Для этого на этапе (102) пользователь мобильного устройства вручную задает предполагаемый радиус вращения мобильного устройства, а также предполагаемое расстояние до объектов сцены, которое может являться расстоянием 203. Указанная операция может выполняться в графическом интерфейсе средства создания панорамного изображения. В другом частном варианте, предполагаемый радиус вращения мобильного телефона и предполагаемое расстояние до объектов сцены могут быть заданы автоматически на основе выбранного режима создания панорамного изображения.
[50] Так, например, если пользователь желает создать панорамное изображение помещения, то при выборе режима «помещение» указанные параметры могут быть заданы автоматически. Для указанного режима «помещение» было установлено, что оптимальными параметрами является расстояние 3 метра как наиболее вероятное расстояние от пользователя до стен помещения, и 0.4 метра как расстояние от оси вращения до телефона в руке пользователя. Однако, специалисту в данной области техники, очевидно, что указанное решение не ограничивается только одним режимом съемки и может содержать несколько режимов съемки с подобранными оптимальными параметрами предполагаемого радиуса вращения мобильного телефона и предполагаемого расстояния до объектов сцены, в зависимости от расстояния до сцены и роста пользователя.
[51] Возвращаясь к этапу (103), для вычисления скорректированного угла обзора камеры 204, используется заданное предполагаемое расстояние до объектов сцены от точки съемки, предполагаемый радиус вращения мобильного телефона, реальный угол обзора камеры 201. Указанные вычисления могут производиться, например, в средстве создания панорамного изображения при помощи процессора. Для вычисления 204 используется следующая формула:
real
где α - реальный угол обзора камеры,
corr
α - скорректированный угол обзора камеры,
hand
R - предполагаемый радиус вращения камеры,
target
R - предполагаемое среднее расстояние до объектов на фотографии.
[52] Вычисленный угол 204 в дальнейшем используется для проецирования полученного набора последовательных снимков (104).
[53] На этапе (104) каждый снимок с извлеченными метаданными последовательно проецируется на плоскость (на полотно будущей панорамы). Для этого каждый снимок в соответствии с его номером последовательно проецируют на равнопромежуточное представление панорамы. Так, например, как показано на Фиг. 3, снимок 301 проецируют на равнопромежуточное представление панорамы, т.е. на плоскость 302. При этом расположение фотографий в момент их проецирования зависит от информации с гироскопа мобильного устройства и угла обзора камеры. Для проецирования фотографии на полотно в способе (100) используется информация об ориентации телефона во время съемки и скорректированный угол обзора камеры. Для проецирования фотографий в данном решении используется гномоническая проекция. Однако специалисту в данной области техники, очевидно, что может быть использоваться и другой тип проекции, например, стереографическая, цилиндрическая и т.д.
[54] Так как, в настоящий момент не существует таких гироскопов, которые бы обеспечивали точное сопоставление спроецированных изображений на полотне (отсутствие смещения изображений по вертикальной или горизонтальной оси друг относительно друга), то для обеспечения их дальнейшей сшивки в итоговую панораму, выполняется сдвиг указанных изображений. Для устранения смещения соседних проекций изображений в указанном решении применяется алгоритм сдвига изображений, который обеспечивает выравнивание спроецированных изображений между собой. Указанный алгоритм раскрывается более подробно ниже.
[55] Основной особенностью алгоритма сдвига изображений является сопоставление проекций пересекающихся изображений на основе функции сдвига, без использования особых точек (feature points) таких изображений. Такой подход обусловлен тем, что в сценах с однородными объектами и повторяющимися объектами присутствует очень малое количество особых точек или же такие точки вообще отсутствуют. Также, указанный подход предотвращает попадания проекций изображений при их сопоставлении в локальные минимумы, когда сопоставляемые параметры соседних спроецированных изображений могут точно совпасть, однако реальный сдвиг, который будет необходим для сопоставления изображений будет сильно отличаться.
[56] Для реализации алгоритма сдвига в способе (100) определяются все пересекающиеся спроецированные изображения (105).
[57] На этапе (105) происходит определение всех спроецированных изображений, чьи проекции пересекаются. Как правило, при создании панорамного изображения требуемого объекта, изображения проецируются либо в горизонтальной плоскости, либо в вертикальной плоскости, в зависимости от объекта и типа съемки (вертикальная панорама/горизонтальная панорама). Из этого следует, что при создании таких панорам изображения будут пересекаться со своими соседями в одной плоскости, т.е. по меньшей мере первое изображение из набора спроецированных изображений будет перекрывать часть по меньшей мере второго изображения из указанного набора изображений. В таком случае, определение пересекающихся проекций будет происходить попарно и будут определяться все пары пересекающихся спроецированных изображений. Определение пар изображений, чьи проекции пересекаются может происходить, например, по номерам снимков, которые были извлечены из метаданных на этапе (101) средством создания панорамного изображения.
[58] В другом частном варианте реализации, последовательные изображения проецируются на плоскость на этапе (104), размеченную сеткой (с заранее известными координатами), что обеспечивает известность расположения всех изображений на плоскости. Известность расположения всех последовательных изображений на плоскости позволяет заранее знать, какие именно спроецированные изображения пересекаются или должны пересекаться между собой. Такой вариант реализации делает необязательным этап определения спроецированных изображений (105). Кроме того, в еще одном варианте реализации, может происходить безусловное определение пересекающихся спроецированных изображений на основе только номера снимка в последовательности снимка.
[59] Стоит также отметить, что в еще одном частном варианте реализации, при создании 360° панорамного изображения, последовательные снимки на плоскости располагаются в, по меньшей мере, 2 ряда, то есть каждое спроецированное изображение пересекается с соседним изображением по горизонтали, и с изображением по вертикали (которое находится сверху/снизу по отношению к горизонтальному ряду). Определение спроецированных пересекающихся изображений при создании такой панорамы может происходить также, как и при создании обычной панорамы.
[60] На этапе (106) для всех спроецированных пар, чьи проекции пересекаются, получают границы изображений как показано на Фиг. 4. Для получения границ изображения используется детектор границ, например, детектор границ Канни [1]. С помощью детектора границ Канни выполняется поиск контуров - точек в цифровом изображении, в которых яркость изображения резко меняется. Эти точки обычно организованы в виде набора кривых линий и называются краями, границами или контурами. Определение краев помогает установить границы и форму объекта. Так, на Фиг. 4 из изображения 401, с помощью детектора границ Канни получают его изображение границ 402.
[61] Полученные изображения границ и спроецированные пересекающиеся изображения используются в алгоритме сдвига для сопоставления спроецированных изображений. Сопоставление изображений выполняется с помощью алгоритма сдвига для каждой пары спроецированных пересекающихся изображений. Указанный алгоритм может выполняться одновременно для всех пар пересекающихся спроецированных изображений. Сопоставление изображений выполняется итеративно, как будет раскрыто более подробно ниже.
0
0
[62] На первой итерации выбирается начальный шаг сдвига (S), определяющий расстояние смещения первого изображения относительно второго изображения в каждой паре пересекающихся спроецированных изображений. Величина начального шага сдвига S выбирается случайным образом и может быть равна, например, 50 пикселей. Начальный шаг сдвига может быть задан автоматически средством создания панорамного изображения.
[63] Далее, для устранения шумов на изображении и исключения попадания в локальные минимумы, выполняется сглаживание изображений (107).
[64] На этапе (107) к полученным изображениям границ, а также к проекциям пересекающихся изображений применяется сглаживание (размытие). Для этого к изображениям границ и проекциям пересекающихся изображений применяется матричный фильтр размытия, например, быстрое размытие по Гауссу. Специалисту в данной области техники, очевидно, что может применяться любой матричный фильтр, обеспечивающий размытие изображения.
i
0
[65] Кроме того, для исключения попадания в локальный минимум изображений при поиске вектора сдвига, в указанном способе (100) сглаживание выполняется с радиусом, равным текущему шагу сдвига (S) на i-той итерации. Так, например, на первой итерации, изображения границ и проекции изображений сглаживаются с начальным шагом сдвига (S).
[66] После сглаживания изображений границ и проекций пересекающихся изображений вычисляется функция сдвига в каждой точке из набора точек сдвига (108).
i
i
[67] На этапе (108) для получения набора точек сдвига используется текущий шаг сдвига S, определяющий расстояние смещения первого изображения относительно второго изображения в каждой паре пересекающихся спроецированных изображений. Набор точек сдвига формируется посредством смещения указанного первого изображения по вертикальной и горизонтальной оси от текущего местоположения на расстояние, численно равное текущему шагу сдвига S на i-той итерации. Таким образом, получается следующий набор точек сдвига:
• текущее положение изображений;
• сдвиг по горизонтальной оси первого изображения на шаг сдвига во встречном по отношению ко второму изображению направлении;
• сдвиг по горизонтальной оси первого изображения на шаг сдвига в противоположном по отношению ко второму изображению направлении;
• сдвиг по вертикальной оси первого изображения на шаг сдвига в верхнее положение по отношению ко второму изображению;
• сдвиг по вертикальной оси первого изображения на шаг сдвига в нижнее положение по отношению ко второму изображению.
[68] Продолжая этап (108), первое изображение из каждой пары пересекающихся спроецированных изображений сдвигают в каждую точку из набора точек сдвига и вычисляют функцию сдвига в этой точке по следующей формуле:
1 blurred
где P - размытая проекция первого изображения из пары пересекающихся спроецированных изображений,
2 blurred
Р - размытая проекция второго изображения из пары пересекающихся спроецированных изображений,
1 blurred
E - размытое изображение карты границ первого изображения,
2 blurred
Е - размытое изображение карты границ второго изображения,
λ - весовой коэффициент совпадения контуров на изображениях,
S - шаг сдвига.
[69] Вычисленная функция сдвига отображает разницу между изображениями. Расчет функции сдвига позволяет определить среднепиксельную разность между изображениями, учитывая при этом совпадение контуров указанных изображений. Минимальное значение функции сдвига означает положение, в которой указанные изображения совпадают наиболее точно.
[70] Таким образом, на этапе (108) для каждой пары пересекающихся спроецированных изображений вычисляется по меньшей мере пять значений функции сдвига и происходит сдвиг изображений в позицию, где значение функции минимально (109).
[71] На этапе (109) на основе вычисленных функций сдвига в наборе точек сдвига (по меньшей мере 5 позиций) выполняется сдвиг первого изображения в каждой паре пересекающихся изображений в точку сдвига, где значение функции сдвига минимально, т.е. где изображения точнее всего совпадают друг с другом.
[72] Далее указанное значение функции сдвига сравнивается с пороговым значением функции сдвига на этапе (110).
0
[73] Так как начальный шаг сдвига (S) выбирается случайным образом, то могут возникать ситуации, когда минимальное значение функции сдвига в точке сдвига не обеспечивает точное сопоставление изображений. Для определения точности сопоставления изображений было введено пороговое значение функции сдвига. Пороговое значение функции сдвига интерпретирует точность сопоставления соседних спроецированных изображений. При значении функции сдвига меньше указанного порогового значения соседние проекции изображений совпадают с такой точностью, что при их сшивке на итоговом панорамном изображении отсутствуют визуальные смещения снимков. Так, например, в качестве порогового значения может быт выбрано значение среднепиксельной разности между изображениями не более 2 пикселей.
[74] На основе результатов сравнения, полученных на этапе (110) сопоставление изображений либо завершается и способ (100) переходит к этапу (112), либо способ (100) переходит к этапу (111) и происходит следующая итерация.
[75] Так, при значении функции сдвига больше порогового значения функции сдвига способ (100) переходит к этапу (111).
[76] На этапе (111) текущий шаг сдвига уменьшается в два раза. Это позволяет повысить точность сдвига спроецированных пересекающихся изображений.
[77] После уменьшения текущего шага сдвига в два раза способ (100) возвращается к этапам (107)-(111) и происходит повторение указанных этапов до тех пор, пока функция сдвига не станет меньше порогового значения. Причем, этапы (107)-(111) выполняются в каждой новой итерации с новым шагом сдвига и начальное положение изображений на новой итерации является точкой сдвига, где значение функции сдвига было минимально, которую получили на предыдущей итерации. При этом стоит отметить, что если на какой-либо итерации при получении нового шага сдвига, путем уменьшения текущего шага сдвига в два раза, новый шаг сдвига будет больше предыдущего, то способ (100) возвращается к этапам (107)-(111) с другим шагом сдвига, выбранным случайным образом. Уменьшение шага сдвига в два раза обеспечивает бинпоиск требуемой позиции сдвига в два раза быстрее по сравнению с обычным перебором.
[78] Стоит также отметить, что в одном частном варианте осуществления, вместо достижения функцией сдвига порогового значения, способ (100) будет выполняться до тех пор, пока текущий шаг сдвига не уменьшиться в, по меньшей мере, 7 раз. То есть способ (100) будет выполнять по меньшей мере 7 итераций с уменьшением текущего шага сдвига в 2 раза. Такое количество итераций также обеспечит минимальное значение функции сдвига для пересекающихся спроецированных изображений. Для специалиста в данной области техники будет очевидно, что количество итераций повторения этапов (107)-(111), требуемых для достижения минимального значения функции сдвига, может зависеть от заданной точности и качества желаемого итогового панорамного изображения.
[79] На Фиг. 5-6, показан пример сопоставления соседних пересекающихся спроецированных изображений, описанный выше на этапах (107) - (111).
0
0
[80] На Фиг. 5 показана пара пересекающихся спроецированных изображений 501 и 502. Сопоставление указанных изображений начинается с выбора шага сдвига (S). На первой итерации алгоритма сдвига, в средстве создания панорамного изображения случайным образом выбирается начальный шаг сдвига (S). После выбора начального шага сдвига, алгоритм сдвига переходит на этап (107) (не показан), для осуществления сглаживания проекций изображений 501 и 502, а также их изображений границ. Как упоминалось выше, сглаживание выполняется с радиусом, равным шагу сдвига на текущей итерации. То есть для первой итерации алгоритма сдвига сглаживание выполняется с радиусом, равным начальному шагу сдвига (So), например с радиусом, равным 50 пикселей.
0
[81] Далее алгоритм переходит к этапу (108), где для изображений 501 и 502 формируется набор точек сдвига и вычисляется функция сдвига на основе формулы (2). Для формирования набора точек сдвига используется текущий шаг сдвига. На Фиг. 5, начальное положение, в котором изображения 501 и 502 спроецированы на плоскость, отображено как позиция 510. Указанная позиция представляет конкретный пример проецирования пары соседних изображений на плоскость. Как видно на Фиг. 5, из-за погрешности гироскопа мобильного устройства, с которого выполнялась съемка, проекции изображений 501 и 502 смещены друг относительно друга. Позиция 510 является первой точкой, в которой происходит вычисление функции сдвига. Для формирования остальных позиций для набора точек сдвига, первое изображение 501 смещают на текущий шаг сдвига. На первой итерации алгоритма сдвига первое изображение 501 смещают на начальный шаг сдвига (S) в следующие положения:
0
a) сдвиг по горизонтальной оси изображения 501 на S во встречном по отношению к изображению 502 направлении (позиция 511);
0
b) сдвиг по горизонтальной оси изображения 501 на S в противоположном по отношению к изображению 502 направлении (позиция 512);
0
c) сдвиг по вертикальной оси изображения 501 на S в верхнее положение по отношению к изображению 502 (позиция 513);
0
d) сдвиг по вертикальной оси изображения 501 на S в нижнее положение по отношению к изображению 502 (позиция 514).
[82] Таким образом, на основе шага сдвига формируется набор точек сдвига (позиции 510-514), где требуется вычислить функцию сдвига. Продолжая этап (108) происходит вычисление функции сдвига для каждой позиции 510-514 по формуле (2). Стоит отметить, что вычисление функции сдвига может происходить в момент формирования каждой позиции сдвига, то есть одновременно с формированием набора точек сдвига.
[83] Далее алгоритм сдвига переходит к этапу (109). На этапе (109) происходит сравнение вычисленных значений функций сдвига в позициях 510-514 между собой и сдвиг изображения 501 в позицию, где значение функции минимально. Поскольку, как упоминалось выше функция сдвига характеризует разницу между изображениями, то при смещении в позицию, где значение функции сдвига минимально, изображения 501-502 будут располагаться наиболее ровно друг к другу относительно других позиций. Так, сравнивая функции сдвига в позициях 510-514 минимальное значение функции будет в позиции 511. Следовательно, изображение 501 сдвигают в позицию 511.
[84] На этапе (110) значение функции сдвига в позиции 511 сравнивается с пороговым значением функции сдвига. В частном варианте осуществления, пороговое значение функции сдвига будет меньше 2 пикселей, что означает, что изображение 501 полностью совпадает с изображением 502. Если функция сдвига больше порогового значения, то способ (100) переходит к этапу (111). Если функция сдвига меньше или равна пороговому значению, то способ (100) переходит к этапу (112).
[85] Как видно на Фиг. 5, позиция 511 не обеспечивает точное совпадение изображений 501 и 502, что интерпретируется как превышение значения функции сдвига в этой точке порогового значения. Следовательно, алгоритм сдвига переходит к этапу (111)
0
1
0
1
[86] На этапе (111) текущий шаг сдвига S уменьшается в два раза. Таким образом, мы получаем новый шаг сдвига S, равный S/2. После получения нового шага сдвига S первая итерация алгоритма сдвига завершается и происходит повторение этапов (107) -(111) до тех пор, пока функция сдвига на этапе (110) не станет меньше или равной пороговому значению функции сдвига. При этом, после завершения первой итерации, изображения 501 и 502 остаются в точке сдвига с минимальным значением функции сдвига. Таким образом, на основе n-ого количества итераций достигается точное сопоставление изображений, т.к. точность сдвига повышается в два раза по сравнению с предыдущей итерацией.
1
[87] Фиг. 6 показывает вторую итерацию алгоритма сдвига с шагом сдвига S. Также, как и на первой итерации алгоритма сдвига, вторая итерация начинается с этапа (107). Во второй итерации изображения 501 и 502 находятся в положении, в которое произошло их смещение на предыдущей итерации, то есть в положении 511. На этапе (107) выполняется сглаживание изображений границ и спроецированных изображений 501 и 502, однако в данной итерации радиус размытия ровняется S1. Это позволяет предотвратить попадание в локальный минимум, когда на изображениях есть повторяющиеся объекты (черно-белые полосы), и при некотором наборе перебираемых параметров эти объекты (черно-белые полосы) могут хорошо совпасть, что обеспечит маленькое значение функции сдвига, однако реальная величина сдвига, может сильно отличаться.
1
1
[88] После выполнения сглаживания на этапе (107), на этапе (108) формируется набор точек сдвига и вычисляется функция сдвига в указанных точках. Формирование набора точек сдвига происходит также, как и в первой итерации, за исключением того, что шаг сдвига уже ровняется S и текущее положение изображений 501 и 502 является положение 511, то есть точка сдвига с минимальным значением функции сдвига, вычисленным на первой итерации, в которую произошел сдвиг. Таким образом, по аналогии с первой итерацией, на этапе (108) вычисляются значения функции сдвига для набора точек сдвига, полученных на основе шага сдвига S, причем позиция 610 является позицией 511 из предыдущей итерации. Функция сдвига вычисляется для позиций 610-614.
[89] На этапе (109) происходит сравнение вычисленных значений функций сдвига в позициях 610-614 между собой и сдвиг изображения 501 в позицию, где значение функции минимально. Как видно на Фиг. 6, значение функции сдвига принимает минимальное значение в позиции 614.
i+1
i
[90] На этапе (110) значение функции сдвига в позиции 614 сравнивается с пороговым значением функции сдвига. В примере, показанном на Фиг. 5-6, значение функции сдвига в позиции 614 меньше или равно пороговому значению, что визуально отображено на Фиг. 6, где изображения 501 и 502 в позиции 614 точно совпадают друг с другом. Однако, для специалиста в данной области техники, очевидно, что для достижения порогового значения в некоторых парах пересекающихся спроецированных изображений может потребоваться и большее количество итераций, например, три, четыре и т.д. Причем в каждой новой итерации шаг сдвига s будет в равен s/2.
[91] После достижения функцией сдвига порогового значения способ (100) переходит к этапу (112) и алгоритм сдвига завершается.
0
1
[92] Хотя и этапы, раскрытые на фиг. 5-6 описывают создание обычного панорамного изображения, указанные этапы также можно применять для создания 360° панорамного изображения. При создании такой панорамы добавляется, по меньшей мере, второй ряд последовательных снимков, что создает пересечение спроецированных изображений как в горизонтальном ряду, так и в вертикальном и, следовательно, увеличивает количество соседних спроецированных пересекающихся изображений. Однако, указанное расположение спроецированных снимков на плоскости не меняет последовательность этапов и принцип создания панорамного изображения, что позволяет применять указанные выше этапы и для создания 360° панорамного изображения. То есть функция сдвига для 360° панорам будет вычисляться как для пары пересекающихся спроецированных изображений, расположенных в одном горизонтальном ряду, так и для пары спроецированных пересекающихся изображений, находящихся в вертикальном ряду. [93] На этапе (112) происходит вычисление вектора сдвига для каждой пары пересекающихся изображений. Вектор сдвига показывает итоговый сдвиг, который необходимо совершить, чтобы наложить проекцию первого изображения на проекцию второго изображения. Вектор сдвига вычисляется для каждой пары пересекающихся спроецированных изображений, как суммарный сдвиг, который потребовался в паре изображений для их точного сопоставления. Так, например, при достижении совмещения изображений за 2 итерации, как показано на Фиг. 5-6, вектор сдвига для этой пары изображений будет равен S+S.
[94] Таким образом, поскольку одна проекция пересекается с несколькими соседними проекциями, то для каждой проекции существует несколько векторов сдвига для каждого пересечения с соседней проекцией.
[95] Для вычисления результирующего сдвига для каждой проекции, на этапе (113) используется процедура Bundle Adjustment с методом оптимизации нулевого порядка [2]. Результирующий вектор сдвига позволяет учесть положение проекции относительно соседних пересекающихся проекций и рассчитать требуемое расстояние сдвига для всех проекций изображений. На основе вычисленного результирующего вектора сдвига выполняется сдвиг каждой проекции (114).
[96] На этапе (114) выполняется сдвиг каждой проекции на вычисленный результирующий вектор сдвига. После совершения сдвига всех проекций, мы получаем набор последовательных спроецированных изображений, совмещенных на одном уровне, что обеспечивает их дальнейшую корректную сшивку в панорамное изображение.
[97] На этапе (115) происходит объединение всех проекций в итоговое панорамное изображение (сшивка изображений). Сшивка изображений обеспечивает соединение соседних проекций изображений по определенной линии (шву) создавая единое панорамное изображение. Для этого вычисляются швы, по которым будет происходить состыковка соседних изображений. Швы могут быть вычислены методом динамического программирования [3].
[98] Таким образом, раскрытое техническое решение, позволяет получить панорамное изображение, в том числе и 360° панорамное изображение, высокого качества из серии последовательных снимков даже в условиях съемки близко расположенных сцен и сцен, содержащих однородные и повторяющиеся объекты.
[99] На Фиг. 7 представлен пример общего вида устройства (700), которое обеспечивает реализацию представленного решения. На базе устройства (700) может реализовываться различный спектр вычислительных устройств, например, средство создания панорамного изображения, устройство пользователя, компьютерная система создания панорамного изображения, сервер и т.д.
[100] В общем виде устройство (700) содержит объединенные общей шиной информационного обмена один или несколько процессоров (701), средства памяти, такие как ОЗУ (702) и ПЗУ (703), интерфейсы ввода/вывода (704), устройства ввода/вывода (705), и устройство для сетевого взаимодействия (706).
[101] Процессор (701) (или несколько процессоров, многоядерный процессор и т.п.) может выбираться из ассортимента устройств, широко применяемых в настоящее время, например, таких производителей, как: Intel™, AMD™, Apple™, Samsung Exynos™, MediaTEK™, Qualcomm Snapdragon™ и т.п. Под процессором или одним из используемых процессоров в устройстве (700) также необходимо учитывать графический процессор, например, GPU NVIDIA или Graphcore, тип которых также является пригодным для полного или частичного выполнения способа (100), а также может применяться для обучения и применения моделей машинного обучения в различных информационных системах.
[102] ОЗУ (702) представляет собой оперативную память и предназначено для хранения исполняемых процессором (701) машиночитаемых инструкций для выполнения необходимых операций по логической обработке данных. ОЗУ (702), как правило, содержит исполняемые инструкции операционной системы и соответствующих программных компонент (приложения, программные модули и т.п.). При этом, в качестве ОЗУ (702) может выступать доступный объем памяти графической карты или графического процессора.
[103] ПЗУ (703) представляет собой одно или более средств для постоянного хранения данных, например, жесткий диск (HDD), твердотельный накопитель данных (SSD), флэш-память (EEPROM, NAND и т.п.), оптические носители информации (CD-R/RW, DVD-R/RW, BlueRay Disc, MD) и др.
[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 и т.п.
[105] Для обеспечения взаимодействия пользователя с средством создания панорамного изображения применяются различные средства (705) В/В информации, например, клавиатура, дисплей (монитор), сенсорный дисплей, тач-пад, джойстик, манипулятор мышь, световое перо, стилус, сенсорная панель, трекбол, динамики, микрофон, средства дополненной реальности, оптические сенсоры, планшет, световые индикаторы, проектор, камера, средства биометрической идентификации (сканер сетчатки глаза, сканер отпечатков пальцев, модуль распознавания голоса) и т.п.
[106] Средство сетевого взаимодействия (706) обеспечивает передачу данных посредством внутренней или внешней вычислительной сети, например, Интранет, Интернет, ЛВС и т.п. В качестве одного или более средств (706) может использоваться, но не ограничиваться: Ethernet карта, GSM модем, GPRS модем, LTE модем, 5G модем, модуль спутниковой связи, NFC модуль, Bluetooth и/или BLE модуль, Wi-Fi модуль и др.
[107] Дополнительно могут применяться также средства спутниковой навигации в составе устройства (700), например, GPS, ГЛОНАСС, BeiDou, Galileo.
[108] Конкретный выбор элементов устройств (700) для реализации различных программно-аппаратных архитектурных решений может варьироваться с сохранением обеспечиваемого требуемого функционала от того или иного типа устройства.
[109] Средство создания панорамного изображения может быть также реализовано на программно-аппартной части персонального устройства пользователя, которое может являться устройством (700) в виде набора аппаратных или логических модулей, способных выполнять заданную, четко определенную последовательность вычислительных операций (действий, инструкций), или машиночитаемого носителя, содержащего инструкции, например, программные, для выполнения вышеупомянутого способа 100. Под средством создания панорамного изображения может пониматься электронный блок либо интегральная схема (микропроцессор), исполняющая машинные инструкции (программы).
[110] Представленные материалы заявки раскрывают предпочтительные примеры реализации технического решения и не должны трактоваться как ограничивающие иные, частные примеры его воплощения, не выходящие за пределы испрашиваемой правовой охраны, которые являются очевидными для специалистов соответствующей области техники.
Источники инофрмации
1) Живрин Э.Я., Алкзир Н.Б., «Методы определения объектов на изображении», Молодой ученый №7 (193), с. 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.
3) Xiong, Yingen & Pulli, Kari. (2010). Fast image stitching and editing for panorama painting on mobile phones.