СТАБИЛИЗАЦИЯ ВИДЕОРЯДА
VIDEO SEQUENCE STABILIZATION

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Этот документ, в целом, относится к стабилизации видеоряда.
УРОВЕНЬ ТЕХНИКИ
[0002] Запись видеоряда применяется специализированными устройствами записи видеоряда, но чаще применяется в таких бытовых устройствах, как сотовые телефоны и планшетные компьютеры, которые способны записывать видеоряд. Проблема большинства карманных устройств записи состоит в том, что эти устройства подвержены дрожанию видеоряда, по причине того, что непроизвольные перемещения пользователя, держащего записывающее устройство, влияют на качество видеоряда.
[0003] Дрожание записывающего устройства может приводить к дрожанию видеоряда целиком, если это дрожание не компенсировать, например, механизмом стабилизации видеоряда. Оптическая стабилизация видеоряда может уменьшать дрожание, присутствующее в видеоряде, за счет механически движущихся компонентов записывающего устройства, например, объектива или датчика изображения. Однако устройства оптической стабилизации видеоряда могут добавлять затраты на материалы и производство записывающего устройства. Кроме того, устройства оптической стабилизации видеоряда могут увеличивать размер записывающего устройства, тогда как часто наблюдается стремление сделать устройства записи компактными.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] В этом документе описаны методики, способы, системы и другие механизмы для стабилизации видеоряда.
[0005] Помимо описанных ниже вариантов осуществления, настоящее изобретение описывает нижеследующие варианты осуществления.
[0006] Вариант осуществления 1 предусматривает компьютерно-реализуемый способ. Способ содержит прием, посредством вычислительной системы, первого и второго кадров видеоряда, захваченных записывающим устройством, например, камерой. Способ содержит идентификацию, посредством вычислительной системы и с использованием первого и второго кадров видеоряда, математического преобразования, которое указывает перемещение камеры относительно сцены, захваченной видеорядом (т.е. сцены, представленной в видеоряде) от момента захвата первого кадра до момента захвата второго кадра. Способ содержит генерацию, посредством вычислительной системы, модифицированного математического преобразования посредством модификации математического преобразования, которое указывает перемещение камеры относительно сцены, таким образом, что математическое преобразование в меньшей степени представляет перемещение, начавшееся недавно. Способ содержит генерацию, посредством вычислительной системы, с использованием математического преобразования и модифицированного математического преобразования, второго математического преобразования, которое можно применять ко второму кадру для стабилизации второго кадра. Способ содержит идентификацию, посредством вычислительной системы, предполагаемого искажения, которое будет присутствовать в стабилизированной версии второго кадра, обусловленного применением второго математического преобразования ко второму кадру, на основе разности между: (i) величиной искажения в горизонтальном направлении, обусловленного применением второго математического преобразования ко второму кадру, и (ii) величиной искажения в вертикальном направлении, обусловленного применением второго математического преобразования ко второму кадру. Способ содержит определение, посредством вычислительной системы, величины, на которую следует уменьшить стабилизационный эффект, обусловленный применением второго математического преобразования ко второму кадру, на основе степени, в которой предполагаемое искажение превышает допустимое изменение искажения, вычисленное из искажения во множественных кадрах видеоряда, предшествующих второму кадру. Способ содержит генерацию, посредством вычислительной системы, стабилизированной версии второго кадра посредством применения второго математического преобразования ко второму кадру, где стабилизационный эффект применения второго математического преобразования ко второму кадру уменьшен, на основе определенной величины, на которую следует уменьшить стабилизационный эффект.
[0007] Вариант осуществления 2 предусматривает способ варианта осуществления 1, в котором второй кадр является кадром видеоряда, который следует непосредственно за первым кадром видеоряда.
[0008] Вариант осуществления 3 предусматривает способ варианта осуществления 1, в котором математическое преобразование, которое указывает перемещение камеры, включает в себя матрицу гомографического преобразования.
[0009] Вариант осуществления 4 предусматривает способ варианта осуществления 3, в котором модификация математического преобразования включает в себя применение низкочастотного фильтра к матрице гомографического преобразования.
[0010] Вариант осуществления 5 предусматривает способ варианта осуществления 3, в котором предполагаемое искажение основано на разности между значением горизонтального масштабирования во втором математическом преобразовании и значением вертикального масштабирования во втором математическом преобразовании.
[0011] Вариант осуществления 6 предусматривает способ варианта осуществления 1, в котором модификация математического преобразования включает в себя модификацию математического преобразования таким образом, что модифицированное математическое преобразование в большей степени представляет перемещение, происходящее в течение длительного периода времени, чем математическое преобразование.
[0012] Вариант осуществления 7 предусматривает способ варианта осуществления 1, в котором определение величины, на которую следует уменьшить стабилизационный эффект, обусловленный применением второго математического преобразования ко второму кадру, дополнительно основано на определенной скорости перемещения камеры от первого кадра ко второму кадру, превышающей допустимое изменение скорости перемещения камеры, вычисленное на основе скорости перемещения камеры между множественными кадрами видеоряда, предшествующими второму кадру.
[0013] Вариант осуществления 8 предусматривает способ варианта осуществления 1, в котором генерация стабилизированной версии второго кадра включает в себя масштабирование в версию второго кадра, сгенерированную посредством применения второго математического преобразования ко второму кадру.
[0014] Вариант осуществления 9 предусматривает способ варианта осуществления 1, в котором операции дополнительно содержат сдвиг увеличенной области версии второго кадра по горизонтали или по вертикали во избежание представления непригодной области увеличенной областью второго кадра.
[0015] Вариант осуществления 10 предусматривает систему, включающую в себя носители записи, на которых хранятся инструкции, которые, при выполнении одним или более процессорами, предписывают осуществление операций согласно способу любого из вариантов осуществления 1-9.
[0016] Конкретную реализацию могут, в ряде случаев, обеспечивать одно или более из следующих преимуществ. Описанные здесь методики стабилизации видеоряда позволяют компенсировать перемещение с более чем двумя степенями свободы (например, перемещение не только по горизонтали и вертикали), например, посредством компенсации перемещения с восемью степенями свободы (например, аспектов параллельного переноса, аспектов поворота, аспектов масштабирования и искажения типа нежестких свертывающихся жалюзи). Описанные здесь методики стабилизации видеоряда могут действовать по мере захвата видеоряда устройством и могут не требовать информации из будущих кадров. Другими словами, методики стабилизации видеоряда позволяют использовать информацию только из прошлых кадров при стабилизации последнего записанного кадра, таким образом, что система может сохранять стабилизированный видеопоток по мере захвата видеопотока (например, не сохраняя множественные нестабилизированные кадры видеоряда, например, не сохраняя более чем 1, 100, 500, 1000 или 5000 нестабилизированных кадров видеоряда в записываемом в настоящее время или записанном видеоряде). Соответственно, системе может не требоваться ждать стабилизации видеоряда, пока не будет записано все видеоряд. Описанные методики стабилизации видеоряда могут иметь низкую сложность, что позволяет им действовать на устройствах умеренной вычислительной мощности (например, некоторых смартфонах). Кроме того, описанные здесь методики стабилизации видеоряда могут действовать в случаях, когда на первом этапе не удается оценить межкадровое движение.
[0017] Одна или более реализаций подробно изложены в прилагаемых чертежах и нижеследующем описании. Другие признаки, задачи и преимущества явствуют из описания и чертежей и из формулы изобретения.
ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0018] Фиг. 1 - схема видеопотока, стабилизируемого процессом стабилизации видеоряда.
[0019] Фиг. 2A-2B - блок-схема операций процесса для стабилизации видеоряда.
[0020] Фиг. 3 - блок-схема вычислительных устройств которые можно использовать для реализации систем и способов, описанных в этом документе, либо в качестве клиента, либо в качестве сервера или нескольких серверов.
[0021] Аналогичные ссылочные позиции в различных чертежах указывают аналогичные элементы.
ПОДРОБНОЕ ОПИСАНИЕ
[0022] Этот документ, в целом, описывает стабилизацию видеоряда. Стабилизация видеоряда может осуществляться посредством идентификации преобразования между последним принятым кадром видеоряда и ранее принятым кадром видеоряда (где преобразование указывает перемещение камеры относительно сцены от кадра к кадру), модификации этого преобразования на основе информации из прошлых кадров, генерации второго преобразования на основе преобразования и модифицированного преобразования, и применения второго преобразования к принимаемому в настоящее время кадру для генерации стабилизированной версии принимаемого в настоящее время кадра. Этот процесс описан в целом со ссылкой на фиг. 1, и затем, более подробно, со ссылкой на фиг. 2.
[0023] На фиг. 1 показана схема видеопотока, стабилизируемого процессом стабилизации видеоряда. Фигура включает в себя три кадра 110a-c видеоряда. Эти кадры могут быть последовательными, благодаря чему кадр 110b может быть кадром, захваченным непосредственно после кадра 110a, и кадр 110c может быть кадром, захваченным непосредственно после кадра 110b. Этот документ также может рассматривать два кадра видеоряда как первый кадр видеоряда и второй кадр видеоряда, но обозначение ʺпервыйʺ не обязательно означает, что первый кадр является начальным кадром всего видеоряда.
[0024] Кадры 110a-c показаны расположенными между или вблизи линий 112a-b, которые указывают положение сцен, представленных кадрами относительно друг друга. Линии приведены на этой фигуре, чтобы показать, что камера двигалась, захватывая кадры 110a-c. Например, захватывая кадр 110b, камера смотрела немного ниже, чем при захвате кадра 110a, и, захватывая кадр 110c, немного выше, при захвате кадров 110a-b.
[0025] Вычислительная система идентифицирует математическое преобразование (блок 120), которое указывает перемещение камеры от первого кадра 110b ко второму кадру 110c. Идентификация может осуществляться с использованием кадров 110b-c (как показано стрелками на фигуре), где кадр 110c может быть последним захваченным кадром. Эти два кадра 110b-c могут приниматься от датчика камеры или модуля камеры, который присоединен к вычислительной системе, или могут приниматься от удаленного устройства, захватившего кадры 110b-c видеоряда. Идентификация математического преобразования может включать в себя генерацию математического преобразования. Математическое преобразование может быть матрицей гомографического преобразования, как более подробно описано в отношении блока 210 на фиг. 2A-B.
[0026] Затем вычислительная система создает модифицированное преобразование (блок 125) посредством модификации исходное преобразование (блок 120) таким образом, что модифицированное преобразование (блок 125) в меньшей степени представляет недавно начавшееся перемещение, чем исходное преобразование. Другими словами, генерация модифицированного преобразования содержит модификацию исходного преобразования на основе информации из одного или более кадров видеоряда, предшествующих первому и второму кадрам 110b-c. Модифицированное преобразование может быть версией исходного преобразования, полученной низкочастотной фильтрацией. Таким образом, получается модифицированное математическое преобразование (блок 125), которое в большей степени представляет перемещение, происходящее в течение длительного периода времени, чем исходное преобразование (блок 120), в отличие от недавно начавшегося перемещения.
[0027] В качестве примера, модифицированное математическое преобразование (блок 125) может в большей степени представлять панорамирующее движение, которое происходило несколько секунд, чем колебание, начавшееся долю секунды назад. Такая модификация преобразования учитывает предыдущие кадры видеоряда, как показано на фиг. 1 стрелками, ведущими от кадров 110a-b к блоку 122. Например, преобразования, вычисленные с использованием предыдущих кадров, можно использовать для идентификации перемещений, происходящих в течение более длительного периода времени, и недавно начавшихся перемещений. Иллюстративный способ использования предыдущих кадров для вычисления модифицированного преобразования может состоять в применении низкочастотного фильтра к матрице гомографического преобразования, как более подробно описано в отношении блока 220 на фиг. 2A-B.
[0028] Блок 130 представляет второе преобразование, которое генерируется из исходного преобразования (блок 120) и модифицированного преобразования (блок 125). Второе преобразование может представлять собой разность между исходным преобразованием и модифицированным преобразованием. Генерация второго преобразования из исходного преобразования и модифицированного преобразования более подробно описана в отношении блока 230 на фиг. 2A-B.
[0029] Блок 132 показывает, как вычислительная система идентифицирует предполагаемое искажение в стабилизированной версии второго кадра 110c, обусловленное применением второго преобразования ко второму кадру 110c, на основе разности между (i) величиной искажения в горизонтальном направлении, обусловленной применением второго математического преобразования ко второму кадру 110c, и (ii) величиной искажения в вертикальном направлении, обусловленного применением второго математического преобразования ко второму кадру 110c. Вычисление предполагаемого искажения описано более подробно в отношении блока 250 на фиг. 2A-B.
[0030] Блок 134 показывает, как вычислительная система определяет величину, на которую следует уменьшить стабилизационный эффект, обусловленный применением второго математического преобразования ко второму кадру 110c, на основе степени, в которой предполагаемое искажение превышает допустимое изменение искажения. Допустимое изменение искажения можно вычислять с использованием множественных кадров видеоряда, предшествующие второму кадру 110c, как показано на фиг. 1 стрелками, ведущими от кадров 110a-b к блоку 134. В качестве примера, искажение во множественных предыдущих кадрах можно анализировать, и если искажение, обусловленное стабилизацией текущего кадра 110c, значительно отклоняется от величины, на которую изменяется искажение от кадра к кадру, вычислительная система может уменьшать стабилизацию текущего кадра 110c, чтобы искажение в видеоряде не было слишком заметным. Определение величины, на которую следует уменьшить стабилизацию видеоряда, более подробно описано в отношении блоков 250 и 260 на фиг. 2. Использование вычислительной системой определенной величины, на которую следует уменьшить стабилизацию видеоряда, может включать в себя генерацию модифицированного второго преобразования (блок 140) с использованием определенной величины.
[0031] Вычислительная система генерирует стабилизированную версию второго кадра 110c (блок 150) посредством применения модифицированного второго преобразования (блок 140) ко второму кадру 110c. Поскольку модифицированное второе преобразование (блок 140) было модифицировано на основе определенной величины, на которую следует уменьшить стабилизацию, считается, что генерация вычислительной системой стабилизированной версии второго кадра (блок 150) уменьшается на основе определенной величины, на которую следует уменьшить стабилизационный эффект.
[0032] В некоторых реализациях, определение величины, на которую следует уменьшить стабилизационный эффект, дополнительно или альтернативно основано на том, что определенная скорость перемещения камеры относительно сцены от первого кадра 110b ко второму кадру 110c превышает допустимое изменение скорости камеры относительно сцены. Допустимое изменение скорости камеры можно вычислять из множественных кадров видеоряда, предшествующие второму кадру 110c, как описано более подробно в отношении блоков 240 и 260 на фиг. 2A-B.
[0033] В некоторых реализациях, генерация стабилизированной версии второго кадра включает в себя масштабирование в версию второго кадра, которая генерируется посредством применения второго математического преобразования ко второму кадру. Вычислительная система может сдвигать увеличенную область по горизонтали, по вертикали или в обоих направлении, чтобы увеличенная область не представляла непригодную область, которая может появляться на краях стабилизированного второго кадра. Это более подробно описано в отношении блоков 280 и 290 на фиг. 2A-B.
[0034] На фиг. 2A-B показана блок-схема операций процесса для стабилизации видеоряда. Этот процесс представлен блоками 210-290, которые описаны ниже. Операции, описанные в связи с этими блоками, не обязательно осуществлять в порядке, указанном ниже или показанном на фиг. 2A-B.
[0035] На блоке 210 вычислительная система оценивает матрицу, который представляет межкадровое движение (ʺH_interframeʺ) с использованием двух кадров видеоряда в качестве входного сигнала. Эта матрица межкадрового движения может быть матрицей гомографического преобразования. Матрица гомографического преобразования может представлять собой матрицу, которая может представлять перемещение сцены или камеры, которая захватывала сцену между двумя кадрами видеоряда. В качестве примера, каждый кадр видеоряда может отображать двухмерное изображение. Предположим, в первом кадре запечатлен квадрат, полученный фотографированием прямо напротив квадрата, таким образом, что квадрат имеет стороны равной длины с углами в девяносто градусов в кадре видеоряда (другими словами, он выглядит как квадрат). Предположим теперь, что камера переместилась в сторону (или переместился сам квадрат), из-за чего в следующем кадре видеоряда квадрат отображается перекошенным, где некоторые стороны длиннее других и углы не равны девяноста градусам. Положение четырех угловых точек квадрата в первом кадре может проецироваться в положение четырех угловых точек во втором кадре для идентификации перемещения камеры или сцены из одного кадра в следующий.
[0036] Проецирование этих угловых точек друг в друга в кадрах можно использовать для генерации матрицы гомографического преобразования, которая представляет движение точки наблюдения камеры относительно записываемой сцены. Для данной матрицы гомографического преобразования, первый кадр можно использовать с генерируемой матрицей гомографического преобразования для воссоздания второго кадра, например, посредством перемещения пикселей в первом кадре в разные положения согласно известным способам гомографического преобразования.
[0037] Вышеописанная матрица гомографического преобразования может представлять не только параллельный перенос, но и поворот, масштабирование и искажение типа нежестких свертывающихся жалюзи. Таким образом, применение матрицы гомографического преобразования можно использовать для стабилизации видеоряда относительно перемещения с восемью степенями свободы. Для сравнения, некоторые механизмы стабилизации видеоряда стабилизируют изображения только с учетом параллельного переноса (например, перемещение вверх/вниз и влево/вправо).
[0038] Вышеописанная матрица гомографического преобразования может представлять собой матрицу гомографического преобразования 3×3, хотя можно использовать другие типы гомографических матриц (и можно использовать другие математические представления перемещения от одного кадра к другому, даже если не гомографическую матрицу или даже если не матрицу). Матрицу 3×3 (именуемую H_interface) можно определить следующим образом. Сначала вычислительная система находит набор особых точек (обычно угловых точек) в текущем изображении, где эти точки обозначаются [x'_i,y'_i], i=1…N (N - количество особых точек). Затем находятся соответствующие особые точки в предыдущем кадре, где соответствующие особые точки обозначаются [x_i,y_i]. Заметим, что точки описаны в системе координат GL (т.е. x и y принимают значения от -1 до 1, и центр кадра находится в начале отсчета). Если точки выражаются в системе координат пикселей изображения, в которой x принимает значения от 0 до ширины изображения и y принимает значения от 0 до высоты изображения, то точки могут преобразовываться в систему координат GL или результирующая матрица может преобразовываться для компенсации.
[0039] Вышеописанная матрица H_interframe является матрицей 3×3, которая содержит 9 элементов:
H_interfame - матрица преобразования, которая преобразует [x_i,y_i] в [x'_i,y'_i], как описано ниже.
z_i'*[x'_i,y'_i,1]'=H_interframe*[x_i,y_i,1]'
[x'_i,y'_i,1]' - вектор 3×1, полученный транспонированием вектора [x'_i,y'_i,1]. [x_i,y_i,1]' - вектор 3×1, полученный транспонированием вектора [x_i,y_i,1]. z_i' - масштабный коэффициент.
[0040] Для набора соответствующих особых точек, иллюстративный алгоритм для оценивания матрицы описан в следующей книге по компьютерному зрению на примере алгоритма 4.1 (страница 91) и алгоритма 4.6 (страница 123): ʺHartley, R., Zisserman, A.: Multiple View Geometry in Computer Vision. Cambridge University Press (2000),ʺ доступной по адресуftp://vista.eng.tau.ac.il/dropbox/aviad/Hartley,%20Zisserman%20-%20Multiple%20View%20Geometry%20in%20Computer%20Vision.pdf
[0041] На блоке 220 вычислительная система оценивает низкочастотную матрицу преобразования (H_lowpass). Затем низкочастотная матрица преобразования может объединяться с матрицей H_interframe для генерации новой матрицы (H_compensation), которую можно использовать для удаления результатов непроизвольного ʺвысокочастотногоʺ перемещения видеокамеры. Если система пытается удалить все перемещение (другими словами, не осуществляет описанной здесь низкочастотной фильтрации), пользователь может не быть способен произвольно перемещать камеру и также заставлять перемещаться сцену, представленную видеорядом. Таким образом, вычислительная система генерирует низкочастотное преобразование для отфильтровывания высокочастотных перемещений. Высокочастотными перемещениями могут быть перемещения, которые являются нерегулярными и которые не представлены во многих кадрах, например, перемещения вперед-назад за короткий период. Напротив, низкочастотными перемещениями могут быть перемещения, представленные во многих кадрах, например, панорамирование пользователем видеокамеры за несколько секунд.
[0042] Для осуществления этой фильтрации, вычислительная система генерирует низкочастотную матрицу преобразования (H_lowpass), которая включает в себя значения, взвешенные для выделения низкочастотных перемещений, происходящих в течение длительного временного ряда. Низкочастотная матрица преобразования может быть результатом применения низкочастотного фильтра к матрице H_interframe. Каждый элемент низкочастотной матрицы преобразования генерируется по отдельности, на поэлементной основе, из (1) своего собственного временного ряда низкочастотной матрицы преобразования из предыдущего кадра, (2) матрицы H_interframe, которая представляет перемещение между предыдущим кадром и текущим кадром, и (3) коэффициента затухания, заданного пользователем. Другими словами, элементы матрицы, взвешенные известными значениями, могут быть элементами, которые представляют перемещение, присутствующее в матрице H_interframe во многих кадрах. Уравнение для генерации H_lowpass можно представить следующим образом:
H_lowpass=H_previous_lowpass*transform_damping_ratio+H_interframe*(1-transform_damping_ratio)
Это уравнение является примером двухотводного фильтра с бесконечной импульсной характеристикой.
[0043] На блоке 230, вычислительная система вычисляет компенсационную матрицу преобразования (H_compensation). Компенсационная матрица может быть комбинацией низкочастотной матрицы (H_lowpass) и матрицы межкадрового движения (H_interframe). Объединение этих двух матриц генерирует матрицу (H_compensation), которая необходима для поддержания перемещения от одного кадра к другому, но только перемещений, происходящих в течение приемлемого периода времени, для исключения недавних ʺнепроизвольныхʺ перемещений. Матрица H_compensation может представлять разность перемещений между H_interfame и H_lowpass, благодаря чему, в то время как H_lowpass может применяться к последнему кадру для генерации модифицированной версии последнего кадра, который представляет произвольные перемещения, происходящие между последним кадром и текущим кадром, H_compensation может применяться к текущему кадру для генерации модифицированной (и стабилизированной) версии текущего кадра, который представляет произвольные перемещения, происходящие между последним кадром и текущим кадром. Грубо говоря, применение H_compensation к текущему кадру удаляет непроизвольное перемещение из этого кадра. В частности, согласно этой вычисленной матрице H_compensation, система должна быть способна брать текущий кадр видеоряда, применять матрицу H_compensation к этому кадру с процессом преобразования и получать вновь сгенерированный кадр, который аналогичен текущему кадру, но который исключает любое подобное внезапное и малое перемещение. Другими словами, система пытается поддерживать текущий кадр как можно ближе к последнему кадру, но допускает долговременные ʺпроизвольныеʺ перемещения.
[0044] Компенсационная матрица преобразования может генерироваться согласно следующему уравнению:
H_compensation=Normalize(Normalize(Normalize(H_lowpass)*H_previous_compensation )*Inverse(H_interframe))
Матрица H_previous_compensation является матрицей H_constrained_compensation, которая затем вычисляется в этом процессе, но которая была вычислена для предыдущего кадра. Inverse() - это обратная матричная операция, которая используется для генерации исходной версии последнего кадра посредством обращения преобразования. Объединение исходной версии последнего кадра с матрицей низкочастотного фильтра допускает произвольные перемещения. Объединение с H_previous_compensation компенсирует предыдущее компенсационное значение.
[0045] Normalize() это операция, которая нормирует матрицу 3×3 по своему второму сингулярному значению. Процесс нормирования осуществляется, поскольку некоторые из этапов процесса могут приводить к преобразованию, которое, мягко говоря, не имеет большого смысла в реальном мире. Таким образом, процесс нормирования позволяет получить приемлемый результат для каждого этапа процесса. Нормирование осуществляется для каждого этапа процесса, таким образом, что нечетный выход из одного этапа не загрязняет остальные этапы процесса (например, если бы нечетный выход обеспечивал значение, близкое к нулю, выход остальных этапов также приближался бы к нулю). По рассмотренным ниже причинам, дополнительная обработка может улучшать результаты процесса стабилизации видеоряда.
[0046] На блоке 240, вычислительная система вычисляет значение уменьшения скорости. Значение уменьшения скорости может быть значением, которое используется для определения того, насколько уменьшить стабилизацию видеоряда, когда камера перемещается очень быстро, и стабилизация видеоряда становится нежелательной, поскольку межкадровое движение может быть ненадежным. Для вычисления величины, на которую может быть уменьшена стабилизация видеоряда, первоначально вычисляется скорость перемещения между кадрами. В этом примере, вычислительная система генерирует скорость центра кадра. Скорость в направлении x получается из элемента в строке 1 столбце 3 в H_interframe следующим образом (блок 242):
speed_x=H_interframe[1,3]*aspect_ratio
Скорость в направлении y получается из элемента в строке 2, столбце 3 в матрице H_interframe, следующим образом (блок 242):
speed_y=H_interframe[2,3]
Вышеописанное aspect_ratio равно frame_width, деленное на frame_height. Эти идентификации скорости могут учитывать только параллельный перенос между двумя кадрами, но в других примерах скорость может учитывать поворот, масштабирование или другие типы перемещений.
[0047] Затем система может определять скорость низкочастотного движения, которая учитывает долговременную скорость камеры (или сцены) и исключает внезапные и быстрые ʺнепроизвольныеʺ перемещения. Это делается на основе текущей скорости и ее объединения с ранее вычисленной низкочастотной скоростью и посредством дополнительного применения коэффициента затухания, который обратно взвешивает текущую скорость относительно ранее вычисленной низкочастотной скорости, например, следующим образом:
lowpass_speed_x=lowpass_speed_x_previous*speed_damping_ratio+speed_x*(1-speed_damping_ratio)
Это уравнение фактически генерирует низкочастотную скорость на основе ранее вычисленной скорости и посредством ее уменьшения на величину, которая задается коэффициентом затухания. Уменьшение компенсируется текущей скоростью. Таким образом, текущая скорость видеоряда влияет на общее значение lowpass_speed, но не является исключительным фактором в значении lowpass_speed. Вышеприведенное уравнение представляет фильтр с бесконечной импульсной характеристикой. Один и тот же процесс может осуществляться для скорости y для генерации низкочастотной скорости y, например, следующим образом:
lowpass_speed_y=lowpass_speed_y_previous*speed_damping_ratio+speed_y*(1-speed_damping_ratio)
Коэффициент затухания в этом процессе задается пользователем, и иллюстративное значение равно 0,99.
[0048] Затем процесс объединяет эти значения для генерации единого представления низкочастотной скорости, которое учитывает перемещение в направлениях x и y, например, с использованием следующего уравнения (блок 244):
lowpass_speed=sqrt(lowpass_speed_x*lowpass_speed_x+lowpass_speed_y*lowpass_speed_y)
Эта вычисленная низкочастотная скорость, по существу, представляет долговременную скорость перемещения между кадрами. Другими словами, lowpass_speed в меньшей степени учитывает недавние изменения скорости и взвешивает в большей степени более долговременную тенденцию скорости.
[0049] На основе вычисленной низкочастотной скорости система может вычислять значение уменьшения скорости. В некоторых примерах, значение уменьшения скорости является значением между 0 и 1 (возможны другие граничные значения), и система может генерировать значение уменьшения скорости на основе сравнения низкочастотной скорости с низким порогом и высоким порогом. Если низкочастотная скорость ниже низкого порога, значение уменьшения скорости может быть установлено равным граничному значению 0. Если низкочастотная скорость выше высокого порога, значение уменьшения скорости может быть установлено равным граничному значению 1. Если низкочастотная скорость находится между двумя порогами, вычислительная система может выбирать значение уменьшения скорости, которое представляет масштабированное значение низкочастотной скорости между порогами, например, где значение уменьшения скорости лежит между граничными значениями 0 и 1. Вычисление значения уменьшения скорости можно представить следующим алгоритмом (блок 246):
- если lowpass_speed<low_speed_threshold, то speed_reduction=0
- если же lowpass_speed>high_speed_threshold, то speed_reduction=max_speed_reduction
- в противном случае, speed_reduction=max_speed_reduction*(lowpass_speed-low_speed_threshold)/(high_speed_threshold-low_speed_threshold)
Согласно этому алгоритму, low_speed_threshold, high_speed_threshold и max_speed_reduction задаются пользователем. Иллюстративные значения включают в себя low_speed_threshold=0,008; high_speed_threshold=0,016; и max_speed_reduction=1,0.
[0050] На блоке 250, вычислительная система вычисляет значение уменьшения искажения. Вычислительная система может вычислять значение уменьшения искажения, поскольку преобразование компенсации, применяемое к кадру видеоряда, может создавать слишком большое нежесткое искажение. Другими словами, стабилизация видеоряда может не выглядеть реалистичным, например, потому, что искажение, вызванное большим растяжением изображения в одном направлении, чем в другом, может происходить слишком быстро и может казаться пользователю необычным.
[0051] Для вычисления значения уменьшения искажения, вычислительная система может сначала вычислять масштабный коэффициент компенсация на основе значений масштабных коэффициентов в матрице H_compensation, следующим образом:
- zoom_x=H_compensation[1,1], который является элементом строки 1 столбца 1 в матрице H_compensation
- zoom_y=H_compensation[2,2], который является элементом строки 2 столбца 2 в матрице H_compensation
Масштабные коэффициенты могут являться коэффициентами, идентифицирующими растяжение изображения в результате преобразования в том или ином направлении.
[0052] Затем вычислительная система может определять разность между двумя масштабными коэффициентами, для определения степени искажения изображения при растяжении в одном направлении больше, чем в другом, следующим образом (блок 252):
distortion=abs(zoom_x-zoom_y)
[0053] Низкочастотный фильтр применяется к искажению для ограничения разрешенной скорости изменения искажения и, таким образом, минимизации внезапных изменений искажения, согласно следующей формуле (блок 254):
lowpass_distortion=previous_lowpass_distortion*distortion_damping_ratio+distortion*(1-distortion_damping_ratio)
Другими словами, алгоритм служит для того, чтобы величина искажения могла изменяться медленно. В вышеприведенной формуле distortion_damping_ratio является коэффициентом затухания для IIR фильтра искажения, который задается пользователем. Иллюстративное значение равно 0,99.
[0054] Вычислив низкочастотное искажение, вычислительная система может вычислять значение уменьшения искажения. В некоторых примерах, значение уменьшения искажения является значением между 0 и 1 (возможны другие граничные значения), и система может генерировать значение уменьшения искажения на основе сравнения низкочастотного искажения с низким порогом и высоким порогом. Если низкочастотное искажение ниже низкого порога, значение низкочастотного уменьшения может быть установлено равным граничному значению 0. Если значение низкочастотного искажения выше высокого порога, значение уменьшения искажения может быть установлено равным граничному значению 1. Если значение низкочастотного искажения находится между двумя порогами, можно выбирать значение, которое представляет масштабированное значение низкочастотного искажения между порогами (например, где результирующее значение уменьшения искажения лежит между граничными значениями 0 и 1). Вычисление значения уменьшения искажения можно представить следующим алгоритмом (блок 256):
- если lowpass_distortion<low_distortion_threshold, то distortion_reduction=0
- если же lowpass_distortion>high_distortion_threshold, то max_distortion_reduction
- в противном случае, distortion_reduction=max_distortion_reduction*(lowpass_distortion-low_distortion_threshold)/(high_distortion_threshold-low_distortion_threshold)
Согласно этому алгоритму, low_distortion_threshold, high_distortion_threshold и max_distortion_reduction задаются пользователем. Иллюстративные значения включают в себя low_distortion_threshold=0,001, high_distortion_threshold=0,01, и max_distortion_reduction=0,3.
[0055] На блоке 260, вычислительная система снижает степень стабилизации видеоряда на основе определенного значения уменьшения скорости и значения уменьшения искажения. Для этого вычислительная система вычисляет значение уменьшения, которое в этом примере идентифицируется как максимум значения уменьшения скорости и значения уменьшения искажения (блок 262), следующим образом:
reduction=max(speed_reduction,distortion_reduction)
В других примерах, значение уменьшения может быть комбинацией этих двух значений, которая учитывает часть каждого значения (например, значения могут суммироваться или перемножаться и, затем возможно, умножаться на заранее определенное число, например, 0,5). Значение уменьшения может попадать на граничные значения 0 и 1 или между ними, и чем ближе это значение уменьшения к 1, тем в большей степени вычислительная система может уменьшать степень стабилизации изображения.
[0056] Затем вычислительная система может модифицировать компенсационную матрицу преобразования для генерации приведенной компенсационной матрицы преобразования (блок 264). Вычислительная система может делать это умножением компенсационной матрицы преобразования на результат вычитания значения уменьшения из единицы. Другими словами, если значение уменьшения очень близко к единице (что указывает большое уменьшение стабилизации изображения), значения в компенсационной матрице могут быть значительно уменьшены, поскольку они будут умножаться на число, близкое к нулю. Затем числа в модифицированной компенсационной матрице преобразования прибавляются к единичной матрице, умноженной на значение уменьшения. Это отражено в иллюстративном уравнении:
H_reduced_compensation=Identity*reduction+H_compensation*(1-reduction)
[0057] На блоке 270, вычислительная система может ограничивать компенсацию таким образом, что результирующая стабилизация видеоряда не отображает непригодные области выходного кадра (например, области вне кадра). В качестве некоторой предыстории, поскольку компенсация может деформировать изображение, полученное в процессе стабилизации изображения, это изображение может отображать непригодные области, которые находятся, по существу, вне изображения, на его границах. Чтобы эти непригодные области гарантированно не отображались, вычислительная система может увеличивать изображение для обрезки сторон изображения, которые могли бы включать в себя непригодные области.
[0058] Возвращаясь к процессам блока 270, если камера перемещается быстро и значительно, стабилизация может сосредотачиваться на отображении старого положения, поскольку быстрое и значительное перемещение может отфильтровываться, что может вносить вышеописанные непригодные области в отображение стабилизированного кадра. В таком случае, описанный ниже процесс ограничения может гарантировать, что стабилизация видеоряда, по существу, останавливается, полностью управляя отображаемой областью кадра, если видеоряд подходит к отображению непригодной области. Это определение того, должна ли стабилизация отказываться от некоторого управление кадром, может начинаться с первоначального задания угловых точек выходного изображения и определения, выходят ли эти угловые точки за пределы заранее заданной области обрезки. Максимальная величина компенсации и масштабирования может задаваться как удвоенный коэффициент обрезки, где коэффициент обрезки может задаваться пользователем (например, 15% с каждой стороны или 0,15 в нижеследующем уравнении):
max_compensation=cropping_ratio*2
[0059] Затем вычислительная система может использовать матрицу H_reduced_compensation для преобразования 4 углов единичного квадрата в GL координатах (x01,y01)=(-1,-1), (x02,y02)=(1,-1), (x03,y03)=(-1,1), (x04,y04)=(1,1) в 4 угловые точки (x1,y1), (x2,y2), (x3,y3), (x4,y4). (Заметим, что кадр видеоряда не обязан быть единичным квадратом, но размеры единичного кадра проецируются в единичный квадрат в GL координатах). В частности, используется следующая формула для преобразования (x0i,y0i) в (xi,yi):
dzi*[xi,yi,1]'=H_reduced_compensation*[x0i,y0i,1]'
В этом примере, [x0i,y0i,1]' - вектор 3×1, полученный транспонированием вектора [x0i,y0i,1]. [xi,yi,1]' - вектор 3×1, полученный транспонированием вектора [xi,yi,1]. zi - масштабный коэффициент.
[0060] Затем вычислительная система может идентифицировать максимальную величину перемещения в каждом направлении (влево, вправо, вверх и вниз) от углов каждого преобразованного кадра видеоряда к стороне единичного квадрата, следующим образом:
- max_left_displacement=1+max(x1,x3)
- max_right_displacement=1-min(x2,x4)
- max_top_displacement=1+max(y1,y2)
- max_bottom_displacement=1-min(y3,y4)
Если какое-либо из идентифицированных перемещений превышает максимальную величину компенсации (которая в два раза больше коэффициента обрезки, как описано выше, и которая указывает, что непригодные области находятся в отображаемой области увеличенной области единичного квадрата), то угловые точки кадра сдвигаются на одну и ту же величину от стороны единичного квадрата таким образом, чтобы непригодные области не отображались. Ниже приведены соответствующие уравнения для сдвига угловых точек:
- если max_left_displacement>max_compensation, сдвиг 4 угловых точек влево на max_left_displacement-max_compensation
- если max_right_displacement>max_compensation, сдвиг 4 угловых точек вправо на max_right_displacement-max_compensation
- если max_top_displacement>max_compensation, сдвиг 4 угловых точек вверх на max_top_displacement-max_compensation
- если max_bottom_displacement>max_compensation, сдвиг 4 угловых точек вниз на max_bottom_displacement-max_compensation.
Сдвиг угловых точек указывает, что непригодные области будут отображаться даже в случае обрезки (блок 272).
[0061] После всех вышеупомянутых операций сдвига, 4 новые угловые точки могут обозначаться (x1',y1'), (x2',y2'), (x3',y3'), (x4',y4'). Затем вычислительная система вычисляет ограниченную компенсационную матрицу преобразования H_constrained_compensation, которая проецирует четыре угла единичного квадрата в GL координатах (x01,y01)=(-1,-1), (x02,y02)=(1,-1), (x03,y03)=(-1,1), (x04,y04)=(1,1) в 4 ограниченные угловые точки (x1',y1'), (x2',y2'), (x3',y3'), (x4',y4'), следующим образом:
zi'*[xi',yi',1]'=H_constrained_compensation*[x0i,y0i,1]'
В этом примере, [x0i,y0i,1]' - вектор 3×1, полученный транспонированием вектора [x0i,y0i,1]. [xi',yi',1]' - вектор 3×1, полученный транспонированием вектора [xi',yi',1]. zi' - масштабный коэффициент. Для 4 пар точек [x0i,y0i,1]' и [xi',yi',1]', иллюстративный алгоритм для оценивания матрицы описан в следующей книге по компьютерному зрению на примере алгоритма 4.1 (страница 91): ʺHartley, R., Zisserman, A.: Multiple View Geometry in Computer Vision. Cambridge University Press (2000),ʺ доступной по адресу ftp://vista.eng.tau.ac.il/dropbox/aviad/Hartley,%20Zisserman%20-%20Multiple%20View%20Geometry%20in%20Computer%20Vision.pdf
[0062] Затем H_constrained_compensation сохраняется как H_previous_compensation, которую можно использовать в вычислениях для стабилизации следующего кадра, как описано выше в отношении блока 230.
[0063] На блоке 280, вычислительная система модифицирует ограниченную компенсационную матрицу таким образом, что стабилизированное изображение будет увеличено для обрезки границы. В некоторых примерах, сначала вычислительная система идентифицирует масштабный коэффициент следующим образом:
zoom_factor=1/(1-2*cropping_ratio)
При этом вычислительная система удваивает коэффициент обрезки (например, посредством удвоения 15% значения 0,15 до 0,3), вычитания результирующего значения из 1 (например, для получения 0,7), и затем деления 1 на результат для получения масштабного коэффициента (например, деление 1 на 0,7 дает масштабный коэффициент 1,42). Затем вычислительная система может делить некоторые признаки ограниченной компенсационной матрицы для увеличения отображения на определенную величину следующим образом:
H_constrained_compensation[3,1]=H_constrained_compensation[3,1]/zoom_factor
H_constrained_compensation[3,2]=H_constrained_compensation[3,2]/zoom_factor
H_constrained_compensation[3,3]=H_constrained_compensation[3,3]/zoom_factor
[0064] На блоке 290, вычислительная система применяет модифицированную ограниченную компенсационную матрицу к текущему кадру для генерации обрезанной и стабилизированной версии текущего кадра. Иллюстративный способ применения ограниченной компенсационной матрицы (H_constrained_compensation) на входном кадре для создания выходного изображения можно описать следующим образом.
- z'*[x',y',1]'=H_constrained_compensation*[x,y,1]'
- [x,y,1]' - вектор 3×1, который представляет координату во входном кадре
- [x',y',1]' - вектор 3×1, который представляет координату в выходном кадре
- z' - масштабный коэффициент
- H_constrained_compensation - матрица 3×3, которая содержит 9 элементов:
[0065] Более подробно, для каждого пикселя [x,y] во входном кадре, найти положение [x',y'] в выходном кадре с использованием вышеупомянутого преобразования и копировать пиксельное значение из [x,y] во входном кадре в [x',y'] в выходном кадре. Альтернативно, для каждого пикселя [x',y'] в выходном кадре, найти положение [x,y] во входном кадре с использованием обратного преобразования и копировать пиксельное значение из [x,y] во входном изображении в [x',y'] в выходном кадре. Эти операции могут эффективно осуществляться в блоке обработки графики (GPT) вычислительных систем.
[0066] Процесс, описанный здесь для блоков 210-290, может повторяться для следующего кадра, причем некоторые значения из обработки текущего кадра используются для следующего кадра.
[0067] В различных реализациях, операции, которые осуществляются ʺв ответ наʺ другую операцию или ʺв результатеʺ нее (например, определение или идентификация), не осуществляются, если предыдущая операция не увенчалась успехом (например, если определение не было осуществлено). Операции, осуществляемые ʺавтоматическиʺ, представляют собой операции, осуществляемые без вмешательства пользователя (например, произвольного пользовательского ввода). Признаки в этом документе, описанные на условном языке, могут описывать необязательные реализации. В некоторых примерах, ʺпередачаʺ от первого устройства на второе устройство включает в себя размещение данных первым устройством в сети для приема вторым устройством, но может не включать в себя прием данных вторым устройством. Напротив, ʺприемʺ от первого устройства может включать в себя прием данных из сети, но может не включать в себя передачу данных первым устройством.
[0068] ʺОпределениеʺ посредством вычислительной системы может включать в себя запрашивание вычислительной системой другого устройства осуществлять определение и выдавать результаты в вычислительную систему. Кроме того, ʺотображениеʺ или ʺпредставлениеʺ посредством вычислительной системы может включать в себя отправку данных вычислительной системой на другое устройство, чтобы оно отображало или представляло упомянутую информацию.
[0069] В различных реализациях, операции, описанные как осуществляемые на матрице, означают операции, осуществляемые на этой матрице или версии этой матрицы, которая была модифицирована операцией, описанной в этом изобретении или ее эквивалентом.
[0070] На фиг. 3 показана блок-схема вычислительных устройств 300, 350, которые можно использовать для реализации систем и способов, описанных в этом документе, либо в качестве клиента, либо в качестве сервера или нескольких серверов. Вычислительное устройство 300 предназначено для представления различных форм цифровых компьютеров, например, портативных компьютеров, настольных компьютеров, рабочих станций, персональных цифровых помощников, серверов, ячеечных серверов, универсальных компьютеров и других подходящих компьютеров. Вычислительное устройство 350 предназначено для представления различных форм мобильных устройств, например, персональных цифровых помощников, сотовых телефонов, смартфонов и других аналогичных вычислительных устройств. Показанные здесь компоненты, их соединения и соотношения, и их функции, приведены только в качестве примеров и не призваны ограничивать реализации описанный и/или заявленные в этом документе.
[0071] Вычислительное устройство 300 включает в себя процессор 302, память 304, устройство 306 хранения, высокоскоростной интерфейс 308, подключенный к памяти 304 и высокоскоростным портам 310 расширения, и низкоскоростной интерфейс 312, подключенный к низкоскоростной шине 314 и устройству 306 хранения. Каждые из компонентов 302, 304, 306, 308, 310 и 312 соединены между собой с использованием различных шин, и могут быть установлены на общей материнской плате или другими подходящими способами. Процессор 302 может обрабатывать инструкции для исполнения на вычислительном устройстве 300, включающие в себя инструкции, хранящиеся в памяти 304 или устройстве 306 хранения для отображения графической информации для GUI на внешнем устройстве ввода/вывода, например, дисплее 316, подключенном к высокоскоростному интерфейсу 308. В других реализациях можно использовать подходящие множественные процессоры и/или множественные шины, совместно с множественными блоками памяти и типами памяти. Также множественные вычислительные устройства 300 могут быть соединены, причем каждое устройство обеспечивает части необходимых операций (например, в качестве банка серверов, группы ячеечных серверов или многопроцессорной системы).
[0072] Память 304 служит для хранения информации на вычислительном устройстве 300. В одной реализации, память 304 представляет собой блок или блоки энергозависимой памяти. В другой реализации, память 304 представляет собой блок или блоки энергонезависимой памяти. Память 304 также может быть другой формой компьютерно-считываемого носителя, например, магнитным или оптическим диском.
[0073] Устройство 306 хранения способно обеспечивать хранение большого объема данных для вычислительного устройства 300. В одной реализации, устройство 306 хранения может представлять собой или содержать компьютерно-считываемый носитель, например, устройство флоппи-диска, устройство жесткого диска, устройство оптического диска или ленточное устройство, флэш-память или другое аналогичное твердотельное запоминающее устройство, или массив устройств, включающих в себя устройства в сети хранения данных или других конфигурациях. Компьютерный программный продукт может быть вещественно реализован в носителе информации. Компьютерный программный продукт также может содержать инструкции, которые, при выполнении, осуществляют один или более способов, например, описанных выше. Носитель информации представляет собой компьютерно- или машиночитаемый носитель, например, память 304, устройство 306 хранения или память на процессоре 302.
[0074] Высокоскоростной контроллер 308 управляет операциями, требующими большой полосы для вычислительного устройства 300, тогда как низкоскоростной контроллер 312 управляет операциями, требующими меньшей полосы. Такое выделение функций является лишь примером. В одной реализации, высокоскоростной контроллер 308 подключен к памяти 304, дисплею 316 (например, через графический процессор или ускоритель), и к высокоскоростным портам 310 расширения, которые могут принимать различные карты расширения (не показаны). В реализации, низкоскоростной контроллер 312 подключен к устройству 306 хранения и низкоскоростному порту 314 расширения. Низкоскоростной порт расширения, который может включать в себя различные коммуникационные порты (например, USB, Bluetooth, Ethernet, беспроводной Ethernet) может быть подключен к одному или более устройствам ввода/вывода, например, клавиатуре, указательному устройству, сканеру или сетевому устройству, например, коммутатору или маршрутизатору, например, через сетевой адаптер.
[0075] Вычислительное устройство 300 может быть реализовано в нескольких разных формах, как показано на фигуре. Например, оно может быть реализовано как стандартный сервер 320 или несколько раз в группе таких серверов. Оно может быть реализовано как часть системы 324 стоечных серверов. Кроме того, оно может быть реализовано в персональном компьютере, например, портативном компьютере 322. Альтернативно, компоненты вычислительного устройства 300 могут быть объединены с другими компонентами мобильного устройства (не показано), например, устройства 350. Каждое из таких устройств может содержать одно или более из вычислительных устройств 300, 350, и вся система может состоять из множественных вычислительных устройств 300, 350, осуществляющих связь друг с другом.
[0076] Вычислительное устройство 350 включает в себя процессор 352, память 364, устройство ввода/вывода, например, дисплей 354, интерфейс 366 связи и приемопередатчик 368, помимо других компонентов. Устройство 350 также может быть снабжено устройством хранения, например, микроприводом или другим устройством, для обеспечения дополнительного хранилища. Каждый из компонентов 350, 352, 364, 354, 366 и 368 соединены между собой с использованием различных шин, и несколько компонентов может быть установлено на общей материнской плате или другими подходящими способами.
[0077] Процессор 352 может выполнять инструкции на вычислительном устройстве 350, включающие в себя инструкции, хранящиеся в памяти 364. Процессор может быть реализован как набор микросхем, которые включают в себя отдельные и множественные аналоговые и цифровые процессоры. Дополнительно, процессор может быть реализован с использованием любой из нескольких архитектур. Например, процессор может быть процессором CISC (компьютер со сложным набором инструкций), процессором RISC (компьютер с сокращенным набором инструкций), или процессором MISC (компьютер с минимальным набором инструкций). Процессор может обеспечивать, например, для координации других компонентов устройства 350, например, управления пользовательскими интерфейсами, приложений, выполняющихся устройством 350 и беспроводной связи устройством 350.
[0078] Процессор 352 может осуществлять связь с пользователем через интерфейс 358 управления и интерфейс 356 дисплея, подключенный к дисплею 354. Дисплей 354 может представлять собой, например, дисплей TFT (жидкокристаллический дисплей на тонкопленочных транзисторах) или дисплей OLED (на органических светодиодах) или дисплей, выполненный по другой подходящей технологии. Интерфейс 356 дисплея может содержать подходящую схему для возбуждения дисплея 354 для представления пользователю графической и другой информации. Интерфейс 358 управления может принимать команды от пользователя и преобразовывать их для подачи на процессор 352. Кроме того, внешний интерфейс 362 может обеспечивать связь с процессором 352, для обеспечения ближней связи устройства 350 с другими устройствами. Внешний интерфейс 362 может обеспечивать, например, проводную связь в некоторых реализациях или беспроводную связь в других реализациях, и также могут использоваться множественные интерфейсы.
[0079] Память 364 предназначена для хранения информации на вычислительном устройстве 350. Память 364 может быть реализована в виде одного или более из компьютерно-считываемого носителя или носителей, блока или блоков энергозависимой памяти или блока или блоков энергонезависимой памяти. Также может быть обеспечена дополнительная память 374, подключенная к устройству 350 через интерфейс 372 расширения, который может включать в себя, например, интерфейс карты SIMM (модуль с однорядным расположением микросхем памяти). Такая дополнительная память 374 может обеспечивать дополнительную область памяти для устройства 350, и в ней также могут храниться приложения или другая информация для устройства 350. В частности, дополнительная память 374 может включать в себя инструкции для осуществления или дополнения вышеописанных процессов, и также может включать в себя информацию защиты. Таким образом, например, дополнительная память 374 может обеспечивать модуль безопасности для устройства 350, и в ней могут хранятся инструкции, которые позволяют безопасно использовать устройство 350. Кроме того, защищенные приложения могут обеспечиваться через карты SIMM, совместно с дополнительной информацией, например, идентификационной информацией, размещенной на карте SIMM с защитой от взлома.
[0080] Память может включать в себя, например, флэш-память и/или память NVRAM, как рассмотрено ниже. В одной реализации, компьютерный программный продукт вещественно реализуется в носителе информации. Компьютерный программный продукт содержит инструкции, которые, при выполнении, осуществляют один или более способов, например описанных выше. Носитель информации представляет собой компьютерно- или машиночитаемый носитель, например, память 364, дополнительную память 374 или память на процессоре 352, которая может приниматься, например, на приемопередатчике 368 или внешнем интерфейсе 362.
[0081] Устройство 350 может осуществлять беспроводную связь через интерфейс 366 связи, который, при необходимости, может включать в себя схему цифровой обработки сигнала. Интерфейс 366 связи может обеспечивать связь согласно различным режимам или протоколам, в том числе, например, речевые вызовы GSM, SMS, EMS или обмен сообщениями MMS, CDMA, TDMA, PDC, WCDMA, CDMA2000 или GPRS. Такая связь может осуществляться, например, через радиочастотный приемопередатчик 368. Кроме того, связь ближнего действия может осуществляться, например с использованием Bluetooth, WiFi или другого такого приемопередатчика (не показан). Кроме того, модуль 370 приемника GPS (глобальная система позиционирования) может выдавать на устройство 350 дополнительные беспроводные данные, относящиеся к навигации и местоположению, которые могут использоваться, при необходимости, приложениями, выполняющимися на устройство 350.
[0082] Устройство 350 также может осуществлять речевую связь с использованием аудиокодек 360, который может принимать от пользователя речевую информацию и преобразовывать ее в пригодную цифровую информацию. Аудиокодек 360 может аналогично генерировать звук, слышимый пользователю, например, через громкоговоритель, например, в телефонной трубке устройства 350. Такой звук может включать в себя звук из речевых телефонных вызовов, может включать в себя записанный звук (например, речевые сообщения, музыкальные файлы и т.д.) и также может включать в себя звук, генерируемый приложениями, действующими на устройстве 350.
[0083] Вычислительное устройство 350 может быть реализовано в нескольких разных формах, как показано на фигуре. Например, оно может быть реализовано как сотовый телефон 380. Оно может быть реализовано как часть смартфона 382, персонального цифрового помощника или другого аналогичного мобильного устройства.
[0084] Дополнительно вычислительное устройство 300 или 350 может включать в себя флэш-накопители на основе универсальной последовательной шины (USB). На флэш-накопителях USB могут храниться операционные системы и другие приложения. Флэш-накопители USB могут включать в себя компоненты ввода/вывода, например, беспроводной передатчик или соединитель USB, который можно вставлять в порт USB другого вычислительного устройства.
[0085] Различные реализации описанных здесь систем и методов возможны в цифровой электронной схеме, интегральной схеме, ASIC специального назначения (специализированных интегральных схемам), компьютерном оборудовании, программно-аппаратном обеспечении, программном обеспечении и/или их комбинациях. Эти различные реализации могут включать в себя реализацию в одной или более компьютерных программах, которые могут исполняться и/или интерпретироваться на программируемой системе, включающей в себя, по меньшей мере, один программируемый процессор особого или общего назначения, подключенный для приема данных и инструкций из системы хранения, и для передачи данных и инструкций в нее, по меньшей мере, одно устройство ввода, и, по меньшей мере, одно устройство вывода.
[0086] Эти компьютерные программы (также известные как программы, программное обеспечение, прикладные программы или код) включают в себя машинные инструкции для программируемого процессора, и могут быть реализованы на высокоуровневом процедурно- и/или объектно-ориентированном языке программирования и/или на ассемблере/ машинном языке. Используемые здесь термины ʺмашиночитаемый носительʺ, ʺкомпьютерно-считываемый носительʺ относятся к любому компьютерному программному продукту, аппарату и/или устройству (например, магнитным дискам, оптическим дискам, памяти, программируемым логическим устройствам (PLD)), используемому для передачи машинных инструкций и/или данных на программируемый процессор, включающий в себя машиночитаемый носитель, который принимает машинные инструкции в качестве машиночитаемого сигнала. Термин ʺмашиночитаемый сигналʺ относится к любому сигналу, используемому для передачи машинных инструкций и/или данных на программируемый процессор.
[0087] Для обеспечения взаимодействия с пользователем, описанные здесь системы и методики могут быть реализованы на компьютере, имеющем устройство отображения (например, монитор CRT (электронно-лучевая трубка) или LCD (жидкокристаллический дисплей)) для отображения информации пользователю и клавиатуру и указательное устройство (например, мышь или шаровой манипулятор), посредством которого пользователь может обеспечивать ввод на компьютер. Для обеспечения взаимодействия с пользователем также можно использовать другие виды устройств; например, обратная связь, обеспечиваемая пользователю, может быть любой формой сенсорной обратной связи (например, зрительной обратной связью, слуховой обратной связью или тактильной обратной связью); и ввод от пользователя может приниматься в любой форме, включающей в себя акустический, речевой или тактильный ввод.
[0088] Описанные здесь системы и методики могут быть реализованы в вычислительной системе, которая включает в себя скрытый компонент (например, сервер данных), или которая включает в себя промежуточный компонент (например, сервер приложений), или которая включает в себя интерфейсный компонент (например, компьютер-клиент, имеющий графический пользовательский интерфейс или веб-браузер, через который пользователь может взаимодействовать с реализацией описанных здесь систем и методов), или любую комбинацию таких скрытых, промежуточных или интерфейсных компонентов. Компоненты системы могут быть соединены между собой любой формой или носителем передачи цифровых данных (например, сетью связи). Примеры сетей связи включают в себя локальную сеть (ʺLANʺ), глобальную сеть (ʺWANʺ), одноранговые сети (имеющие специальные или статические элементы), инфраструктуры сетевого вычисления и интернет.
[0089] Вычислительная система может включать в себя клиенты и серверы. Клиент и сервер, в целом, удалены друг от друга и обычно взаимодействуют через сеть связи. Соотношение клиента и сервера возникает вследствие компьютерных программ, выполняющихся на соответствующих компьютерах и имеющих клиент-серверное отношение друг с другом.
[0090] Хотя выше было подробно описано несколько реализаций, возможны другие модификации. Кроме того, можно использовать другие механизмы для осуществления систем и способов, описанных в этом документе. Кроме того, логические потоки, изображенные на фигурах, не требуют конкретного показанного порядка, или последовательного порядка, для достижения желаемых результатов. Можно обеспечивать другие этапы, или этапы можно исключать из описанных потоков, и другие компоненты можно добавлять в описанные системы или удалять из них. Соответственно, другие реализации находятся в объеме нижеследующей формулы изобретения.