СГЛАЖИВАНИЕ И ВИЗУАЛИЗАЦИЯ ЦИФРОВОГО РУКОПИСНОГО ВВОДА С ПРИМЕНЕНИЕМ GPU
SMOOTHING AND VISUALIZATION OF DIGITAL HANDWRITTEN INPUT USING GPU

Уровень техники
"Цифровой рукописный ввод" означает один или более росчерков, которые записываются от инструмента ввода, такого как мышь, стилус/перо на планшете-цифрователе, емкостный стилус или емкостный объект (например, палец) на цифрователе емкостных касаний либо стилус/перо на экране отображения, интегрированном с планшетом-цифрователем, который может использовать или не использовать сенсорный экран отображения. При использовании в данном документе, термин "рукописный ввод" используется взаимозаменяемо и означает "цифровой рукописный ввод". Дополнительно, термины "перо" и/или "стилус" используются обобщенно и взаимозаменяемо таким образом, что они означают любой тип инструмента ввода. Каждый росчерк может сохраняться в качестве одной или более точек рукописного ввода, и каждая точка рукописного ввода может содержать различные свойства, включающие в себя, только в качестве примера, давление, наклон, азимут и координаты (X, Y), соответствующие позиции инструмента ввода. Например, пользователь может перемещать перо вдоль сенсорного экрана отображения компьютерной системы, с тем чтобы рисовать линию или кривую, и компьютерная система может дискретизировать координаты (X, Y) вдоль траектории позиции наконечника инструмента ввода во времени (или в любом другом интервале, как известно специалистам в данной области техники) по мере того, как пользователь перемещает инструмент ввода. Эти координаты представляют точки вдоль кривой или линии, вводимой пользователем, и упоминаются в данном документе как "точки рукописного ввода".
Сущность изобретения
Данная сущность изобретения предоставлена для того, чтобы представлять в упрощенной форме выбор концепций, которые дополнительно описаны ниже в подробном описании. Эта сущность не имеет намерение идентифицировать ключевые или важнейшие признаки заявленного предмета изобретения, а также не имеет намерение использоваться в качестве помощи при определении объема заявленного предмета изобретения.
В различных вариантах осуществления, предусмотрены системы, способы и машиночитаемые носители хранения данных для эффективного сглаживания росчерка рукописного ввода в реальном времени и прогнозирования траектории. Множество точек рукописного ввода, включающих в себя, по меньшей мере, первую и вторую точку рукописного ввода, принимаются. На основе, по меньшей мере, первой и второй точек рукописного ввода (при этом точное количество определяется, по меньшей мере, частично, при получении надлежащего приближения относительно принимаемых впоследствии точек рукописного ввода, как подробнее описано ниже), вычисляется активная аппроксимация Безье. Последовательно во времени относительно первой и второй точек рукописного ввода, принимается третья точка рукописного ввода, и определяется, согласуется ли надлежащим образом третья точка рукописного ввода с активной аппроксимацией Безье. Третья точка рукописного ввода определяется как согласующаяся надлежащим образом с активной аппроксимацией Безье, если определено то, что пользователь неспособен обнаруживать разность между ними после визуализации. Такое определение, в общем, основано на предварительно определенном пороговом разностном значении. Если определено, что третья точка рукописного ввода согласуется надлежащим образом с активной аппроксимацией Безье, активная аппроксимация Безье обновляется таким образом, что она включает в себя третью точку рукописного ввода. Тем не менее, если определено, что третья точка рукописного ввода не согласуется надлежащим образом с активной аппроксимацией Безье, активная аппроксимация Безье завершается, и вычисляется новая аппроксимация Безье. Выполняется визуализация сглаженного вывода рукописного ввода, содержащего первую, вторую и третью точки рукописного ввода в ассоциации с поверхностью приема росчерка, например, сенсорным экраном отображения.
Варианты осуществления настоящего изобретения обеспечивают ввод с помощью цифрового рукописного ввода, который выглядит сглаженным в течение и после ввода с помощью росчерка, даже при значительных уровнях масштабирования (например, уровнях масштабирования 200-400%). Варианты осуществления настоящего изобретения дополнительно обеспечивают сглаживание и визуализацию росчерков цифрового рукописного ввода таким образом, что изменения росчерка на основе сглаживания практически не воспринимаются пользователем в ходе ввода с помощью росчерка или после росчерка. Еще дополнительно, в соответствии с вариантами осуществления настоящего документа, время задержки на визуализацию не увеличивается и зачастую снижается посредством использования технологий прогнозирования, подробнее описанных в данном документе ниже.
Эти и другие признаки изобретения должны становиться очевидными при рассмотрении нижеприведенного подробного описания. Специалистам в данной области техники, в свете настоящего описания изобретения, должно быть очевидным, что альтернативные комбинации аспектов изобретения, отдельно или в комбинации с одним или более элементов этапов, заданных в данном документе, могут использоваться в качестве модификаций или изменений изобретения либо в качестве части изобретения. Подразумевается, что письменное описание изобретения, содержащееся в данном документе, охватывает такие модификации и изменения.
Краткое описание чертежей
Вышеизложенная сущность, а также нижеприведенное подробное описание изобретения лучше понимаются при их рассмотрении вместе с прилагаемыми чертежами, которые включены в качестве примера, а не в качестве ограничения касательно заявленного изобретения. На прилагаемых чертежах, элементы помечаются ссылками с номерами, в которых первая цифра трехзначной ссылки с номером и первые две цифры четырехзначной ссылки с номером указывают номер чертежа, на котором первый раз иллюстрируется элемент. Идентичная ссылка с номером на различных чертежах означает идентичный или аналогичный элемент.
Фиг. 1 является блок-схемой примерного вычислительного окружения, подходящего для использования в реализации вариантов осуществления настоящего изобретения;
Фиг. 2 является блок-схемой примерной вычислительной системы, в которой могут использоваться варианты осуществления изобретения;
Фиг. 3 является принципиальной схемой, показывающей примерные "плохие" артефакты непрерывного сплайна (кривой) C0, который может формироваться в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 4 является принципиальной схемой, показывающей примерное неустойчивое поведение, которое может формироваться посредством модуля непрерывного приближения C1 в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 5 является принципиальной схемой, показывающей примерный непрерывный сплайн, при отсутствии неустойчивого поведения, показанного на фиг. 4, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 6 является принципиальной схемой, показывающей примерные векторы прогнозирования, реализации и ошибок для прогнозирования на пять точек вперед, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 7 является принципиальной схемой, иллюстрирующей сегмент росчерка рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 8 является блок-схемой последовательности операций, показывающей примерный способ для визуализации рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 9 является принципиальной схемой, иллюстрирующей примерную реализацию мозаичной диаграммы экземпляров, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 10 является принципиальной схемой, иллюстрирующей другую примерную реализацию мозаичной диаграммы экземпляров, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 11 является принципиальной схемой двух смежных точек рукописного ввода (при условии, что M является единичной матрицей), в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 12 является принципиальной схемой, иллюстрирующей детализацию вокруг P(i+1) (при условии, что TopOrBottom=0, StartOrEnd=1, и M является единичной матрицей), в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 13 является принципиальной схемой, иллюстрирующей детализацию части по фиг. 12 вокруг P+D (при условии, что TopOrBottom=0, StartOrEnd=1, и M является единичной матрицей);
Фиг. 14 является блок-схемой последовательности операций, иллюстрирующей примерный способ для сглаживания ввода с помощью цифрового рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения;
Фиг. 15 является блок-схемой последовательности операций, иллюстрирующей примерный способ для сглаживания и визуализации ввода с помощью цифрового рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения; и
Фиг. 16 является блок-схемой последовательности операций, иллюстрирующей другой примерный способ для сглаживания и визуализации ввода с помощью цифрового рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения.
Подробное описание изобретения
Предмет настоящего изобретения конкретно описывается в данном документе, чтобы удовлетворять установленным требованиям. Тем не менее, само описание не имеет намерение ограничивать объем защиты этого патента. Наоборот, изобретатели предполагают, что заявленный предмет изобретения также может быть осуществлен другими способами, так что он включает в себя другие этапы или комбинации этапов, аналогичные этапам, описанным в этом документе, в связи с другими современными или будущими технологиями. Более того, хотя термины "этап" и/или "блок" могут использоваться в данном документе для того, чтобы означать различные элементы используемых способов, термины не должны быть интерпретированы как подразумевающие какой-либо отдельный порядок для/между различными этапами, раскрытыми в данном документе, за исключением и кроме случаев, когда порядок отдельных этапов описывается явно.
Визуализация цифрового рукописного ввода испытывает ряд проблем, включающих в себя рукописный ввод, не сглаженный в ходе операций масштабирования, а вместо этого имеющий ступенчатый внешний вид, увеличение времени задержки (например, вследствие кэширования и/или сглаживания и визуализации после росчерка), и изменение цвета рукописного ввода или других характеристик внешнего вида, когда перо или другой инструмент ввода снимается с приемной поверхности (т.е. после росчерка).
Различные аспекты технологии, описанной в данном документе, в общем, направлены на системы, способы и машиночитаемые носители хранения данных для эффективного сглаживания росчерка рукописного ввода в реальном времени, прогнозирования траектории и визуализации за счет использования GPU (графического процессора). Множество точек рукописного ввода, включающих в себя, по меньшей мере, первую и вторую точку рукописного ввода, принимаются по мере того, как соответствующие точки рукописного ввода оцифровываются. На основе, по меньшей мере, первой и второй точек рукописного ввода, вычисляется активная аппроксимация Безье. Специалисты в данной области техники должны понимать, что аппроксимация или кривая Безье представляет собой параметрическую кривую, зачастую используемую для того, чтобы моделировать плавные кривые в визуализации графики. При использовании в данном документе, аппроксимация Безье считается "активной", если она представляет собой кривую или аппроксимацию, которой принадлежит последняя принимаемая и обработанная точка рукописного ввода (в этом случае, вторая точка рукописного ввода). Точное количество точек рукописного ввода, используемых в активной аппроксимации Безье, зависит, по меньшей мере, частично от получения надлежащего приближения для принимаемых впоследствии точек рукописного ввода. Иными словами, N точек рукописного ввода могут накапливаться в целях приближения, причем значение N продолжает расти до тех пор, пока надлежащее приближение более не является возможным, как подробнее описано ниже.
Последовательно позднее во времени относительно первой и второй точек рукописного ввода, принимается третья точка рукописного ввода, и определяется, согласуется ли надлежащим образом третья точка рукописного ввода с активной аппроксимацией Безье. Третья точка рукописного ввода определяется как согласующаяся надлежащим образом с активной аппроксимацией Безье если определено то, что пользователь неспособен обнаруживать разность между ними после визуализации. Такое определение, в общем, основано на предварительно определенном пороговом разностном значении, например, в единицах в 10 гиметрик (0,1 мм). Если определено, что третья точка рукописного ввода согласуется надлежащим образом с активной аппроксимацией Безье, активная аппроксимация Безье обновляется таким образом, что она включает в себя третью точку рукописного ввода. В вариантах осуществления, "обновленная" аппроксимация Безье может считаться "новой" аппроксимацией или кривой Безье. Тем не менее, если определено, что третья точка рукописного ввода не согласуется надлежащим образом с активной аппроксимацией Безье, активная аппроксимация Безье завершается, и вычисляется другая новая аппроксимация Безье. За счет использования GPU выполняется визуализация результирующего сглаженного вывода рукописного ввода, причем результирующий вывод содержит первую, вторую и третью точки рукописного ввода, в ассоциации с поверхностью приема росчерка, например, сенсорным экраном отображения. (Специалисты в данной области техники должны понимать и принимать во внимание, что тогда как кубическое сглаживание Безье главным образом представляет собой квадратичное сглаживание Безье, описанное в данном документе, сглаживание Безье со степенью четыре и выше или любой другой известный алгоритм сглаживания может быть использован в вариантах осуществления настоящего документа).
Соответственно, один вариант осуществления настоящего изобретения направлен на способ, осуществляемый посредством одного или более вычислительных устройств, включающих в себя, по меньшей мере, один процессор, причем способ предназначен для сглаживания ввода с помощью цифрового рукописного ввода. Способ включает в себя прием первой точки рукописного ввода, прием второй точки рукописного ввода, вычисление активной кубической аппроксимации Безье на основе первой и второй точек рукописного ввода, прием третьей точки рукописного ввода (причем третья точка рукописного ввода принимается последовательно позднее во времени, чем первая и вторая точки рукописного ввода), определение, согласуется ли надлежащим образом третья точка рукописного ввода с активной кубической аппроксимацией Безье, и вычисление новой кубической аппроксимации Безье с использованием первой, второй и третьей точек рукописного ввода. Новая кубическая аппроксимация Безье может содержать обновленную активную кубическую аппроксимацию Безье, если определяется то, что третья точка рукописного ввода согласуется надлежащим образом с активной кубической аппроксимацией Безье, или другую новую кубическую аппроксимацию Безье, если определяется то, что третья точка рукописного ввода не согласуется надлежащим образом с активной кубической аппроксимацией Безье.
В другом варианте осуществления, настоящее изобретение направлено на систему, содержащую центральный процессор (CPU) и графический процессор (GPU). CPU сконфигурирован с возможностью последовательно принимать первую и вторую точки рукописного ввода, формировать активный сглаженный фрагмент рукописного ввода на основе первой и второй точек рукописного ввода, принимать третью точку рукописного ввода (последовательно позднее во времени), определять, согласуется ли надлежащим образом третья точка рукописного ввода с активным сглаженным фрагментом рукописного ввода, и при определении того, что третья точка рукописного ввода согласуется надлежащим образом с активным сглаженным фрагментом рукописного ввода, обновлять активный сглаженный фрагмент рукописного ввода. Альтернативно, при определении того, что третья точка рукописного ввода не согласуется надлежащим образом с активным сглаженным фрагментом рукописного ввода, CPU сконфигурирован с возможностью завершать активный сглаженный фрагмент рукописного ввода и инициировать второй сглаженный фрагмент рукописного ввода. GPU сконфигурирован с возможностью выполнять визуализацию сглаженного вывода рукописного ввода, содержащего первую, вторую и третью точки рукописного ввода в ассоциации с поверхностью отображения.
В еще одном другом варианте осуществления, настоящее изобретение направлено на устройство, содержащее, по меньшей мере, один процессор и запоминающее устройство, сохраняющее процедуру сглаживания и визуализации цифрового рукописного ввода. При выполнении посредством, по меньшей мере, одного процессора, процедура сглаживания и визуализации цифрового рукописного ввода инструктирует устройству принимать первую точку рукописного ввода; принимать вторую точку рукописного ввода; вычислять активную кубическую аппроксимацию Безье на основе первой и второй точек рукописного ввода; принимать третью точку рукописного ввода (последовательно позднее во времени относительно первой и второй точек рукописного ввода); определять, согласуется ли надлежащим образом третья точка рукописного ввода с активной кубической аппроксимацией Безье; вычислять новую кубическую аппроксимацию Безье с использованием первой, второй и третьей точек рукописного ввода; и выполнять визуализацию сглаженного вывода рукописного ввода, содержащего первую, вторую и третью точки рукописного ввода в ассоциации с поверхностью отображения.
После краткого описания общего представления вариантов осуществления настоящего изобретения, ниже описывается примерное операционное окружение, в котором могут реализовываться варианты осуществления настоящего изобретения, чтобы обеспечить общий контекст для различных аспектов настоящего изобретения. Ссылаясь на чертежи, в общем, и сначала на фиг. 1, в частности, примерное операционное окружение для реализации вариантов осуществления настоящего изобретения показано и обозначено, в общем, как вычислительное устройство 100. Вычислительное устройство 100 является всего лишь одним примером подходящего вычислительного окружения и не имеет намерение предлагать какое-либо ограничение относительно объема использования или функциональности вариантов осуществления изобретения. Вычислительное устройство 100 ни при каких условиях не должно интерпретироваться как имеющее какую-либо зависимость или требование, связанное с каким-либо одним компонентом или с какой-либо комбинацией проиллюстрированных компонентов.
Варианты осуществления изобретения могут описываться в общем контексте компьютерного кода или машиноиспользуемых инструкций, включающих в себя машиноиспользуемые или машиноисполняемые инструкции, такие как программные модули, выполняемые посредством компьютера или другой машины, такой как персональное цифровое устройство или другое карманное устройство. Обычно, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.п. и/или означают код, который выполняет конкретные задачи или реализует конкретные абстрактные типы данных. Варианты осуществления изобретения могут осуществляться на практике во множестве конфигураций системы, включающих в себя, но не только, карманные устройства, бытовую электронную аппаратуру, компьютеры общего назначения, более специализированные вычислительные устройства и т. п. Варианты осуществления изобретения также могут осуществляться на практике в распределенных вычислительных окружениях, в которых задачи выполняются посредством удаленных устройств обработки, которые связаны через сеть связи.
С дальнейшей ссылкой на фиг. 1, вычислительное устройство 100 включает в себя шину 110, которая непосредственно или косвенно соединяет следующие устройства: запоминающее устройство 112, один или более процессоров 114, один или более компонентов 116 представления, один или более портов 118 ввода-вывода, один или более компонентов 120 ввода-вывода и иллюстративный источник 122 питания. Шина 110 представляет то, что может представлять собой одну или более шин (к примеру, адресную шину, шину данных или комбинацию вышеозначенного). Хотя различные блоки по фиг. 1 показаны с линиями для понятности, в реальности, эти блоки представляют логические, не обязательно фактические компоненты. Например, можно считать, что компонент представления, такой как устройство отображения, должен представлять собой компонент ввода/вывода. Так же, процессоры имеют запоминающее устройство. Изобретатели признают, что таков характер области техники, и вновь повторяют, что схема на фиг. 1 является просто иллюстрирующей примерное вычислительное устройство, которое может использоваться в связи с одним или более вариантов осуществления настоящего изобретения. Различие между такими категориями, как "рабочая станция", "сервер", "дорожный компьютер", "карманное устройство" и т.д., не проводится, поскольку все они рассматриваются в пределах объема по фиг. 1 и ссылаются на "вычислительное устройство".
Вычислительное устройство 100 типично включает в себя множество машиночитаемых носителей. Машиночитаемые носители могут представлять собой любые доступные носители, которые являются доступными посредством вычислительного устройства 100, и включают в себя энергозависимые и энергонезависимые носители, съемные и стационарные носители. Машиночитаемые носители содержат компьютерные носители хранения данных и среды связи, причем компьютерные носители хранения данных исключают сигналы по сути. Компьютерные носители хранения данных включают в себя энергозависимые и энергонезависимые, съемные и стационарные носители, реализованные любым способом или технологией для хранения информации, такой как машиночитаемые инструкции, структуры данных, программные модули или другие данные. Компьютерные носители хранения данных включают в себя, но не только, RAM, ROM, EEPROM, флэш-память или другую технологию запоминающих устройств, CD-ROM, универсальные цифровые диски (DVD) или другие устройства хранения данных на оптических дисках, магнитные дискеты, магнитную ленту, устройства хранения данных на магнитных дисках или другие магнитные устройства хранения данных либо любой другой носитель, который могут использоваться для того, чтобы сохранять требуемую информацию, и к которому может осуществляться доступ посредством вычислительного устройства 100. С другой стороны, среды связи осуществляют машиночитаемые инструкции, структуры данных, программные модули или другие данные в модулированном сигнале данных, таком как волновая несущая или другой транспортный механизм, и включают в себя любые среды доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет одну или более характеристик, заданных или измененных таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среды связи включают в себя проводные среды, такие как проводная сеть или прямое проводное соединение, и беспроводные среды, такие как акустические, радиочастотные (RF), инфракрасные и другие беспроводные среды. Комбинации любых из вышеприведенных элементов также должны быть включены в объем машиночитаемых носителей.
Запоминающее устройство 112 включает в себя компьютерные носители хранения в форме энергозависимого и/или энергонезависимого запоминающего устройства. Запоминающее устройство может быть съемным, несъемным или комбинацией означенного. Примерные аппаратные устройства включают в себя полупроводниковое запоминающее устройство, жесткие диски, накопители на оптических дисках и т. п. Вычислительное устройство 100 включает в себя один или более процессоров, которые считывают данные из различных объектов, таких как запоминающее устройство 112 или компоненты 120 ввода-вывода. Компонент(ы) 116 представления представляют индикаторы данных пользователю или другому устройству. Примерные компоненты представления включают в себя устройство отображения, динамик, печатающий компонент, вибрирующий компонент и т. п.
Порты 118 ввода-вывода обеспечивают возможность логического соединения вычислительного устройства 100 с другими устройствами, включающими в себя компоненты 120 ввода-вывода, некоторые из которых могут быть встроенными. Иллюстративные компоненты ввода-вывода включают в себя микрофон, джойстик, игровой планшет, спутниковую антенну, сканер, принтер, устройство отображения, беспроводное устройство, контроллер (такой как стилус, клавиатура и мышь), естественный пользовательский интерфейс (NUI) и т.п. В вариантах осуществления, обеспечен цифрователь пера (не показан) и прилагаемый инструмент ввода (также не показан, но который может включать в себя, только в качестве примера, перо или стилус), чтобы в цифровой форме захватывать пользовательский ввод от руки. Соединение между цифрователем пера и процессором(ами) 114 может быть непосредственным или через связь с использованием последовательного порта, параллельного порта и/или другого интерфейса и/или известной в данной области техники системной шины. Кроме того, компонент ввода с помощью цифрователя может представлять собой компонент, отдельный от компонента вывода, к примеру, устройство отображения, или, в некоторых вариантах осуществления, применимая область ввода цифрователя может быть одинакового протяжения с областью отображения устройства отображения, интегрированной с устройством отображения либо может существовать в качестве отдельного устройства, накладываемого или иным образом присоединяемого к устройству отображения. Все без исключения такие варьирования и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.
NUI обрабатывает воздушные жесты, голос или другие физиологические вводы, сформированные пользователем. Надлежащие NUI-вводы могут интерпретироваться в качестве росчерков рукописного ввода для представления в ассоциации с вычислительным устройством 100. Эти запросы могут передаваться в надлежащий сетевой элемент для последующей обработки. NUI реализует любую комбинацию распознавания речи, распознавания касаний и стилуса, распознавания лиц, биометрического распознавания, распознавания жестов как на экране, так и рядом с экраном, воздушных жестов, слежения за положением головы и глаз и распознавания касаний, ассоциированных с дисплеями на вычислительном устройстве 100. Вычислительное устройство 100 может быть оснащено камерами с эффектом глубины, к примеру, системами стереоскопических камер, системами камер для съемки в инфракрасном диапазоне, системами RGB-камер и их комбинациями для обнаружения и распознавания жестов. Дополнительно, вычислительное устройство 100 может быть оснащено акселерометрами или гироскопами, которые обеспечивают обнаружение движения. Вывод акселерометров или гироскопов может предоставляться на дисплей вычислительного устройства 100, чтобы выполнять визуализацию иммерсивной дополненной реальности или виртуальной реальности.
Аспекты предмета изобретения, описанные в данном документе, могут быть описаны в общем контексте машиноисполняемых инструкций, таких как программные модули, выполняемые посредством мобильного устройства. В общем, программные модули включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Аспекты предмета изобретения, описанные в данном документе, также могут быть осуществлены на практике в распределенных вычислительных окружениях, в которых задачи выполняются посредством удаленных устройств обработки, которые связаны через сеть связи. В распределенном вычислительном окружении, программные модули могут быть размещены как на локальных, так и на удаленных компьютерных носителях хранения данных, включающих в себя запоминающие устройства. Машиноприменимые инструкции формируют интерфейс, чтобы обеспечивать возможность компьютеру реагировать согласно источнику ввода. Инструкции взаимодействуют с другими сегментами кода, чтобы инициировать множество задач в ответ на данные, принимаемые в сочетании с источником принимаемых данных.
Как изложено выше, варианты осуществления настоящего изобретения обеспечивают системы, способы и машиночитаемые носители хранения данных для систем, способов и машиночитаемых носителей хранения данных, обеспеченных для эффективного сглаживания росчерка рукописного ввода в реальном времени, прогнозирования траектории и визуализации росчерка рукописного ввода за счет использования GPU. Со ссылкой на фиг. 2, обеспечена блок-схема, иллюстрирующая примерную вычислительную систему 200, в которой могут использоваться варианты осуществления настоящего изобретения. Обычно, вычислительная система 200 иллюстрирует окружение, в котором ввод с помощью цифрового рукописного ввода выглядит сглаженным в течение и после ввода с помощью росчерка, даже при значительных уровнях масштабирования. Вычислительная система 200 дополнительно иллюстрирует окружение, в котором сглаживание и визуализация росчерков цифрового рукописного ввода обеспечены таким образом, что изменения росчерка на основе сглаживания и/или другой обработки практически не воспринимаются пользователем в ходе ввода с помощью росчерка или после росчерка. Еще дополнительно, вычислительная система 200 иллюстрирует окружение, в котором время задержки на визуализацию не увеличивается и зачастую снижается, по меньшей мере, частично, посредством использования технологий прогнозирования, подробнее описанных в данном документе ниже.
В числе других компонентов (не показаны), вычислительная система 200, в общем, включает в себя пользовательское вычислительное устройство 210, сконфигурированное с возможностью приема ввода с помощью цифрового рукописного ввода и предоставления сглаженного вывода рукописного ввода в ассоциации с дисплеем 224, и механизм 212 сглаживания рукописного ввода, сконфигурированный с возможностью сглаживания и прогнозирования будущего ввода с помощью росчерка рукописного ввода, как подробнее описано ниже. В вариантах осуществления (и как показано на фиг. 2), пользовательское вычислительное устройство 210 и механизм 212 сглаживания рукописного ввода могут поддерживать связь между собой через сеть 214. Сеть 214 может включать в себя, без ограничения, одну или более локальных вычислительных сетей (LAN) и/или глобальных вычислительных сетей (WAN). Такие сетевые окружения широко распространены в офисах, корпоративных компьютерных сетях, сетях intranet и в Интернете. Соответственно, сеть 214 не описывается подробнее в данном документе.
Следует понимать, что любое число пользовательских вычислительных устройств 210 и/или механизмов 212 сглаживания рукописного ввода может использоваться в вычислительной системе 200 в пределах объема вариантов осуществления настоящего изобретения. Каждое из них может содержать одно устройство/интерфейс или несколько устройств/интерфейсов, взаимодействующих в распределенном окружении. Например, механизм 212 сглаживания рукописного ввода может содержать несколько устройств и/или модулей, размещаемых в распределенном окружении, которые совместно обеспечивают функциональность механизма 212 сглаживания рукописного ввода, описанного в данном документе. Дополнительно, другие компоненты или модули (не показаны) также могут быть включены в вычислительную систему 200.
В некоторых вариантах осуществления, один или более проиллюстрированных компонентов/модулей могут реализовываться как автономные приложения. В других вариантах осуществления, один или более проиллюстрированных компонентов/модулей могут реализовываться через пользовательское вычислительное устройство 210, механизм 212 сглаживания рукописного ввода или как Интернет-услуга. Специалисты в данной области техники должны понимать, что компоненты/модули, проиллюстрированные на фиг. 2, являются примерными по своему характеру и по числу и не должны истолковываться в качестве ограничения. Любое число компонентов/модулей может использоваться для того, чтобы достигать требуемой функциональности в пределах объема вариантов осуществления настоящего документа. Дополнительно, компоненты/модули могут быть расположены на любом числе механизмов 212 сглаживания рукописного ввода и/или пользовательских вычислительных устройств 210. Только в качестве примера, механизм 212 сглаживания рукописного ввода может быть обеспечен в качестве одного вычислительного устройства, кластера вычислительных устройств или вычислительного устройства, удаленного от одного или более оставшихся компонентов.
Следует понимать, что эта и другие компоновки, описанные в данном документе, изложены только в качестве примеров. Другие компоновки и элементы (например, машины, интерфейсы, функции, порядки и группировки функций и т.д.) могут использоваться в дополнение или вместо показанных и/или описанных компоновок и элементов, и некоторые элементы вообще могут опускаться. Дополнительно, многие элементы, описанные в данном документе, представляют собой функциональные объекты, которые могут реализовываться как дискретные или распределенные компоненты либо в сочетании с другими компонентами и в любой подходящей комбинации и местоположении. Различные функции, описанные в данном документе как выполняемые посредством одного или более объектов, могут выполняться посредством аппаратных средств, микропрограммного обеспечения, приложений, драйверов и/или программного обеспечения. Например, различные функции могут выполняться посредством процессора, выполняющего инструкции, сохраненные в запоминающем устройстве.
Пользовательское вычислительное устройство 210 может включать в себя, например, любой тип вычислительного устройства, к примеру, вычислительное устройство 100, описанное со ссылкой на фиг. 1. Как проиллюстрировано, пользовательское вычислительное устройство 210 включает в себя компонент 216 приема ввода с помощью рукописного ввода, компонент 218 передачи ввода с помощью рукописного ввода, компонент 220 приема вывода сглаженного (и, в вариантах осуществления, расширенного) росчерка рукописного ввода и GPU 222 для визуализации сглаженного вывода рукописного ввода в ассоциации с дисплеем 224. Компонент 216 приема ввода с помощью рукописного ввода сконфигурирован с возможностью принимать пользовательский ввод росчерков рукописного ввода, в общем, вводимый через компонент ввода-вывода, такой как перо или стилус. Компонент 218 передачи ввода с помощью рукописного ввода сконфигурирован с возможностью передавать росчерки рукописного ввода, принятые посредством компонента 216 приема ввода с помощью рукописного ввода, в механизм 212 сглаживания рукописного ввода, например, через сеть 214. Компонент 220 приема сглаженного вывода росчерка рукописного ввода сконфигурирован с возможностью принимать (в общем, из механизма 212 сглаживания рукописного ввода через сеть 214, как подробнее описано ниже) сглаженный вывод рукописного ввода для визуализации в ассоциации с дисплеем 224. GPU 222 сконфигурирован с возможностью обрабатывать (как подробнее описано ниже) принимаемый сглаженный вывод рукописного ввода для визуализации в ассоциации с дисплеем 224.
Следует отметить, что функциональность, описанная в данном документе как выполняемая посредством любого компонента пользовательского вычислительного устройства 210, может выполняться посредством любого другого приложения, прикладного программного обеспечения, пользовательского интерфейса и т.п. допускающего визуализацию графического контента. Дополнительно следует отметить, что варианты осуществления настоящего изобретения являются в равной степени применимыми к мобильным вычислительным устройствам и к устройствам, разрешающим ввод с помощью жестов, сенсорный ввод и/или голосовой ввод. Все без исключения такие варьирования и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.
Как проиллюстрировано, механизм 212 сглаживания рукописного ввода включает в себя модуль 226 приближения с помощью сплайнов, компонент 232 прогнозирования рукописного ввода и компонент 234 визуализации рукописного ввода. Модуль 226 приближения с помощью сплайнов сконфигурирован с возможностью аппроксимировать росчерк точек рукописного ввода с помощью набора кубических сегментов Безье. В модуль 226 приближения с помощью сплайнов предоставляется одна точка рукописного ввода за один раз, и для каждой новой точки рукописного ввода, он сконфигурирован с возможностью либо обновлять активный сегмент Безье, либо инициировать новый сегмент Безье, если новая точка рукописного ввода не может достаточно хорошо согласовываться с активным сегментом Безье. Таким образом, модуль 226 приближения с помощью сплайнов включает в себя два субкомпонента: модуль 228 приближения Безье и компонент 230 сегментации.
Модуль 228 приближения Безье сконфигурирован с возможностью поддерживать набор активных точек, которые принимаются последовательно по одной за один раз по мере того, как они оцифровываются. Каждый раз, когда набор обновляется, модуль 228 приближения Безье сконфигурирован с возможностью вычислять новую кубическую аппроксимацию Безье. Тем не менее, активный набор не обязательно содержит все точки с начала росчерка, поскольку он может сбрасываться посредством компонента 230 сегментации, как подробнее описано ниже.
Компонент 230 сегментации сконфигурирован с возможностью оценивать качество приближения, сформированного посредством модуля 228 приближения Безье, и решать, когда обновлять существующую аппроксимацию Безье, а когда инициировать новую аппроксимацию или кривую Безье. Модуль 228 приближения Безье также выполняет такие задачи, как обнаружение остриев (подробнее описано ниже), и управляет аналитическими свойствами сплайна посредством конфигурирования модуля 228 приближения Безье (как подробнее описано ниже).
Модуль 228 приближения Безье
В этом разделе описывается то, как модуль 228 приближения Безье аппроксимирует набор точек рукописного ввода с помощью кубической аппроксимации или кривой Безье. Для краткости, только позиционная информация рассматривается в настоящем описании. Тем не менее, достаточно просто расширять формулы на любое число признаков. Например, в некоторых реализациях, может использоваться радиус принимаемой точки рукописного ввода (который может быть пропорциональным прикладываемому давлению и размеру росчерка кистью для ввода). В других реализациях, могут использоваться свойства, включающие в себя наклон, азимут и т.п. Все без исключения такие признаки и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.
В любой данный момент времени, модуль 228 приближения Безье обеспечивает приближение набора  активных точек только к одному сегменту Безье, B(t). Задача приближения формулируется в качестве задачи минимизации:
,
k
где E является функцией ошибок, которая подробнее описывается ниже. Пусть  является неявной ломаной линией, описанной посредством набора S. Тогда:
Поскольку затратно вычислять расстояние между точкой на ломаной линии и кривой Безье, в соответствии с вариантами осуществления настоящего документа, расстояние между двумя точками, полученными посредством дискретизации ломаной линии и кривой Безье при идентичном значении параметра t, аппроксимируется:
Функция ошибок, для которой требуется минимизация, затем может задаваться следующим образом:
и  выбираются таким образом, что , так что функция ошибок учитывает все и только точки в . Тем не менее, поскольку используется кубическая аппроксимация, выборка включает в себя, по меньшей мере, четыре точки.
Минимизация
Переменные задачи минимизации представляют собой управляющие точки B.
Пусть  является вектором управляющих точек. Подход на основе градиентного спуска используется для того, чтобы находить оптимальные значения:
Параметр α правила обновления управляет скоростью сходимости. В общем, меньшая итерация требуется с большими значениями, но одновременно вычисления могут становиться нестабильными, когда α является большим. Один примерный параметр α, который может быть использован, следующий:
Кроме того, риск расхождения может быть снижен посредством деления α на число итераций, которые не формируют улучшение по ошибке приближения.
является градиентом ошибки аппроксимации относительно управляющих точек B и может вычисляться следующим образом:
Следует отметить, что в правиле обновления предусмотрено четыре степени свободы согласно четырем управляющим точкам кубической аппроксимации Безье. Тем не менее, компонент 230 сегментации, описанный в следующем разделе, использует некоторые из этих степеней свободы, чтобы налагать требуемые аналитические свойства (например, непрерывность) на сплайн.
Компонент 230 сегментации
Компонент 230 сегментации выполняет две базовых задачи. Во-первых, он решает то, следует начинать новую аппроксимацию Безье или обновлять текущую аппроксимацию Безье. Во-вторых, он принудительно активирует аналитические свойства для сплайна (прежде всего непрерывность C0 или C1) посредством переконфигурирования кубического модуля 228 приближения Безье в любое время, когда начинается новая аппроксимация или кривая. При использовании в данном документе и как должны понимать специалисты в данной области техники, "непрерывность" означает относительную гладкость в соединениях, в которых соединяются смежные кривые Безье. "Непрерывность C0" означает ситуации, когда смежные кривые Безье совместно используют идентичные конечные точки. "Непрерывность C1" означает ситуации, когда смежные кривые Безье совместно используют как идентичные конечные точки, так и идентичные производные.
Решение в отношении того, следует начинать новую аппроксимацию Безье или обновлять текущую аппроксимацию Безье, основано на качестве приближения. Более конкретно, решение в отношении того, следует начинать новую аппроксимацию Безье или обновлять текущую аппроксимацию Безье, основано на максимальном расстоянии между полученными оцифрованными точками рукописного ввода и наилучшей аппроксимацией, вычисленной посредством модуля 228 кубического приближения Безье. В вариантах осуществления, пороговое значение отсечки может составлять единицы в 10 гиметрик (0,1 мм), точка, выше которой пользователи в исследовании удобства и простоты использования указывают то, что рукописный ввод изменяется по мере того, как новые точки поступают (помимо продления до новой точки), заметна. Тем не менее, следует отметить, что пороговое значение коррелируется с физическим размером рукописного ввода по мере того, как выполняется его визуализация. Например, если визуализация  «мокрого» рукописного ввода (т.е. рукописного ввода, визуализация которого выполнился в ходе действия росчерка до того, как инструмент ввода снимается из приемной поверхности) выполняется с 10-кратным увеличением, то пороговое значение, вероятно, должно быть в 10 раз меньшим, или пользователь замечает изменения рукописного ввода. Конечно, поскольку «сухой» рукописный ввод (т.е. рукописный ввод на приемной поверхности, как только инструмент ввода снимается с нее) не изменяется (т.е. сегментация уже выполнена), эта точка является значимой только для  «мокрого» рукописного ввода. Дополнительно следует отметить, что пороговое значение может быть функцией от любого количества предыдущих точек рукописного ввода, любых признаков таких точек рукописного ввода (например, координат, давления, наклона, скручивания и т.д.) и/или может зависеть от устройств (например, DPI, доступного запоминающего устройства, CPU, GPU и т.п.). Все без исключения такие варьирования и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.
Другая важная задача, выполняемая посредством компонента 230 сегментации, состоит в том, чтобы налагать требуемые аналитические свойства на сплайн. По крайней мере, сплайн должен быть соединен (непрерывность C0), что означает то, что первая управляющая точка каждой кривой или сегмента Безье должна совпадать с последней управляющей точкой предыдущей кривой или сегмента, в силу этого приводя к потере одной степени свободы:
Непрерывность C0:
Хотя непрерывность C0 гарантирует то, что сплайн соединен, недостаточно формировать сглаженный рукописный ввод, как показано на фиг. 3, в которых круговые соединительные области указывают на плохие (несглаженные) артефакты.
В соответствии с вариантами осуществления настоящего изобретения, плохие артефакты на фиг. 3 могут удаляться посредством наложения непрерывности C1. Параметрическая непрерывность C1 требует, что производная сегмента в t=0 должна совпадать с производной предыдущего сегмента в t=1:
Тем не менее, другая степень свободы теряется, когда налагается параметрическая непрерывность C1, что оставляет мало свободы для формирования хороших приближений. К счастью, все, что требуется для того, чтобы сплайн выглядел сглаженным, представляет собой геометрическую (в отличие от параметрической) непрерывность C1, которая является менее ограничивающей и требует ограничивать только направление второй управляющей точки:
Геометрическая непрерывность C1:
В соответствии с вариантами осуществления настоящего документа, геометрическая непрерывность C1 может налагаться посредством проецирования второй управляющей точки в требуемом направлении, после того как применено правило обновления.
Предотвращение неустойчивого поведения
Иногда, реализация геометрической непрерывности C1 приводит к наблюдению неприятного неустойчивого поведения, например, как показано на фиг. 4. Это поведение зачастую выглядит хуже, чем случайные острия, наблюдаемые в непрерывных сплайнах C0. Кажется, что первопричина этого поведения заключается в том, что производная последней зафиксированной кривой Безье в t=1 не согласуется с производной соответствующих оцифрованных точек. Следовательно, проблема может быть смягчена, как проиллюстрировано на фиг. 5, посредством добавления такого нового ограничения на модуль 228 приближения Безье, что производная аппроксимации Безье в t=1 должна совпадать с производной аппроксимации или сегмента Безье, соединяющей последние две оцифрованных точки. Следует отметить, что другие смягчения являются возможными в пределах объема вариантов осуществления настоящего документа. Например, могут обновляться как предыдущая, так и текущая кривая Безье. Альтернативно, две кривые Безье могут приближаться одновременно, непрерывность налагается между двумя и новой парой сегментов Безье, начинаемых каждый раз, когда не удовлетворяются требования по приближению.
Обнаружение остриев
Хотя, в общем, непрерывность C1 является требуемым свойством, возникают случаи, когда это неполезно ее активировать. Прежде всего, непрерывность C1 удаляет даже намеченные острия. По этой причине, компонент 230 сегментации дополнительно сконфигурирован с возможностью конфигурировать модуль 228 приближения Безье для непрерывности C1 на основе результатов обнаружения остриев.
Простой подход к обнаружению остриев заключается в том, чтобы проверять угол, сформированный посредством последних трех точек, и классифицировать в качестве остриев углы ниже предварительно заданного порогового значения. Аналогичный подход заключается в том, чтобы базировать решение по углу, сформированному посредством производной предыдущего сегмента в t=1, с решением для текущего сегмента в t=0. Все без исключения такие подходы и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.
Компонент 232 прогнозирования рукописного ввода
Прогнозирование следующих нескольких местоположений инструмента ввода является сложной для решения проблемой, поскольку рукописный текст наполнен резкими непрогнозируемыми изменениям направления, и пользователь может отрывать перо (или другой инструмент ввода) в любое время, в силу этого приводя к тому, что прогнозирование является не только необязательным, но и потенциально вредным.
Компонент 232 прогнозирования рукописного ввода сконфигурирован с возможностью сначала устанавливать качество прогнозирования посредством задания показателя, который обеспечивает возможность оценки качества прогнозирования рукописного ввода. Предусмотрено два основных аспекта для рассмотрения: взаимодействие с пользователем и производительность. С точки зрения взаимодействия с пользователем, результат неправильного прогнозирования заключается в том, что визуализация фрагмента рукописного ввода выполняется на экране или другой поверхности отображения, и он затем очищается в пределах нескольких кадрах, как только прогнозирование оказывается неправильным. Это может формировать эффект мерцания, который усиливается, когда прогнозирования не являются стабильными между кадрами. Показатель должен отражать то, может или нет ошибка прогнозирования наблюдаться конечным пользователем.
С точки зрения производительности, примерный подход заключается в том, чтобы использовать главные компоненты,  и , вектора ошибок в качестве показателей для качества прогнозирования. Фиг. 5 обеспечивает пример для прогнозирования на пять точек вперед. Оцифрованные точки представляются с помощью пятен. Точки, соединенные с помощью сплошной линии 610, уже оцифрованы, тогда как точки, которые не соединены (и отображаются внутри большего треугольника), находятся в будущем. Прогнозные точки соединены посредством пунктирной линии 612. Вектор , соединяющий прогнозную точку с последней оцифрованной точкой, представляет собой вектор прогнозирования. Вектор , соединяющий оцифрованную точку в будущем с последней оцифрованной точкой, представляет собой вектор реализации. Вектор  представляет собой ошибку прогнозирования, и  и  представляют собой его главные компоненты.  измеряет то, насколько прогнозирование запаздывает или выходит за установленные пределы.  измеряет то, насколько далеко прогнозная точка находится от вектора реализации.
Одна технология, которая может использоваться посредством компонента 232 прогнозирования рукописного ввода для прогнозирования рукописного ввода, заключает в себе приближение оцифрованных точек к кубическому сплайну Безье. Базовая идея состоит в том, чтобы выполнять прогнозирование посредством продления последнего сегмента B(t) Безье в будущее, что означает просто дискретизацию B(t) в некоторое  (пунктирная линия на фиг. 6).
Выбор t
Пусть  является числом точек, для которых требуется будущее прогнозирование, и пусть  является расстоянием между последними двумя оцифрованными точками. В таком случае  может выбираться таким образом, что длина дуги кривой или сегмента Безье между B(1) и B(t) равна .
Поскольку отсутствует решение в замкнутой форме для длины дуги кубической кривой, может использоваться аппроксимация, которая приспосабливает ряд известных фактов. Во-первых, расстояние между конечными точками кривой Безье является нижней границей для ее длины дуги. Во-вторых, длина управляющего многоугольника кривой Безье является верхней границей для ее длины дуги.
Репараметризация
Простейшая опция для визуализации прогнозирования состоит в том, чтобы рисовать линию от последней оцифрованной точки до прогнозной точки. Тем не менее, лучший подход состоит в том, чтобы рисовать продолжение кривой Безье, как показано на фиг. 6 (пунктирная линия 6). Соответственно, компонент 232 прогнозирования рукописного ввода дополнительно сконфигурирован с возможностью репараметризовать кривую Безье таким образом, что кривая не изменяется, и:
,
где B является исходной кривой Безье, а  является репараметризованной кривой Безье. Затраты на репараметризацию пренебрежимо малы, поскольку она может выполняться через постоянное время.
С использованием этой технологии, компонент 232 прогнозирования рукописного ввода может выполнять прогнозирования приблизительно на 16 мс вперед без введения плохих артефактов (т.е. видимого ошибочного прогнозирования).
Визуализация рукописного ввода
При завершении приближения и прогнозирования, результат представляет собой набор аппроксимаций Безье  и соответствующий набор радиусов . В общем,  являются кубическими функциями, параметризованными посредством четырех управляющих точек: . В некоторых демонстрациях,  могут быть линейными и параметризоваться только посредством начального и конечного радиусов:
В других демонстрациях, они могут быть кубическими и параметризоваться посредством весовых коэффициентов в каждой из четырех управляющих точек, с использованием полиномов Бернштейна, как известно специалистам в данной области техники:
Вместе, данная пара  представляет сегмент росчерка рукописного ввода, как показано на фиг. 7. Символически, он соответствует геометрическому месту точек .
Блок-схема последовательности операций способа по фиг. 8 иллюстрирует примерный общий процесс 800 для визуализации рукописного ввода, в соответствии с вариантами осуществления настоящего изобретения. Функции, описанные слева от пунктирной линии, могут выполняться, например, с использованием компонента 234 визуализации рукописного ввода механизма 212 сглаживания рукописного ввода по фиг. 2. Функции, описанные справа от пунктирной линии, могут выполняться, например, с использованием GPU 222 пользовательского вычислительного устройства 210 по фиг. 2.
Контурное преобразование 810
Варианты осуществления настоящего изобретения разрешают применение произвольных двумерных аффинных преобразований (заданных посредством матрицы 3×2 ) к рукописному вводу после того, как рукописный ввод захвачен и подвергнут обработке приближения, но до визуализации. Такие преобразования являются полезными, чтобы моделировать, например, панорамирование и масштабирование документа, содержащего рукописный ввод.
Преобразования реализуются на двух этапах. На первом этапе ("контурное" преобразование), преобразуются функции Безье . Это выполняется посредством простого умножения управляющих точек Безье  на указанную матрицу (концептуально, это затрагивает общую форму рукописного ввода, но не затрагивает толщину).
Второй этап заключается в том, чтобы преобразовывать радиусы. Он выполняется в вершинном формирователе 820 теней, подробнее описанном в данном документе ниже. Следует отметить, что компоненты перемещения в пространстве M ( и) не использованы при преобразовании радиусов. Далее в настоящем описании, символ M означает матрицу 2×2 .
Сглаживание 812
Чтобы выполнять визуализация данного росчерка, каждая из составляющих аппроксимаций Безье "сглаживается". Формально, набор  выбирается для каждой пары , и функции оцениваются в этих  (это по существу представляет собой приближение по кривым в обратном порядке). Точный способ для выбора набора  задается согласно реализации. В одной примерной реализации, может использоваться алгоритм гибридного прямого нахождения разностей, как описано в Патенте (США) номер 5367617, который настоящим содержится по ссылке как полностью изложенный в данном документе. Специалисты в данной области техники должны понимать, что другие технологии, такие как прямое нахождение разностей, являются стандартными и известными в отрасли и также могут использоваться.
Результат представляет собой список точек и радиусов , лежащих вдоль кривой.
Эти данные затем отправляются в GPU и сохраняются в так называемом "буфере вершин" (далее обозначается VB1).
Мозаичная диаграмма 814 экземпляров
Также в GPU передаются два других буфера вершин: один, содержащий треугольную сетку, аппроксимирующую окружность, а другой - треугольную сетку, представляющую трапецию. Эти сетки вычисляются один раз во время инициализации и кэшируются и многократно используются в последующих операциях визуализации.
Конкретные реализации могут представлять мозаичные диаграммы отличающимися способами. Одна примерная реализация использует следующую схему:
Каждая вершина в круговой треугольной сетке содержит следующие данные:
CenterOrEdge: 1 бит (0: центр, 1: край)
InteriorOrExterior: 1 бит (0: внутренняя, 1: внешняя)
Направление: float2 (нормализовано)
Треугольники, соединяющие внутренние и внешние вершины, используются для того, чтобы обеспечить сглаживание наложения спектров (обозначенное посредством градиента перехода светлого в темный, проиллюстрированного на фиг. 8). Следует отметить, что абсолютные координаты фактически не сохраняются в вершине, а записывается только топологическая взаимосвязь вершины, поскольку она связана с другими. Например, вершина A на следующей схеме является внутренней краевой вершиной и должна сохраняться следующим образом:
,
тогда как вершина D является внешней краевой вершиной и должна сохраняться следующим образом:
(при условии инвертированной оси Y). Имеется только одна центральная вершина (обозначается C на фиг. 9), которая является внутренней и которой назначается произвольное направление.
Также следует отметить, что точное число треугольников (и, следовательно, вершин) может варьироваться в реализации и, в общем, зависит от максимального радиуса рукописного ввода, визуализация которого выполняется.
Каждая вершина в трапеции содержит следующие данные:
StartOrEnd: 1 бит (0: начало, 1: конец)
InteriorOrExterior: 1 бит (0: внутренняя, 1: внешняя)
TopOrBottom: 1 бит (0: верх, 1: низ)
Например, вершина A на следующей схеме является внутренней начальной вершиной наверху и должна сохраняться следующим образом:
Вершина B является внутренней концевой вершиной внизу и должна сохраняться следующим образом:
,
как показано на фиг. 10. В этом случае, число уникальных вершин фиксированно равно восьми, независимо от радиуса рукописного ввода, визуализация которого выполняется.
Расширение и растеризация 816
После того, как данные выгружены в GPU, оставшиеся этапы растеризации выполняются в два прохода: один для того, чтобы выполнять визуализацию окружностей, и один для того, чтобы выполнять визуализацию трапеций. Одна примерная реализация выполняет каждый проход с использованием, например, пяти стадий стандартного Direct3D-конвейера, описанного ниже (818, 820, 822, 824 и 826). Специалисты в данной области техники должны понимать и принимать во внимание, что другие непосредственно аналогичные реализации в Direct3D являются возможными на других платформах, таких как OpenGL. Все без исключения такие варьирования и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.
Ассемблер 818 вводов, растеризатор 822 и модуль 826 объединения выводов представляют собой фиксированную функцию и выполняются по существу автоматически посредством самого GPU. Вершинный формирователь 820 теней и пиксельный формирователь 824 теней являются программируемыми.
Ассемблер 818 вводов
Ассемблер 818 вводов сконфигурирован с возможностью извлекать круговые/трапецеидальные сетки и вершины в VB1 и подготавливать их к обработке посредством оставшегося конвейера. Частично, это заключает в себе репликацию копий сеток для вершин в VB1 (стандартную технологию, известную специалистам в данной области техники в качестве "инстанцирования"). В круговом проходе, ассемблер 818 вводов сконфигурирован с возможностью выделять одну копию сетки в расчете на вершину в VB1. В трапецеидальном проходе, ассемблер 818 вводов выделяет одну копию в расчете на пару последовательных вершин в VB1. Вершины, выводимые посредством ассемблера 818 вводов, содержат объединенные данные как из сетки, так и из данных VB1:
Формат вершин при круговом проходе:
Формат вершин при трапецеидальном проходе:
Вершинный формирователь 820 теней
В соответствии с вариантами осуществления настоящего документа, обеспечен вершинный формирователь 820 теней, который извлекает каждую вершину, выводимую посредством ассемблера 818 вводов, и уплотняет ее для позиции и непрозрачности. Для кругового прохода, используются следующие формулы:
Здесь,  является матрицей 2×2, заданной выше в документе, и  является ее обратной транспозицией.
Функции offset и opacityModifier пояснены подробнее ниже, но в общем случае они представляют собой просто  и .
Для трапецеидального прохода, могут использоваться более сложные формулы:
Здесь,  является матрицей вращения на 90 градусов .
Следует отметить, что аналогичные версии этих формул использованы в более ранних версиях визуализации рукописного ввода. Тем не менее, в отличие от предыдущих воплощений, варианты осуществления настоящего изобретения выполняют преобразование в GPU.
Дополнительно следует отметить, что извлечения этих формул выходят за рамки объема настоящего описания. Тем не менее, фиг. 11, 12 и 13 могут помогать в связывании различных величин между собой. Фиг. 11 иллюстрирует схему двух смежных точек рукописного ввода (при условии, что M является единичной матрицей). Фиг. 12 иллюстрирует детализацию вокруг P(i+1) (при условии, что TopOrBottom=0, StartOrEnd=1, и M является единичной матрицей). Фиг. 13 иллюстрирует детализацию вокруг P+D (при условии, что TopOrBottom=0, StartOrEnd=1, и M является единичной матрицей).
Растеризатор 822
После того, как вершины реплицируемых сеток преобразованы, соответствующие треугольники "растеризируются" посредством GPU с использованием растеризатора 822. Другими словами, пикселы, охватываемые посредством треугольников, идентифицируются, и пиксельный формирователь 824 теней активируется один раз в расчете на охватываемый пиксел. Растеризация D3D известна для специалистов в данной области техники и, соответственно, не описывается подробнее в данном документе.
Пиксельный формирователь 824 теней
Пиксельный формирователь 824 теней сконфигурирован с возможностью извлекать непрозрачность из растеризатора 8222 и использовать ее для того, чтобы модулировать цвет рукописного ввода:
Эта цветовая модуляция моделирует сглаживание наложения спектров вдоль краев рукописного ввода. (В некоторых демонстрациях она представляет собой простой сплошной цвет, но в более сложных демонстрациях, цвет может зависеть от местоположения пиксела). Это значение цвета затем передается в модуль 826 объединения выводов.
Модуль 826 объединения выводов
Модуль 826 объединения выводов сконфигурирован с возможностью извлекать значение цвета и смешивать его с целью визуализации. Объединение выводов известно для специалистов в данной области техники и, соответственно, не описывается подробнее в данном документе.
Уменьшение тонких признаков
Как упомянуто выше, варианты осуществления настоящего изобретения обеспечивают вершинный формирователь 820 теней, который использует две вспомогательных функции, offset и opacityModifier. Цель смещения состоит в том, чтобы смещать вершину на половину пиксела в экранном пространстве, моделируя сглаживание наложения спектров. Когда размеры окружности/трапеции, визуализация которой выполняется, меньше 1 пиксела, специальная логика может добавляться, чтобы уменьшать вероятность того, что это смещение приводит к перекрывающимся треугольникам. Когда такая логика выполняется, непрозрачность вершины, соответственно, модифицируется.
Полные определения offset и opacityModifier заключаются в следующем:
Обращаясь теперь к фиг. 14, проиллюстрирована блок-схема последовательности операций, показывающая примерный способ 1400 для сглаживания ввода с помощью цифрового рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения. Как указано на этапе 1410, первая точка рукописного ввода принимается. Вторая точка рукописного ввода также принимается, как указано на этапе 1412. Как указано на этапе 1414, активная кубическая аппроксимация Безье вычисляется на основе первой и второй точек рукописного ввода. Третья точка рукописного ввода принимается, как указано на этапе 1416. Определяется, согласуется ли надлежащим образом третья точка рукописного ввода с активной кубической аппроксимацией Безье, как указано на этапе 1418, и новая кубическая аппроксимация Безье вычисляется с использованием первой, второй и третьей точек рукописного ввода, как указано на этапе 1420.
Со ссылкой на фиг. 15, проиллюстрирована блок-схема последовательности операций, показывающая примерный способ 1500 для сглаживания и визуализации ввода с помощью цифрового рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения. Как указано на этапе 1510, первая и вторая точки рукописного ввода последовательно принимаются. Как указано на этапе 1512, активный сглаженный фрагмент рукописного ввода формируется на основе первой и второй точек рукописного ввода. Третья точка рукописного ввода принимается, как указано на этапе 1514. Затем определяется, согласуется ли надлежащим образом третья точка рукописного ввода с активным сглаженным фрагментом рукописного ввода, как указано на этапе 1516 принятия решения. Если определено то, что третья точка рукописного ввода согласуется надлежащим образом с активным сглаженным фрагментом рукописного ввода, активный сглаженный фрагмент рукописного ввода обновляется, как указано на этапе 1518. Тем не менее, если определяется то, что третья точка рукописного ввода не согласуется надлежащим образом с активным сглаженным фрагментом рукописного ввода, активный сглаженный фрагмент рукописного ввода завершается, и второй сглаженный фрагмент рукописного ввода инициируется, как указано на этапе 1520. С использованием GPU выполняется визуализация сглаженного вывода рукописного ввода, содержащего первую, вторую и третью точки рукописного ввода. Это указывается на этапе 1522.
Обращаясь теперь к фиг. 16, проиллюстрирована блок-схема последовательности операций, показывающая примерный способ 1600 для сглаживания и визуализации ввода с помощью цифрового рукописного ввода, в соответствии с вариантом осуществления настоящего изобретения. Как указано на этапе 1610, первая точка рукописного ввода принимается. Вторая точка рукописного ввода также принимается, как указано на этапе 1612. Как указано на этапе 1614, активная кубическая аппроксимация Безье вычисляется на основе первой и второй точек рукописного ввода. Третья точка рукописного ввода принимается, как указано на этапе 1616. Затем определяется то, согласуется ли надлежащим образом третья точка рукописного ввода с активной кубической аппроксимацией Безье, как указано на этапе 1618. Как указано на этапе 1620, новая кубическая аппроксимация Безье вычисляется с использованием первой, второй и третьей точек рукописного ввода. После этого выполняется визуализация сглаженного вывода рукописного ввода, содержащего первую, вторую и третью точки рукописного ввода. Это указывается на этапе 1622.
Как можно понять, варианты осуществления настоящего изобретения обеспечивают системы, способы и машиночитаемые носители хранения данных, в числе прочего, для эффективного сглаживания росчерка рукописного ввода в реальном времени, прогнозирования траектории и визуализации ввода с помощью росчерка рукописного ввода за счет использования GPU. Множество точек рукописного ввода, включающих в себя, по меньшей мере, первую и вторую точку рукописного ввода, принимаются. На основе первой и второй точек рукописного ввода, вычисляется активная аппроксимация Безье. Последовательно во времени относительно первой и второй точек рукописного ввода, принимается третья точка рукописного ввода, и определяется, согласуется ли надлежащим образом третья точка рукописного ввода с активной аппроксимацией Безье. Третья точка рукописного ввода определяется как согласующаяся надлежащим образом с активной аппроксимацией Безье если определено то, что пользователь неспособен обнаруживать разность между ними после визуализации. Такое определение, в общем, основано на предварительно определенном пороговом разностном значении. Если определено, что третья точка рукописного ввода согласуется надлежащим образом с активной аппроксимацией Безье, активная аппроксимация Безье обновляется таким образом, что она включает в себя третью точку рукописного ввода. Тем не менее, если определено, что третья точка рукописного ввода не согласуется надлежащим образом с активной аппроксимацией Безье, активная аппроксимация Безье завершается, и вычисляется новая аппроксимация Безье. Выполняется визуализация сглаженного вывода рукописного ввода, содержащего первую, вторую и третью точки рукописного ввода в ассоциации с поверхностью приема росчерка, например, сенсорным экраном отображения.
Настоящее изобретение описано относительно конкретных вариантов осуществления, которые имеют намерение во всех отношениях быть иллюстративными, а не ограничивающими. Альтернативные варианты осуществления должны становиться очевидными для специалистов в области техники, которой принадлежит настоящее изобретение, без отступления от его объема.
Хотя изобретение допускает различные модификации и альтернативные конструкции, его конкретные проиллюстрированные варианты осуществления показаны на чертежах и подробно описаны выше. Тем не менее, следует принимать во внимание, что отсутствует намерение ограничивать изобретение конкретными раскрытыми формами, а наоборот, намерение состоит в том, чтобы охватывать все модификации, альтернативные конструкции и эквиваленты, попадающие в пределы объема изобретения.
Специалисты в данной области техники должны понимать, что порядок этапов, показанных в способах 1400 по фиг. 14, 1500 по фиг. 15 и 1600 по фиг. 16, не имеет намерение ограничивать так или иначе объем настоящего изобретения, и, фактически, этапы могут возникать во множестве различных последовательностей в пределах вариантов осуществления настоящего документа. Все без исключения такие варьирования и любая их комбинация рассматриваются в пределах объема вариантов осуществления настоящего изобретения.