專利名稱:2-d陣列中的譯碼和差錯校正的制作方法
技術領域:
本發明涉及使用數字筆和介質交互作用。本發明尤其涉及在和一個或多個表面交互作用時確定數字筆的位置。
背景計算機用戶習慣于使用鼠標和鍵盤作為和個人計算機交互作用的方法。雖然個人計算機與書面文件相比提供了大量便利,但多數用戶繼續使用打印的紙從事某些活動。一些這種活動包括閱讀和標注書面文件。在標注的情況下,由于是由用戶將標注記錄到文件上,所以打印的文件變得更加重要。但是,給打印的文件標注的一個困難在于,之后需要將標注再次輸入回文件的電子形式中。這要求原始用戶或另一個用戶辛苦地讀完標注并將它們輸入個人計算機中。在某些情況下,用戶掃描入標注和原文,從而產生新的文件。這些反復步驟使打印的文件和文件的電子版本之間的交互作用變得在重復的基礎上很難處理。此外,掃描入的圖像常常是不能修改的。并沒有辦法將標注從原文中分開。這使得使用標注變得很麻煩。因此,需要一種處理標注的改進方法。
獲取手寫信息的一種技術是通過使用在書寫時可以確定位置的筆。提供這種功能的一種筆是Anoto公司的Anoto筆。這種筆通過使用照相機來獲取紙上用預定圖形編碼的圖像。圖像圖形的一個實例如
圖11所示。Anoto筆(Anoto公司生產)用該圖形來確定紙上筆的位置。但是,不清楚利用Anoto筆所采用的系統能使位置的確定多么有效。為了有效地確定獲取的圖像位置,需要一種提供所獲取的圖像的有效譯碼的系統。
發明概述本發明的方面提供了至少一個上述問題的解決方法,從而能將所觀察的圖像上的一個或多個位置定位。該所觀察的圖像可以是在打印的圖像上或可以是顯示的計算機圖像上的圖示。本發明的方面中包括允許有效的譯碼所捕獲的圖像的譯碼處理過程,它被用來有效地確定圖像的位置。通過附圖和相關描述可以理解本發明的這些或其它方面。
附圖概述結合附圖可以更好地理解本發明的上述概述,以及以下較佳實施例的詳細描述,這些附圖作為實例,但不作為本發明的限制。
圖1示出可以結合本發明的實施例使用的計算機的一般描述。
圖2A和2B示出根據本發明的實施例的圖像獲取系統和相應的所獲取圖像。
圖3A至3F示出根據本發明的實施例的各種序列和折疊技術。
圖4A至4E示出根據本發明的實施例的各種編碼系統。
圖5A至5D示出和根據圖4A和4B的編碼系統相關的4種可能的合成邊角(resultant corner)。
圖6示出根據本發明的實施例的所獲取的圖像部分的旋轉。
圖7示出結合圖4A至4E的編碼系統使用的各種旋轉角度。
圖8示出根據本發明的實施例的用于確定所獲取陣列的位置的處理過程。
圖9示出根據本發明的實施例的用于確定所獲取圖像的位置的方法。
圖10示出根據本發明的實施例的用于確定所獲取圖像的位置的另一個方法。
圖11示出文件中的編碼空間的常規表示。
詳細描述本發明的方面涉及確定相對更大的圖像的所獲取圖像位置。這里描述的位置確定方法和系統可以結合多功能筆使用。
為便于讀者閱讀,用副標題隔開以下的描述。這些副標題包括術語、常規用途的計算機、圖像獲取筆、陣列的編碼、譯碼、差錯校正和位置確定。
術語筆-可以或不可以包括儲存墨水的任何書寫工具。在某些實例中,不含墨水的觸筆可以用作根據本發明實施例的筆。
照相機-可以從紙或任何其它的介質獲取圖像的圖像獲取系統。
常規用途的計算機圖1是可以用來實現本發明的各方面的常規用途數字計算機環境實例的原理框圖。圖1中,計算機100包括處理單元110、系統存儲器120和將包括系統存儲器120的各種系統部件連接到處理單元110的系統總線130。系統總線130可能是多種類型總線結構的任一種,包括存儲器總線或存儲器控制器、外圍設備總線、及使用各種總線結構的任一種的局部總線。系統存儲器120包括只讀存儲器(ROM)140和隨機存取存儲器(RAM)150。
基本輸入/輸出系統160(BIOS),包括在ROM140中存儲的有助于在諸如在啟動期間,計算機100內的元件之間傳送信息的基本程序(routine)。計算機100還包括用于寫入硬盤或從中讀出(未示出)的硬盤驅動器170、用于寫入可移動磁盤190或從中讀出的磁盤驅動器180,和用于寫入諸如CD ROM或其它光學介質的可移動光盤192或從中讀出的光盤驅動器191。硬盤驅動器170、磁盤驅動器180和光盤驅動器191通過硬盤驅動器接口192、磁盤驅動器接口193和光盤驅動器接口194分別連接到系統總線130。這些驅動器和其相關的計算機可讀介質提供了用于個人計算機100的計算機可讀指令、數據結構、程序模塊和其它數據的非易失性存儲。本技術領域內的熟練的技術人員將理解,可以存儲由計算機訪問的數據的其它類型計算機可讀介質,諸如磁帶盒、閃存卡、數字視頻磁盤、伯努力盒式磁帶、隨機存取存儲器(RAM)、只讀存儲器(ROM)等等,還可以用于實例操作環境中。
大量的程序模塊可以存儲在硬盤驅動器170、磁盤190、光盤192、ROM140或RAM150上,這些程序模塊包括操作系統195、一個或多個應用程序196、其它的程序模塊197和程序數據198。用戶可以通過諸如鍵盤101和定位設備102將命令和信息輸入計算機100。其它的輸入設備(未示出)可以包括麥克風、操縱桿、游戲墊、衛星碟(satellite dish)、掃描儀等等。這些和其它輸入設備常常通過和系統總線連接的串行口接口106連接到處理單元110,但也可以由其它接口連接,諸如并行口、游戲口或通用串行總線(USB)。此外,這些裝置可以通過適當的接口(未示出)直接連接到系統總線。監視器107或其它類型的顯示器裝置也通過諸如視頻適配器108的接口連接到系統總線130。除了監視器,個人計算機通常包括其它外圍輸出裝置(未示出),諸如揚聲器和打印機。在較佳的實施例中,為了數字化地獲取徒手輸入而提供了筆形數字轉換器165和附隨筆或觸筆166。雖然示出了筆形數字轉換器165和串行口之間的直接連接,但實際上,如該技術領域中已知的,筆形數字轉換器165可以通過并行口或其它接口以及系統總線130直接和處理單元110連接。此外,雖然示出數字轉換器165和監視器107分開,但較佳地,數字轉換器165的可用輸入區域和監視器107的顯示器區域是協同擴展的。此外,數字轉換器165可以結合到監視器107中,或可以作為分開的裝置加入或另外被附加到監視器107。
計算機100可以邏輯連接到一個或多個遠程計算機,諸如遠程計算機109來在網絡環境中工作。遠程計算機109可以是服務器、路由器、網絡PC、對等裝置或其它普通的網絡節點,并通常包括許多或全部以上所述和計算機100相關的元件,雖然在圖1中只說明了存儲裝置111。圖1中描述的邏輯連接包括局域網(LAN)112和廣域網(WAN)113。這些網絡環境在辦公室、企業范圍的計算機網絡、內聯網和因特網中是很普通的。
當在LAN網絡環境總使用時,計算機100通過網絡接口或適配器114和局域網112連接。當用于WAN網絡環境時,個人計算機100通常包括調制解調器115或用于建立和諸如因特網的廣域網113的連接的其它裝置。調制解調器115可以是內部或外部的,并通過串行口106和系統總線130連接。在網絡環境中,描述中和個人計算機100相關的程序模塊或其部分可以存儲于遠程存儲器裝置。
可以理解,所示的網絡連接是說明性的,而可以使用用于建立計算機之間的通信連接的其它技術。假定存在各種已知的協議中的一種,諸如TCP/IP、以太網、FTP、HTTP、藍牙、IEEE 802.11x等等,則系統可以以客戶機-服務器結構工作來允許用戶從基于網絡的服務器檢索網頁。可以使用任何常規的網絡瀏覽器來顯示和處理網頁上的數據。
圖像獲取筆本發明的方面包括以顯示的格式放置編碼的數據流。該顯示的格式可以是打印的紙(或其它物理介質)或可以是放映結合了其它圖像或圖像組的編碼數據流的顯示器。例如,編碼數據流可以表現為紙上的物理的圖形圖像或顯示器屏幕上的覆蓋所顯示的圖像的圖形圖像,或可以是顯示器屏幕上的物理的(不能修改)圖像圖像(因此由筆獲取的任何圖像部分在顯示器屏幕上是可以定位的)。
所獲取的圖像位置的確定可以用于確定用戶和紙、介質或顯示器屏幕交互作用的位置。在本發明的某些方面中,筆可以是在紙上書寫的墨水筆。在其它方面,筆可以是用戶用來在計算機顯示器表面上書寫的觸筆。在已知文件上的編碼圖像或支持計算機屏幕上顯示器的文件時,任何的交互作用可以提供回系統。通過重復地獲取照相機的位置,系統可以追蹤由用戶控制的觸筆的移動。顯示的或打印的圖像可以是和空白的或內容豐富的紙相關的水印或可以是和顯示的圖像或覆蓋屏幕或構建于屏幕內的固定編碼相關的水印。
圖2A和2B示出具有照相機203的筆201的說明性實例。筆201包括可以包含或不包含墨水容器的筆尖202。照相機203從表面207獲取圖像204。筆201還可以包括另外的傳感器和/或處理器,如虛線框206所表示的。這些傳感器和/或處理器206也可以包含將信息(例如,通過藍牙或其它無線協議)傳送到其它筆201和/或個人計算機的能力。
圖2B表示由照相機203所觀察的圖像。在一個說明性的實例中,照相機203的視場為32×32像素(其中N=32)。因此,圖2B示出的32像素長、32像素寬的視場。N的大小可以根據所需的圖像分辨率程度來調整的。雖然為了便于說明將此處的照相機203的視場示為正方形,但該視場還包含本技術領域中已知的其它形狀。
從照相機203到筆201的輸入可以定義為一組圖像幀{Ii},i=1,2…,A,其中Ii由筆201在采樣時間ti時獲取。采樣率可以是固定的或可以根據文件的大小變化的。所捕獲的圖像幀的大小可大可小,這取決于文件的大小和所需的精確度。同樣,照相機圖像大小可以根據所查找的文件的大小確定。
由照相機203獲取的圖像可以直接由處理系統使用或可以進行預過濾。該預過濾可以在筆201內進行或可以在筆201之外進行(例如,在個人計算機內)。
圖2B的圖像大小為32×32像素。如果每個編碼單元的大小為3×3像素,則所獲取的編碼單元數約為100個單元。如果編碼單元的大小為5×5,則所獲取的編碼單元數約為36個。
圖2A還示出了圖像平面209,在平面209上形成來自位置204的圖形的圖像210。從目標平面207上的圖形接收到的光由透鏡208聚焦。透鏡208可以是單個透鏡或多部分的透鏡系統,但這里為了簡單只表示為單個透鏡。圖像獲取傳感器211獲取圖像210。
圖像傳感器211可以大到足以獲取圖像210。可供選擇地,圖像傳感器211可以大到足以在位置212獲取筆尖202的圖像。作為參考,在位置212的圖像被稱作虛擬筆尖(virtual pen tip)。注意到相對圖像傳感器211的虛擬筆尖位置是固定的,因為筆尖、透鏡208和圖像傳感器211之間的關系是恒定的。因為變換是從虛擬筆尖212的位置(由Lvirtual-pentip表示)到實際筆尖202的位置(由Lpentip表示),所以可以確定相對所獲取的圖像210的實際筆尖的位置。
以下的變換FS→P將由照相機獲取的圖像變換到紙上的實際圖像Lpaper=FS→P(Lsensor)在書寫期間,筆尖和紙在同一平面上。因此,從虛擬筆尖到實際筆尖的變換也是FS→PLpentip=FS→P(Lvirtual-pentip)變換FS→P可以被稱作透視變換。這簡化為F′S→P=sxcosθ,sysinθ,0-sxsinθ,sycosθ,00,0,1]]>來作為FS→P的估計,其中θ、sx和sy是在位置204獲取的圖形的旋轉和兩個方向上的伸縮比例。此外,可以通過將獲取的圖像和紙上相應的背景圖像相匹配來將F’S→P的提煉為FS→P。“提煉”意味著通過一種稱為遞歸法的優化算法得到更精確的透視矩陣FS→P(8個參數)。該遞歸法將矩陣F’S→P作為初始值。FS→P比F’S→P更精確地描述S和P之間的變換。
接著,可以通過校準確定虛擬筆尖的位置。
將筆尖202放置在紙上的已知位置Lpentip。接著,使筆傾斜,使照相機203能獲取不同的筆姿態的一組圖像。對于所獲取的每個圖像。可以得到變換FS→P。從該變換,可以得到筆尖的虛擬圖像的位置Lvirtual-pentipLvirtual-pentip=FP→S(Lpentip)以及,FP→S=1/FS→P通過對從每個圖像得到的Lvirtual-pentip取平均,可以確定虛擬筆尖Lvirtual-pentip的精確的位置。
現在知道了虛擬筆尖的位置Lvirtual-pentip。還可以從所獲取的圖像得到變換FS→P。最終,可以使用該信息來確定實際筆尖Lpentip的位置Lpentip=FS→P(Lvirtual-pentip)陣列的編碼可以通過折疊一維序列來構建二維陣列。二維陣列的任何部分可以用來確定其在整個二維陣列中的位置。一個所關心的問題在于由照相機獲取的圖像部分在大小上受到限制。因此,需要能從所獲取的圖像或幾個所獲取的圖像中確定位置。產生了額外的復雜性,即在所獲取的圖像中出現的錯誤損害在所獲取的圖像中的某些點的可用性。可以使用非重復的序列來創建陣列,從而使所獲取的圖像的一個部分和兩個或多個二維陣列中的位置相關聯的可能性最小。所創建序列的一個屬性在于該序列在一長度(或窗口)n上不重復。以下將描述一維序列的創建,隨后是將該序列折疊成為陣列。
序列構建可以將一組數字用作編碼系統的起始點。例如,一序列(也稱作m-序列)可以表示成域Fq中的q元素集。這里,q=pn,其中n≥1而p是質數。該序列或m序列可以通過各種不同的技術產生,這些技術包括,但不限于,多項式除法。使用多項式除法,序列可以定義如下Rl(x)Pn(x)---(1)]]>其中Pn(x)是域Fq[x](具有q個元素)中n次的本原多項式(primitivepolynomial)。Rl(x)是域Fq[x]中的l次(其中l<n)的非零多項式。序列可以用迭代過程產生,它使用兩個步驟第一,將兩個多項式相除(得到域Fq的一個元素),第二,將余項乘以x。當輸出開始重復時,該計算停止。可以使用線形反饋移位寄存器來實現該過程,如Douglas W.Clark和Lih-Jyh Weng的文章″Maximal andNear-Maximal Shift Register SequencesEfficient Event Counters and EasyDiscrete Logarithms,″IEEE計算機學報43.5(1994年5月,pp560-568)中所述。在該環境中,在序列的循環移位和多項式Rl(x)之間建立一種關系改變Rl(x)僅僅使序列循環地移位而每個循環移位對應一個多項式Rl(x)。所造成的序列的一個屬性在于,遍及寬度(或長度)n,任何部分在該序列中只存在一次。
以上所描述的處理過程僅是用來產生非重復序列的各種處理過程中的一個。
陣列構建可以用于創建圖像(該圖像的一部分由照相機獲取)的陣列(或m陣列)是一維序列(或m序列)的延伸。使A為(m1,m2)周期的陣列,即A(k+m1,l)=A(k,l+m2)=A(k,l)。當n1xn2窗口移位通過一個A周期,則遍及Fq所有非零n1xn2矩陣出現一次且只有一次。該屬性可以稱作“窗口屬性”,其中每個窗口都是唯一的。隨后,A可以表示成周期為(m1,m2)階次為(n1,n2)的陣列(m1和m2是陣列中水平方向和垂直方向的比特數)。
二進制陣列(或m陣列)可以通過折疊序列來構建。一種方法是得到一個序列,然后將它折疊成大小m1xm2,其中陣列的長度是L=m1xm2=2n-1。可供選擇地,可以用打算覆蓋的空間的預定大小來開始(例如,一張紙,30張紙或計算機監視器的大小),確定面積(m1xm2),隨后使用該大小且使L≥m1m2,其中L=2n-1。
可以使用各種不同的折疊技術。例如,圖3A到3C示出3種不同的序列。它們每一個都可以折疊成圖3D所示的陣列。這3種不同的折疊方法示為圖3D中的覆蓋,并示為圖3E和3F中的光柵路徑(raster path)。圖3D所示的折疊方法可以表示成當gcd(m1,m2)=1,而L=2n-1。
為了創建如圖3D所示的折疊方法,先創建長度為L且階次為n的序列{ai}。接著,從序列{ai}通過使該陣列的每一比特通過方程式1計算來創建大小為m1xm2的陣列{bkl}bkl=ai其中,k=i mod(m1),l=i mod(m2),i=0,…,L-1(1)可供選擇地,該折疊方法可以表示為將序列置于陣列的對角線上,隨后,當到達邊界時從另一側繼續。
圖4A示出針對可以和圖3D的陣列一起使用的第一比特和第二比特的實例編碼技術。可以理解,也可以使用其它的編碼技術。例如,如圖11所示的可供選擇的編碼技術。
參考圖4A,第一比特401(例如,“1”)由一列暗墨水表示。第二比特402(例如,“0”)由一行暗墨水表示。可以理解可以使用任何顏色的墨水來表示各種比特。只要求所選的墨水的顏色提供與介質的背景呈強烈的對比,以使圖像獲取系統能夠區分。圖4A中的比特由3×3的單元格矩陣表示。可以根據圖像獲取系統的大小和分辨率將該矩陣的大小更改為任意大小。可供選擇的比特0和1的表示如圖4C-4E所示。可以理解,用于圖4A-4E的實例編碼的零或一的表示可以切換而沒有影響。圖4C示出在占據交叉排列的兩行或列的比特表示。圖4D示出可供選擇的在行和列中以虛線形式的像素排列。最后,圖4E示出不規則間隔形式的行和列的像素表示(例如,兩個暗框接著一個亮框)。
參考圖4A,如果比特由3乘3的矩陣表示,而圖像系統在該3×3區域中探測到一個暗行和兩個白行,則表示0(或1)。如果圖像被探測到具有一個暗列和兩個白列,則表示1(或0)。
這里,使用超過一個塊或像素或點來表示一個比特。使用單個像素(或塊或比特)來表示一個比特是很脆弱的。灰塵、紙上的折痕、不平整的表面等為讀取數據單元的單個比特表示增添了困難。但是,可以理解,可以將不同的方法用于圖形化地表示表面上的陣列。圖4C到4E示出了一些方法。可以理解,還可以使用其它的方法。圖10中闡述了只使用空間移位點(space-shifted dot)的一種方法。
比特流被用來產生圖4B的圖形403。圖形403包括12行和18列。這些行和列由轉換為使用比特表示401和402的圖形化表示的比特流形成。圖4B可以視為具有以下的比特表示010101110110110010001010011101101100]]>譯碼當人們用圖2A所示的筆靠近編碼的圖形書寫或移動時,照相機獲取圖像。隨后,處理該圖像來確定和編碼圖像的全部表示相關的所獲取圖像的方向,并提取構成編碼圖像的比特。
圖4B包括來自圖像403的像素塊的表示。所顯示圖像404-411示出5×5的像素塊。像素塊404示出在白行之間的一暗行。像素塊405示出在白列之間的一暗列。像素塊406示出左下邊角。像素塊407示出右上邊角。像素塊408示出在左側具有半個暗行的暗列。像素塊409示出一暗行,該暗行上具有半個暗列。像素塊410示出半個暗行。像素塊411示出半個暗列。分析像素塊的組合,可以理解,所有的像素組合可以通過像素塊404-411中找到的圖像部分來形成。
此外,可以嘗試用更小的像素塊集來表示所有可能的像素組合。不用更多的,可以預料圖5A-5D所示的4個塊中的每一個都可以在圖像403中找到。但是,在8個像素塊404-411中只存在3種邊角。在該實例中,沒有圖5A所表示的像素塊。通過一事實,即可以選擇圖像部分401和402來減少邊角的類型,出現了根據所缺少邊角的類型來確定所獲取圖像的方向的可能。
繼續到圖6,可以分析由照相機601獲取的圖像并確定其方向,從而可以說明圖像601實際表示的位置。首先,檢查圖像601來確定需要旋轉該圖像的角度θ以便將像素水平方向和垂直方向對準。注意到,可供選擇的格子對準可能包括將底線格子旋轉到非水平和垂直排列(例如,45度)。使用非水平和垂直排列可以提供降低來自用戶的視覺迷惑(distraction)的可能的好處。簡單起見,格子的方向(水平的和垂直的和將底線格子傾斜到其它方向)共同被稱作預定格子方向。
接著,分析圖像601來確定所缺少的邊角。將圖像601旋轉到準備用來譯碼603的圖像所需的旋轉量o示為o=(θ加上旋轉量{由所缺少的邊角確定})。該旋轉量由圖7中的方程式示出。再參考圖6,角度θ首先由像素的布局(layout)確定以便到達像素水平的和垂直的(或其它預定格子方向)排列,而圖像如602所示來旋轉。隨后,進行分析來確定所缺少的邊角,并將圖像602旋轉成603所示的圖像,從而形成用于譯碼的圖像。這里,圖像被逆時針旋轉了90度,從而圖像603的位置可以恢復。
可以理解,可以在圖像601旋轉之前或之后應用旋轉角度θ來考慮所缺少的邊角。
最后,圖像603中的代碼被讀出并和用來創建圖像403的初始數據流相關聯。這種關聯可以以多種方法進行。例如,可以通過遞歸方法進行,在遞歸方法中,恢復的比特流和初始比特流中所有其它的比特流片段比較。其次,可以在恢復的比特流和初始比特流之間,例如,通過使用這兩個比特流之間的漢明間距進行統計分析。可以理解,可以使用各種方法來確定在初始比特流中所恢復的比特流的位置。
一旦具有所恢復的比特,就需要將所獲取的圖像在初始陣列中(例如,圖4B中所示的)定位。由于具有大量的操作,因此在整個陣列中確定比特部分的位置的過程是很復雜的。首先,可以從照相機的理想獲取來使實際獲取的比特模糊(例如,照相機可以獲取具有使原始代碼模糊的筆跡的圖像)。其次,灰塵、折痕、反射等也可以產生獲取的圖像上的錯誤。這些錯誤使定位過程變得更加困難。在這方面,圖像獲取系統需要使用從圖像中提取的非順序比特來運作。以下示出了用于使用來自圖像的非順序比特運作的方法。
首先,只看序列,使該序列(或m序列)I對應冪級數I(x)=1/Pn(x)。同樣,R(x)=r0+r1x+r2x2+…+rn-1xn-1是任何非零多項式,其次數小于n.序列R對應R(x)/Pn(x).如上所述,R是I的移位型式(shifted version).距離D定義為I和R之間的距離。如果R是I的第s個移位,則這可以表示為D(R)=s。距離D可以使用各種不同的技術計算。一項技術是通過確定兩者之間的漢明間距。另一個方法是通過使用由Douglas W.Clark和Lih-Jyh Weng的文章″Maximal and Near-MaximalShift Register SequencesEfficient Event Counters and Easy DiscreteLogarithms,″IEEE計算機學報43.5(1994年5月,pp560-568)中介紹的Pohilig-Hellman-Silver算法。還可以使用本技術領域中已知的其它的距離確定技術。使用Pohilig-Hellman-Silver算法時,R(x)≡xsmod(Pn(x))。
但是,嘗試使用折疊的序列計算距離是更加復雜的,因為所提取的代碼可以是非連續的并還可能包括錯誤。用以上的陣列分析開始,可以從圖像確定位置。可以用以下的關系開始R=rtA (2)其中,r=(r0r1r2…rn-1)t,而A=(IT(I)…Tn-1(I))t由I的循環移位構成。因此,任何I的循環移位都是rt和A的乘積。如果筆讀取k個比特(I的b=(b0b1b2…bk-1)t其中(k≥n)),則R(x)可以用于將b0循環移位到序列(或m序列)的起始部分。隨后,該移位調整A的列來產生A的n×k的子矩陣M。因此,rTM=bT(3)其中T表示矩陣或矢量的變換。
如果M的所有行都是獨立的,則可以確定r而D(R)通過調整方程式(1)的一維位置造成I中b0的絕對位置。這意味著可以確定b0比特的二維位置。該位置信息允許確定筆尖的位置。
接著,可以確定和檢查所有A的調整。
可供選擇的,因為矩陣A很大,所以不是所有A的調整都需要保留。事實上,在某些執行過程中,只有列之間的相對位置是相關的。因此,可以保存的列(在將b0移位到序列(或m序列)的起始部分后)是那些當筆(也就是,照相機)旋轉時其對應的二維位置在照相機的接收域內的列。這些列可以存儲于具有二維位置信息的陣列(例如,矩陣)中。一個實例包括“元件-類型CoreVector(核心矢量)[行大小][列大小]”這種列的總數遠小于L(其中L=2n-1)。如果b是無錯誤的,則r的解可以表示為rt=b~tM~-1--(4)]]>其中 是M的非簡并(non-degenerate)的n×n子矩陣而 是相應的b的子矢量。
錯誤校正如果在b中存在錯誤,則r的解將變得更加復雜。如果b中的錯誤數(表示為ne)小于d/2,其中d是由M所產生代碼的最小漢明距離,則b可以被校正。不幸的是,由于矩陣M對應不同的筆姿變化,且矩陣M的結構是不規則的,則不便應用具有錯誤校正的常規譯碼方法。在某些情況下,當出現錯誤時,認為不能精確地確定d。參見Ilya Dumer,Daniele Micciancio和Madhu Sudan,″Hardness ofApproximating the Minimal Distance of a Linear Code″,IEEE計算機科學基礎的論文集1999,pp.475-485。
但是,使用隨機方法實現了積極的結果。假定ne相比k相對較小,則當隨機選擇了n個比特而它在M中所對應的列是獨立的時,則從b的k比特選擇正確的n個比特的概率很大。
系統可以在圖像中重復選擇隨機比特。如果系統重復該選擇和分析很多次,則它一般能分離出序列中的合適距離。換句話說,當選擇了正確的比特時,bt和rtM之間的漢明距離將最小,其中r是通過方程式(4)計算的。重復幾次,正確的r將比其它的距離出現更多次,并因此很容易識別。其結果可以單獨使用或可以結合之前的位置信息使用。例如,如果照相機獲取可以位于該頁頂部的線上的一串圖像,且從照相機的當前圖像提供,例如,從之前的串有一個很近、一個很遠的兩個距離,則更加可能的是,在很短的時間內用戶只將筆移動較小的量而不是移動較大的量。可以使用之前的圖像獲取和當前的圖像獲取之間的其它類型的分析。
如果存在不同的r以使bt和rTM之間的漢明距離都最小,則ne超過由M所產生代碼的錯誤校正能力的概率很大,且譯碼過程失敗。隨后,系統可以移到來自照相機的下一個所獲取的圖像。
最后,可以確定正確的b,而在序列(m序列)I中的r的位置可以通過各種技術(包括,但不限于Pohilig-Hellman-Silver算法)來計算。隨后可以定位筆尖。
圖8示出了可以用于在所獲取的圖像的序列(或m序列)中確定位置的過程。首先,在步驟801中,接收到和所獲取的圖像相關的數據流。在步驟802中,從所獲取的圖像和由所獲取的圖像中的信息構建的矩陣提取列。在步驟803中,根據距離將代碼排序。可以使用各種本技術領域內已知的排序算法來將代碼排序。例如,可以使用選擇排序算法。選擇排序算法是有利的,其中m不是很大。但是,如果m變得很大,則可以使用其它更有效地處理更多項的排序算法(例如,合并排序)。
在步驟804中,從步驟802中構建的矩陣中選擇M行矢量,而從802的矩陣到陣列(或m陣列)的起始部分來確定距離矢量r。
所獲取的圖像可以包括比確定矩陣M的位置所需的更多的信息。例如,如果每個比特由9個像素表示而照相機圖像系統包括32×32比特的矩陣,則可以得到約100個比特(10×10)。這些圖像比特中,n被用于確定位置。所以,例如,如果陣列m1,m2的大小是255×255(65025),則將所獲取的圖像定位所需的比特數將為n,其中m1xm2≤L=2n-1。這里,n=16。因此,所獲取的圖像所需要用來產生能夠定位圖像的比特數為n。為了提供各種不同的選擇來考慮錯誤,需要從圖像中提取超過n個比特。例如,如果所需的n的數量為16,則照相機將需要產生18或者更多的比特。
該分析在步驟805中進行K次(例如,10到100到500次)。該方法嘗試確定具有最多重復結果的位置,且其錯誤比特的數量小于一個值(例如,3)。隨后,系統確定在步驟806中錯誤校正是否進行得順利。如果否,則將錯誤返回到步驟809。如果是,則在步驟807的序列(或m序列)中計算提取的代碼的位置(例如,通過Pohilig-Hellman-Silver算法)。該步驟還可以包括計算yi=yn/m1并在組列表中查找系數(factor)以便得到Ri的剩余值的子步驟。這可以表示為L=Σ(nmi·Ri·Vi)modn---(5)]]>L表示序列的長度。接著,陣列中的(X,Y)位置表示為x=Lmodn1和y=Lmodn2且結果返回到步驟808。
位置確定圖9示出用于確定筆尖位置的過程。輸入是由照相機獲取的圖像,而輸出可以是該圖像相比總圖像的位置坐標。而且,輸出可以包括(或不包括)所獲取的圖像的旋轉角度。
在步驟901中,從照相機接收圖像。接著,所接收的圖像可以選擇性地在步驟902中預處理(如步驟902中由虛線標出的)來調整亮和暗像素之間的對比度,旨在確定所獲取的圖像的旋轉角度等等。
接著,在步驟903中,分析圖像來確定其中的比特流。
接著,在步驟904中,比特流和初始比特流比較并確定在初始比特流中所接收的比特流的位置。當系統意識到初始比特流如何卷繞來創建圖像403時,可以進行該比較。最后,一旦在步驟904中確定了所獲取的圖像的位置,則在步驟905中可以確定筆尖的位置。
圖10示出用來確定筆尖位置的可供選擇的方法。首先,在步驟1001中從照相機接收圖像。隨后,該圖像可以選擇性地進行步驟1002中的預處理(如步驟1002中的虛線所示)。在步驟1003中提取圖形。這里,可以提取各種線上的像素來找到圖形的方向并確定角度θ。
接著,在步驟1004中分析所接收的圖像來確定像素和網格線基礎分布。如果在步驟1005中找到網格線,則在步驟1006中從圖形提取代碼。隨后,在步驟1007中將該代碼譯碼并在步驟1008中確定筆尖的位置。如果在步驟1005中沒有找到網格線,則在步驟1009返回錯誤信號。
雖然用所附權利要求定義了本發明,但這些權利要求是說明性的,其中,本發明旨在包括此處說明的組合或子組合中的單元和步驟。因此,存在任何數量的可供選擇的組合來定義本發明,它們結合一個或多個說明書中的單元,包括描述、權利要求和附圖,在各種組合或子組合中。對于相關技術領域中的熟練的技術人員來說明顯的是,根據本說明書,本發明的各方面的可供選擇的組合,無論是單獨或者結合一個或多個此處定義的單元或步驟,可以用作本發明或本發明的一部分的修改或變化。包含在這里的本發明的書面描述旨在覆蓋所有這樣的修改和變化。
權利要求
1.用于確定所獲取的陣列的位置的方法,其特征在于,包括以下步驟從所述所獲取的陣列中提取列;根據距離將從所述列提取的代碼排序;從所述列構建矩陣并確定從所述代碼到在更大的陣列中的代碼的矢量;確定所提取的代碼的位置。
2.如權利要求1所述的方法,其特征在于,還包括以下步驟從所述列中構建至少另一個矩陣并確定至少一第二矢量。
3.如權利要求1所述的方法,其特征在于,還包括以下步驟在所述代碼上進行錯誤校正。
全文摘要
描述了用于從更大的圖像中確定所獲取圖像的位置的系統和處理過程。可以將非重復序列折疊成非重復陣列,其中該陣列對于給定大小的每個子窗口是唯一的。子窗口的圖像可以被獲取且在非重復陣列內確定其位置。
文檔編號G06F3/042GK1866183SQ20061009248
公開日2006年11月22日 申請日期2003年9月29日 優先權日2002年10月31日
發明者王建, 林舟晨, 李越 申請人:微軟公司