欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種用于處理電子圖像內(nèi)容以顯示的方法和系統(tǒng)的制作方法

文檔序號:6349406閱讀:346來源:國知局
專利名稱:一種用于處理電子圖像內(nèi)容以顯示的方法和系統(tǒng)的制作方法
技術領域
本發(fā)明涉及一種用于處理電子圖像內(nèi)容以顯示的方法和系統(tǒng),尤其涉及一種圖像處理器;以及用于執(zhí)行該方法的計算機程序代碼。本發(fā)明給出了詳細說明,但并不排除以顯示在計算機屏幕上的內(nèi)容的形式處理圖像數(shù)據(jù)來在電視上或諸如投影儀等的其他顯示裝置上顯示的應用。
背景技術
電子圖像內(nèi)容通常通過以適合顯示裝置接收的格式或者經(jīng)由中間裝置傳輸該內(nèi)容來顯示在例如投影儀、電視等的顯示裝置上,該中間裝置通常接收原始電子圖像內(nèi)容并且以諸如用于標準接口連接的VGA或HDMI的適合顯示的格式輸出該內(nèi)容。一種現(xiàn)有的中間裝置是數(shù)字媒體接收器,用于在家庭網(wǎng)絡內(nèi)使用以能夠將家庭計算機的內(nèi)容顯示在電視上,來在與計算機分開的位置(例如客廳)欣賞圖像內(nèi)容,或者用于將計算機的內(nèi)容呈現(xiàn)在更方便觀看的裝置上,例如投影屏幕。數(shù)字媒體接收器使得先前在計算機上可訪問的內(nèi)容能夠被顯示在任何顯示裝置上且可被任何顯示裝置所訪問。但是, 雖然這樣的裝置能夠顯示家庭計算機的內(nèi)容,但還存在和顯示質量和健壯性相關的許多問題?,F(xiàn)代顯示裝置,例如等離子顯示器、IXD屏幕和投影儀,能夠顯示高分辨率的圖像內(nèi)容,當其被看作來自計算機的數(shù)據(jù)的輸入流時,其需要大的帶寬??梢圆捎脡嚎s技術來降低帶寬需求,但是這些技術可能降低圖像質量,并且不僅耗時而且大量占用處理器。當多個計算機連接到該裝置和/或多個顯示裝置時,這尤其明顯。所采用的另一技術為減小每秒傳輸?shù)膱D像幀的數(shù)目,但這通常導致圖像抖動和/或音頻被顯示。

發(fā)明內(nèi)容
根據(jù)本發(fā)明的一個方面,提供了一種處理電子圖像內(nèi)容用于顯示的方法,該方法包括計算系統(tǒng)接收包括第一陣列像素的第一圖像;所述計算系統(tǒng)接收包括第二陣列像素的第二圖像;所述計算系統(tǒng)的比較器通過比較所述第一陣列和所述第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同并將所述第二陣列的所述不同像素輸出到至少一個圖像編輯器;所述圖像編輯器構建新圖像用于顯示,該新圖像包括由所述比較器從所述第二陣列識別的所述不同像素和所述第一陣列中與第二陣列的所述不同像素互補的像素;并且輸出該新圖像用于顯示。該計算系統(tǒng)可以是分布式計算系統(tǒng)且可包括一個或多個計算機。該計算系統(tǒng)還可包括具有計算能力的其他裝置,例如數(shù)碼相機、PDA、移動電話等。在一個實施例中,該圖像編輯器通過電信網(wǎng)絡連接到該計算系統(tǒng),通常是計算機。 但是,本領域技術人員應該理解,該計算系統(tǒng)可以包括顯示裝置。同樣,計算系統(tǒng)中的任一計算機可以將不同像素作為圖像碎片輸出到至少一個圖像編輯器,其中該圖像編輯器可被包含到顯示裝置中,或者包含到作為圖像處理器的中間圖像處理裝置中,其遠離計算機以接收圖像內(nèi)容用于在不同種類的顯示裝置上顯示。在一個實例中,輸出該圖像碎片的一個計算機是源計算機,其可額外地輸出控制信息以控制該圖像內(nèi)容的顯示。在這種情況中,用于傳輸圖像和控制信息的電信網(wǎng)絡可以是有線或無線LAN且通信協(xié)議可以是TCP/IP用于可靠數(shù)據(jù)傳送。本領域普通技術人員可以理解,比較器從第二陣列識別的不同像素形成圖像數(shù)據(jù),具體地,圖像碎片。而且,應該理解,圖像由像素陣列形成,像素陣列中的每個像素根據(jù)諸如顏色和透明度的像素質量被指定為位集(collection of bits)。例如,圖像可以是每像素8位以指定這些質量。這樣,圖像碎片僅包括與第一陣列中對應像素不同的那些像素, 且互補像素是未發(fā)現(xiàn)與第一陣列存在不同的像素。通常,在幀之間,僅圖像的一部分發(fā)生改變,因此,優(yōu)選地,僅該部分經(jīng)由TCP/IP輸出到圖像編輯器。這也有利于出于安全考慮認證數(shù)據(jù)的接收。這樣,該方法還包括當圖像編輯器遠離計算機時,圖像編輯器認證對計算機的接收。如果圖像編輯器包括在計算系統(tǒng)中,認證可以在系統(tǒng)的部件之間執(zhí)行,以確??煽啃?。在另一實施例中,遠程圖像編輯器和計算系統(tǒng)之間的所有數(shù)據(jù)通信可經(jīng)由握手認證協(xié)議來執(zhí)行以用于可靠的數(shù)據(jù)傳輸。本領域普通技術人員可以理解,顯示裝置在本說明書中可以被稱為電視,但是也可包括IXD屏幕、投影儀等,所有這些都需要使用標準化的音頻/視頻接口以標準化格式接收視頻內(nèi)容,尤其是其圖像部分,該接口例如HDMI、VGA、分量視頻等。另外,本領域普通技術人員應該理解,該顯示裝置還可以是目的計算機的計算機屏幕。在這種情況下,可以使用諸如VGA的標準化接口接收圖像內(nèi)容,或者目的計算機可包括圖像編輯器以使用所接收的圖像碎片構建新圖像用于在所連接的計算機屏幕上顯示。如上所述,期望控制圖像內(nèi)容的顯示,且在一個實施例中,除圖像數(shù)據(jù)外還輸出控制信息以控制圖像內(nèi)容在一個或多個顯示裝置上的顯示??刂菩畔⒖捎糜谶h程控制顯示裝置的顯示,包括圖像內(nèi)容顯示的暫停、繼續(xù)、開始和停止。而且,控制信息可用于允許計算系統(tǒng)的源計算機調(diào)整目的顯示裝置的顯示,包括調(diào)整顯示的尺寸或分辨率。在另一實施例中,該控制信息包括第一和第二陣列的像素陣列尺寸。像素陣列尺寸信息便于顯示裝置在沒有調(diào)整顯示尺寸的情況下改變其來自所切換的源的不同尺寸圖像內(nèi)容的顯示。還期望除了上述圖像內(nèi)容,還接收音頻和/或視頻內(nèi)容或數(shù)據(jù)用于顯示,尤其是用于視頻剪輯的顯示。在這種情況下,期望通過電信網(wǎng)絡將音頻、視頻和/或圖像內(nèi)容作為流數(shù)據(jù)傳輸,以減小帶寬需求。在一個實例中,在計算機桌面圖像內(nèi)顯示視頻剪輯,這可以以比整個計算機屏幕小的顯示尺寸顯示。在該實例中,在時間上分開的第一陣列與第二陣列的像素差異可僅應用到正在被顯示的視頻剪輯的改變中,而不應用到計算機桌面圖像的其余部分。因此,本領域普通技術人員應該理解顯示視頻剪輯的一種方法是經(jīng)由計算機以合適的高刷新率識別顯示該視頻剪輯的一部分屏幕的哪些像素已經(jīng)改變。但是,這樣的高刷新率通常要求高帶寬需求且因此可能發(fā)生抖動。另一種方法是除了以流數(shù)據(jù)輸出視頻剪輯的音頻和視頻數(shù)據(jù)外,還將桌面圖像的不包括視頻剪輯像素的不同像素輸出到圖像編輯器。這種方法中,音頻和視頻數(shù)據(jù)與包括不同像素的數(shù)據(jù)重疊,以顯示包括視頻剪輯的圖像內(nèi)容并且沒有拖尾且無需這樣的高刷新率因此進一步減小帶寬需求。在另一實例中,將流數(shù)據(jù)輸出到以存儲器為媒介且通常位于服務器中的所述圖像編輯器。所存儲的數(shù)據(jù)可被壓縮且該存儲器可以是隨機存取存儲器以減小處理時間。該服務器還可以是不止一個圖像編輯器的媒介,使得多個圖像編輯器能夠接收相同的流數(shù)據(jù)用于顯示。另外,由于流數(shù)據(jù)被記錄在存儲器上,單個顯示裝置可以被定制為在任意一個時間顯示流數(shù)據(jù)的不同部分。替代地,存儲器和圖像編輯器可以位于每個圖像處理裝置中,以使流數(shù)據(jù)本地存儲。在存在多個圖像編輯器的實施例中,普通技術人員可以理解還可存在至少一個顯示裝置對應于圖像編輯器,特別是對應于位于圖像處理裝置中的圖像編輯器。在這種情況下,由所述比較器識別的不同像素到每個圖像編輯器的輸出是同步的,以提供在對應顯示裝置上的同步顯示。例如,一種方法包括源計算機顯示和控制圖像內(nèi)容在多個顯示裝置上的顯示,該多個顯示裝置采用多個圖像編輯器,以為每個對應的顯示裝置處理圖像和控制數(shù)據(jù)。該方法還包括監(jiān)控計算機的CPU使用率,以避免減小用于處理圖像數(shù)據(jù)之外的處理其他信息的可用的資源。在一個實施例中,當超過CPU使用率閾值時,計算機將比較器通過比較第一陣列和第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同,以及輸出第二陣列的不同像素到圖像編輯器予以暫停。在一個實施例中,該閾值是30%。根據(jù)本發(fā)明的另一方面,提供了一種用于處理電子圖像內(nèi)容以顯示的系統(tǒng),該系統(tǒng)包括計算系統(tǒng),被設置為接收包括第一陣列像素的第一圖像和包括第二陣列像素的第二圖像;所述計算系統(tǒng)的比較器被設置為通過比較所述第一陣列和所述第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同并將所述第二陣列的所述不同像素輸出到至少一個圖像編輯器;由此,所述圖像編輯器被設置為構建新圖像用于顯示,該新圖像包括由所述比較器從所述第二陣列識別的所述不同像素和所述第一陣列中與第二陣列的所述不同像素互補的像素;并且輸出該新圖像用于顯示。根據(jù)本發(fā)明的另一方面,提供了一種用于處理電子圖像內(nèi)容用于顯示的裝置,該裝置包括圖像編輯器,該圖像編輯器被設置為接收包括第一陣列像素的第一圖像;接收包括第二陣列像素的第二圖像的像素,該包括第二陣列像素的第二圖像的像素與第一陣列的對應像素不同;構建新圖像用于顯示,該新圖像包括由所述比較器從所述第二陣列識別的所述不同像素和所述第一陣列中與第二陣列的所述不同像素互補的像素;并且輸出該新圖像用于顯示。根據(jù)本發(fā)明的另一方面,提供了一種計算機程序代碼,當被執(zhí)行時,其實現(xiàn)了上述方法。根據(jù)本發(fā)明的另一個方面,提供了一種包括上面程序代碼的計算機可讀介質。根據(jù)本發(fā)明的另一個方面,提供了一種包括上面程序代碼的數(shù)據(jù)信號。


為了更清楚地確定本發(fā)明,現(xiàn)在將結合附圖通過實例來描述實施例,其中圖1是根據(jù)本發(fā)明實施例的用于處理電子圖像內(nèi)容以顯示的系統(tǒng)的示意圖;圖2是根據(jù)本發(fā)明的由圖1的系統(tǒng)所實現(xiàn)的方法的流程圖;圖3是示出通過網(wǎng)絡在計算、圖像處理裝置和顯示裝置之間發(fā)送信息的圖2的方法的流程圖4A是圖1的系統(tǒng)的示意圖;圖4B是圖1的系統(tǒng)的示意圖;圖4C是圖1的系統(tǒng)的示意圖;圖5是示出多個計算機通過網(wǎng)絡連接到多個用于處理電子圖像內(nèi)容的裝置、接下來該用于處理電子圖像內(nèi)容的裝置連接到多個顯示裝置的圖1的系統(tǒng)的示意圖;圖6是示出圖5的系統(tǒng)的示意圖,其示出以服務器為媒介的包括存儲器的裝置,其中該存儲器用于由對應的裝置存?。粓D7是示出具有存儲器的處理裝置的圖5的系統(tǒng)的示意圖;圖8是圖1的系統(tǒng)的狀態(tài)圖。
具體實施例方式根據(jù)本發(fā)明的實施例,提供一種用于處理電子圖像內(nèi)容以顯示的系統(tǒng)10,包括具有比較器14的、用于接收第一和第二圖像的計算系統(tǒng)12,該比較器被設置為識別第一圖像的哪些像素與第二圖像的哪些像素不同并將不同像素作為圖像碎片輸出到圖像編輯器16。 如所描述的,該計算系統(tǒng)可包括一個或多個計算機,或具有計算能力的裝置,例如數(shù)碼相機、PDA、移動電話等,且因此包括顯示器、處理器、輸入裝置、硬盤驅動器等部件。而且,由于圖像編輯器16可被設置為遠離計算系統(tǒng)和比較器,普通技術人員應該理解,圖像編輯器16 可包括諸如處理器等的類似硬件,以構建圖像用于顯示。如果圖像編輯器位于計算系統(tǒng)內(nèi), 則可以共享硬件。而且,如果圖像編輯器位于諸如投影儀的顯示裝置內(nèi),則諸如電源和網(wǎng)絡端口的硬件也可以共享。在一個實施例中,圖像編輯器16由從比較器14接收的圖像碎片和第一圖像中處于與圖像碎片的像素陣列互補位置的像素構建新圖像,用于由諸如電視的顯示裝置顯示。 因此,圖像編輯器16需要另外的硬件來接收和轉發(fā)數(shù)據(jù),尤其是接收圖像數(shù)據(jù)和以電視或類似裝置易于接受的、例如HDMI的形式輸出顯示數(shù)據(jù)。該顯示器還可以是等離子顯示器或 LCD屏幕,投影儀、手持觀看裝置等。圖2是由處理電子圖像內(nèi)容的系統(tǒng)實現(xiàn)的方法18的流程圖。方法18包括首先接收包括第一陣列像素的第一圖像20。如所描述的,圖像通常由像素陣列形成,像素陣列中的每個像素根據(jù)像素質量被指定為位集(collection of bits)。同樣,本領域普通技術人員應該理解用于顯示的電子圖像內(nèi)容可以是顯示在計算系統(tǒng)的源計算機屏幕或諸如PDA的源電子裝置的屏幕上的圖像,其可包括靜態(tài)電子圖像,例如桌面圖像,或在桌面示出的、包括視頻和音頻數(shù)據(jù)二者的視頻剪輯。同樣,桌面可僅顯示正在播放的音頻剪輯,且在這種情況下,將音頻數(shù)據(jù)輸出到顯示裝置用于顯示。在圖像內(nèi)容包括靜態(tài)圖像序列或幀的情況下, 諸如計算機屏幕的顯示,在連續(xù)的幀之間僅圖像的一部分發(fā)生變化。在一個實施例中,方法18還包括接收包括第二陣列像素的第二圖像22。在一個實施例中,第一和第二圖像可以由計算機接收。而且,該計算機可包括比較器,該比較器用于識別第二陣列像素中哪些像素與第一陣列的對應像素不同對。也就是說,比較每一陣列的對應坐標的像素以識別哪些像素不同。通常,第一和第二圖像的陣列尺寸是相同的,但是, 在它們不同的情況下,計算機可實現(xiàn)變換算法來擴大或縮小陣列,以確保對應像素之間的精確比較且識別出不同像素。
計算系統(tǒng)的比較器隨后可輸出發(fā)現(xiàn)存在不同的像素26,以用于構建新圖像28用于顯示。在一個實例中,不同像素通過網(wǎng)絡輸出到遠離該計算系統(tǒng)的圖像編輯器。但是,在另一實例中,圖像編輯器包含在該計算系統(tǒng)中。該圖像編輯器可執(zhí)行構建新圖像用于顯示的步驟,該新圖像包括不同像素和第一陣列的與不同像素互補的像素。在一個實例中,通過將該不同像素覆蓋到其在第一圖像的像素陣列的對應位置來形成該新圖像,但是可以想象采用其他方法來構建該新圖像,例如組合該不同像素和第一圖像的像素。無論如何,該新圖像被輸出30用于顯示。該方法還可包括將該新圖像輸出到任意數(shù)量的顯示裝置用于顯示, 例如,多個電視位于例如一房子內(nèi)的客廳和臥室的多個觀看位置的情況。處理電子圖像內(nèi)容的方法還可包括通過網(wǎng)絡輸出該不同像素到多個遠離該計算系統(tǒng)的圖像編輯器。采用這樣的方法的實例是具有源計算機的授課者希望顯示和控制電子圖像內(nèi)容的教學環(huán)境,該電子圖像內(nèi)容以桌面內(nèi)容形式無線地傳輸?shù)蕉鄠€學生的顯示器, 例如計算機屏幕和投影儀。圖3中也示出處理電子圖像內(nèi)容方法的流程圖32,其中示出了圖像內(nèi)容通過電信網(wǎng)絡在計算系統(tǒng)(源計算機)34和一個圖像處理裝置(圖像處理器)36之間發(fā)送,并且最后到達顯示裝置(電視)38用于顯示。在所示實施例中,圖像編輯器42與計算機和其比較器40遠離,且被包含在圖像處理器36中。設想圖像處理器36包括其獨立完成功能所必須的特征,例如處理器和電源,還包括使其能夠通過網(wǎng)絡與諸如合適的端口、接口等的任意顯示裝置通信的特征。流程圖32還示出了圖1的系統(tǒng)隨時間實現(xiàn)的方法。在一個實例中,首先,計算機 34接收上述類型的第一和第二圖像,但是,在該情況中,比較器40識別第一圖像是空圖像并因此所輸出的不同像素對應于所接收的第二圖像。在所示實例中,圖像44被輸出到圖像處理器36,處理器36接下來辨認互補像素是空的,并輸出該圖像用于由電視38顯示。如果方法需要,則圖像處理器36返回確認圖像的接收或者圖像成功顯示的確認包。在所示實例中,計算機所接收的第二圖像形成接下來由比較器40接收的第一圖像44。還接收了隨后的第二圖像46。隨后,比較器40識別兩幅圖像之間哪些像素不同,并僅將不同像素48作為圖像碎片通過網(wǎng)絡輸出到圖像處理器36,因此輸出到所包含的圖像編輯器42,而不是輸出具有較大包尺寸的全像素陣列的圖像。如果方法需要,可以確認圖像碎片48的接收。通過實例,在圖像處理器36和計算機34之間采用握手認證協(xié)議,其中直到接收到確認,才傳輸數(shù)據(jù)包。本領域普通技術人員應該理解,電信網(wǎng)絡可以是有線或無線LAN,且通信協(xié)議通常是TCP/IP。該協(xié)議使得圖像處理器可以位于遠離計算機的任意位置,而不僅僅是位于家庭網(wǎng)絡實例中的相同房子內(nèi)或教學環(huán)境實例中的相同大學內(nèi)。同樣,還應該理解,可以采用其他網(wǎng)絡和協(xié)議,例如UDP。圖像編輯器42可接收圖像碎片48并構建新圖像用于顯示,該新圖像包括圖像碎片48和第一陣列中處于與圖像碎片的像素陣列互補的位置的像素50。該新圖像52隨后作為圖像數(shù)據(jù)通過合適的線纜以適合電視的形式輸出到電視38用于顯示,其形式例如VGA或 HDMI。本領域普通技術人員還應該理解,輸出到顯示裝置的圖像數(shù)據(jù)還可通過有線或無線電信網(wǎng)絡輸出,且允許顯示裝置位于任意地點。
在另一實例中,參考圖4A、4B和4C進一步描述處理電子圖像內(nèi)容的系統(tǒng)。因此, 參見圖4A,可以從示意圖中看出,用于處理電子圖像內(nèi)容的系統(tǒng)M可以在用于處理電子圖像內(nèi)容的計算機56中實現(xiàn)。在此實施例中,計算機56包括比較器14,設置為識別第一圖像中的哪些像素與第二圖像中的像素不同,并且將這些不同的像素作為圖像碎片輸出;以及圖像編輯器16,設置為由從比較器接收到的圖像碎片和第一圖像中處于與圖像碎片的像素陣列互補的位置的像素構建新圖像,用于由顯示裝置58和顯示屏59 (例如可以是電視屏幕)顯示。圖像編輯器16以及因此計算機56將新圖像輸出到電視59,用于顯示。本領域技術人員可以理解圖4A中示出的系統(tǒng)的另一實施例的實例可以是當圖像處理器被用作處理和顯示電子圖像內(nèi)容的獨立的系統(tǒng)的情況。例如,希望顯示來自錄制光盤的圖像內(nèi)容的用戶可以直接將光盤插入圖像處理器并且將圖像內(nèi)容顯示出來,這是因為圖像處理器可以包含計算機處理能力。圖4B示出了另一實施例。從圖中可以看出,用于處理圖像內(nèi)容的系統(tǒng)60也包括具有比較器14的計算機56,但是圖像編輯器16遠離計算機設置而包含在顯示裝置58中。 在此實施例中,顯示裝置可以是具有屏幕59的電視機,并且可以想象,如果具有多于一個顯示裝置,每個顯示裝置都具有使用單獨的圖像編輯器16構建用于顯示的新圖像的處理能力。此外,在此實施例中,比較器14和位于電視中的圖形編輯器16之間可以通過上述類型的電信網(wǎng)絡通信。此外,本領域技術人員將理解,可以有多于一個計算機56,每個計算機 56自身具有比較器14,以識別圖像碎片并將其輸出到圖像編輯器16從而輸出到電視58。 因此,在圖像編輯器16包含于電視中的這種實例中,提供適當?shù)挠布蛙浖酝ㄟ^網(wǎng)絡從一個或多個所連接的計算機接收圖像碎片,從而可以構建用于在屏幕59上顯示的新圖像。圖4C示出了又一實施例。從圖中可以看出,用于處理圖像內(nèi)容的系統(tǒng)62可包括具有比較器14的計算機56,如上所述,比較器14設置為識別不同的像素作為圖像碎片。此夕卜,可以看出,比較器14輸出圖像碎片,用于通過計算機56能力經(jīng)由電信網(wǎng)絡傳輸?shù)轿挥趩为殘D像處理器64中的圖像編輯器16。然后,圖像編輯器16使用與上述相同的方法構建新圖像,用于顯示在顯示裝置58的屏幕59上。在圖5中更詳細地示出了圖4C中所示的實施例,從圖中可以看出,系統(tǒng)66中可以有多于一個計算機56,用于通過電信網(wǎng)絡68將圖像內(nèi)容提供給多于一個圖像處理器64,該圖像內(nèi)容可以顯示在多于一個顯示裝置上,例如電視或計算機屏幕59以及投影儀70。示出的網(wǎng)絡為互聯(lián)網(wǎng)云,但是其也可以是如上所述的LAN??梢钥闯?,利用上述處理圖像內(nèi)容的系統(tǒng)所實現(xiàn)的方法,計算機56將圖像作為桌面內(nèi)容顯示在計算機屏幕72上并且期望通過投影儀70在用戶屏幕59上觀看該圖像。在一個實例中,圖像處理器64可以通過使具有音頻數(shù)據(jù)的序列圖像流式輸出至電視屏幕59來輸出音頻內(nèi)容。因此,在實例中,除了正在輸出的計算機桌面內(nèi)容圖像之外, 音頻圖像也從計算機輸出到顯示裝置58,用于由該顯示裝置的揚聲器接收。在另一個實例中,圖像處理器64還可以通過使具有音頻和視頻數(shù)據(jù)的序列圖像流向顯示裝置來輸出除圖像內(nèi)容之外的視頻內(nèi)容。例如,源計算機可能希望在顯示裝置上顯示視頻剪輯。在這種情況下,視頻剪輯音頻和視頻數(shù)據(jù)作為流數(shù)據(jù)通過網(wǎng)絡68傳輸?shù)綀D像編輯器64。在視頻剪輯被顯示在計算機屏幕72上的源計算機桌面圖像內(nèi)的實例中,其可以顯示在比計算機屏幕更小的尺寸上。在此情況下,由計算機的比較器14識別的不同的像素僅應用于不包括視頻剪輯的桌面圖像部分。因此,在視頻剪輯是全屏的情況下,比較器輸出零差異。此外,計算機可以隨流音頻和視頻數(shù)據(jù)輸出用于視頻剪輯的控制信息,以控制視頻剪輯在顯示裝置上的顯示,例如暫停、播放等。在一個實例中,源計算機56和圖像處理器64運行應用以傳遞(communicate)來自源計算機上的定制的媒體播放器的信息,該源計算機處理命令和視頻剪輯數(shù)據(jù)以將音頻和視頻數(shù)據(jù)作為流數(shù)據(jù)輸出。例如,可以使用已知的通信信道通過網(wǎng)絡68傳遞流數(shù)據(jù)。然后,通過這些信道,以圖像處理器、最終是顯示裝置可以理解的格式發(fā)送來自源計算機的命令和播放器數(shù)據(jù)。此外,一旦建立通信,就會有連續(xù)的通信以保持源計算機和圖像處理器同

少ο可在源計算機或圖像處理器上運行的一部分應用作為代理,其接收第一示例中的命令和播放器同步數(shù)據(jù)。在此實例中,代理位于源計算機上并且將控制源計算機桌面的圖像環(huán)境內(nèi)的視頻碎片數(shù)據(jù)。如果源計算機接收到命令,例如連接、暫停、播放、繼續(xù),則其相應地作用于播放器,因為這些命令不是播放器控制,而是用于相應的顯示裝置的命令。例如在顯示裝置是投影儀的實例中,如果用戶希望暫停投影,則代理將相應地控制視頻碎片數(shù)據(jù)。除了這些投影命令之外,代理還可以接收播放器相關命令,例如調(diào)整尺寸、靜音、改變音量等等,這些命令還將被傳送至代理以產(chǎn)生作用。在上述實例中,視頻碎片本身可以對上述代理的控制做出反應。在此情況下,用比較器14從源計算機的圖像環(huán)境中識別的圖像碎片覆蓋視頻碎片。視頻碎片包使視頻和音頻數(shù)據(jù)能回放的數(shù)據(jù)和使數(shù)據(jù)與在圖像處理器64上運行的應用同步的數(shù)據(jù)。在一個實例中,圖像處理器64位于用戶計算機內(nèi),例如膝上型電腦,在另一個實例中,圖像處理器64遠離膝上型電腦,其對應于顯示裝置,并且該膝上型電腦包括膝上型電腦屏幕59。因此,可以看出,同步數(shù)據(jù)可以用于對源計算機和用戶的膝上型電腦分辨率不同的情況下的分辨率進行轉換,從而可以相應地調(diào)整圖像的尺寸。還可以相對于圖像環(huán)境,調(diào)整可能重疊在顯示屏幕的圖像環(huán)境上的視頻碎片或剪輯尺寸,以提供與源桌面圖像一致的顯示圖像。本領域技術人員也將理解,可能需要另外的算法和模塊來實現(xiàn)此步驟。在另一個實例中,通過在圖像處理器64和/或計算機56的操作系統(tǒng)上上運行的軟件應用之間的通信,可以控制并遠程操作圖像處理器64。在此實例中,可以使用期望的通信信道來遠程操作顯示裝置58和屏幕59。例如,電視可以接收基本操作員ASCII命令,例如打開和關閉。此外,可以使用計算機56上的控制應用遠程控制電視,其中除了上述流圖像和音頻/視頻數(shù)據(jù)之外,計算機56還將控制數(shù)據(jù)輸出到圖像處理器64??梢詫⒖刂茢?shù)據(jù)、圖像和音頻/視頻數(shù)據(jù)一起打包以使用TCP/IP通過電信網(wǎng)絡傳輸,并且還可以將控制數(shù)據(jù)、圖像和音頻/視頻數(shù)據(jù)與認證協(xié)議一起打包,以確保數(shù)據(jù)的傳輸。在一個實例中,使用用于通過電信網(wǎng)絡的所有通信的握手協(xié)議來減少未授權使用的情況以及減少數(shù)據(jù)盜用的風險。圖6中示出了另一實施例。從圖中可以看出,圖像處理器64的媒介是存儲器72, 其用于存儲由至少一個圖像處理器64檢索的流圖像和/或音頻和視頻數(shù)據(jù)。在所示實施例中,存儲器位于服務器73中,該服務器73通過電信網(wǎng)絡68與計算系統(tǒng)從而與源計算機連接。服務器73和圖像處理器64(客戶端)的客戶端-服務器設置允許每個客戶端單獨地控制對接收到的流數(shù)據(jù)的顯示。圖7中示出了可替換實施例,其中圖像處理器64包括存儲器72,以根據(jù)用戶的請求存儲接收到的流數(shù)據(jù),用于隨后的檢索。本領域技術人員將理解, 存儲器72可以遠離圖像處理器64設置,例如存儲器72可以包含在獨立的硬盤驅動器中。此外,計算機56可以運行另外的應用,例如定制的媒體播放器,以提供直觀的用戶界面,從而在顯示裝置上顯示圖像內(nèi)容。媒體播放器還可以具有能夠記錄所顯示的圖像內(nèi)容的功能,在此情況下,使用存儲器進行記錄。通過實例,定制的媒體播放器可以與在客戶端-服務器設置中的源計算機56和圖像處理器64上操作的軟件一起實現(xiàn),在客戶端-服務器設置中,源計算機用作服務器。但是可以想象,例如上述實例,服務器可以不同于源計算機。在此實例中,顯示屏幕59和投影儀70在接收到每個圖像處理器64的流圖像數(shù)據(jù)和音頻和視頻數(shù)據(jù)之后顯示來自源計算機的視頻和音頻剪輯。這種客戶端-服務器設置還提供各種其他功能,例如從服務器播放器控制遠程媒體播放器。例如,可以從服務器傳輸控制功能(例如停止、靜音、播放、暫停、關閉等),以控制客戶端顯示屏幕上的顯示。此外,還可以建立從服務器到客戶端圖像處理器上運行的特定客戶端播放器或者一組客戶端播放器的連接,以獨立地控制每個客戶端播放
ο在上述實例中,定制的媒體播放器服務器組件被劃分為三個主要的范圍,即內(nèi)容傳輸、控制傳輸和連接傳輸。有兩個信道用于從服務器到客戶端的通信,其中一個信道用于內(nèi)容傳輸,另一個用于控制和連接傳輸。內(nèi)容傳輸是實際的視頻、音頻或者視頻和音頻二者從服務器流向客戶端組件??梢赃h離服務器組件建立例如靜音、停止、暫停、播放、調(diào)整尺寸、重新定位、偏斜、放大、關閉、打開等控制。也可以從一個服務器到運行定制的媒體播放器的許多其它服務器建立如連接、斷開連接、暫停以及取消暫停等連接控制,每個播放器可以在任一時間點被暫停、連接、取消暫停以及斷開連接,而不干擾其它的客戶端播放器。通過VLC流模塊傳輸視頻和音頻內(nèi)容,并且當服務器組件的用戶界面中發(fā)生變化時,將包括控制傳輸?shù)臄?shù)據(jù)包通過遠程接口發(fā)送到所連接的定制的媒體播放器客戶端,以使其同步。 此外,每個同步控制傳輸包以及連接傳輸包被發(fā)送到所有連接的客戶端。它們是除圖像內(nèi)容和控制傳輸包之外被發(fā)送的,并且使得服務器播放器能夠啟動與特定的客戶端或一組客戶端的連接。因此,本領域技術人員將理解,這些命令包括如下高優(yōu)先級命令連接、斷開連接、暫停以及繼續(xù)。此外,上述實例的客戶端組件通常在遠程系統(tǒng)上運行,該遠程系統(tǒng)是被動的直到其從服務器接收到任何信息。在最初建立連接之后,保持所連接的客戶端和服務器組件之間的主動通信,并且每個客戶端從服務器接收三種類型的數(shù)據(jù),即內(nèi)容傳輸、控制傳輸和連接傳輸。此外,每個客戶端操作其數(shù)據(jù)而不干擾其它客戶端??蛻舳私邮盏降牡谝恍畔⑹沁B接傳輸,其提供關于連接類型的信息和關于已經(jīng)與其建立了連接的服務器的信息。其它的連接命令還包括斷開連接、暫停和繼續(xù)。接收到的第二信息是內(nèi)容傳輸,其為正在從服務器流出的實際的視頻和音頻內(nèi)容。最后,從服務器接收控制命令以使客戶端同步。例如在每個客戶端接收音量控制、停止、播放、暫停、繼續(xù)、關閉、調(diào)整尺寸、重新定位、全屏,以完全控制服務器、從而控制源計算機的顯示。在包括多個計算機56的另一實例中,上述控制信息可以包括關于將要顯示的每個計算機圖像的尺寸的詳細信息。當切換每個源計算機與圖像處理器64之間的連接時,可以使用不同的有限自動機算法來決定靜態(tài)桌面圖像內(nèi)容的尺寸。例如如果發(fā)生狀態(tài)改變(例如暫停、開始、停止、繼續(xù)等),則僅在檢測到桌面內(nèi)容的變化時,圖像處理算法將圖像數(shù)據(jù)從每個計算機發(fā)送到圖像處理器64,但在其它情況下,不發(fā)送圖像數(shù)據(jù),從而避免了對網(wǎng)絡帶寬不必要的使用。此外,當切換每個計算機與圖像處理器64之間的連接而沒有任何不連接時,不同的有限自動機算法還可以確定靜態(tài)計算機桌面圖像的尺寸,從而避免了連接延遲。該實例示出的是每個計算機同時連接到多個圖像處理器使得系統(tǒng)的連接拓撲為多對多的情況。即,每個圖像處理器可以連接到一個單個的輸出顯示裝置,其可以一次從許多源計算機接收圖像內(nèi)容作為輸入,并且每個源計算機一次可以連接到多個圖像處理器,使得其連接拓撲為多對多。如果這種情況存在,則可以使用上述應用及時、實時地切換使任一計算機作為主要的源或目的的選擇。此外,在任一時間點,可以及時暫停、繼續(xù)、開始、或停止顯示或投影。圖8示出了實現(xiàn)該方法的狀態(tài)圖,其包括除圖像數(shù)據(jù)之外,還輸出控制信息以控制多對多拓撲實例中的一個或多個顯示裝置。這里,可以看出,當出現(xiàn)下列情況時,不同的有限自動機算法決定必須調(diào)整尺寸的靜態(tài)桌面圖像在源計算機和/或圖像處理器之間及時切換連接、而沒有不連接的情況;或者發(fā)生了如暫停、開始、停止、繼續(xù)等狀態(tài)變化的情況??梢允褂脿顟B(tài)設計模式以任意適當?shù)挠嬎銠C語言來實現(xiàn)有限自動機。以下是對有限自動機的描述每個狀態(tài)下的值η描述了圖像是否必須被重置為全圖像,其中0為假,1為真。Q為一組有限狀態(tài);E為符號的有限集,d為從QxE到Q的函數(shù)。Q = {SO, SC, SPS, NC, SPA, SRS, SRA, URS, UPA,URA, UPS}E = {DS, DA, CS, CA, PS, PA, RS, RA}q0為初始狀態(tài)符號表SO-啟動狀態(tài)SC-同步連接SPS-同步暫停單個NC-無連接SPA-同步暫停所有SRA-同步重啟所有SRS-同步重啟單個URS-不同步重啟單個URA-不同步重啟所有UPS-不同步暫停單個UPA-不同步暫停所有DS-斷開單個的連接DA-斷開所有的連接CS-連接單個CA-連接所有PS-暫停單個
PA-暫停所有RS-重啟單個RA-重啟所有在圖8 中,SO、SPS、SPA、SRS、UPA 禾口 UPS 的值 η 為 0,SC、NC、URS 禾口 URA 的值 η 為 1。此外,下面描述了指示狀態(tài)之間的控制的符號SO-SC (CS)SO-NC (CA)SC-SO (DS,DA)SC-SPS (PS)SC-NC (CS,CA)SPS-SO (DA)SPS-SC (DS)SPS-SPS (PS,RS,DS)SPS-SPA (PA)SPS-NC (CS,CA)NC-SPS (DS)NC-NC (CS,CA)NC-SPA (PA)NC-UPS (PS)NC-SO (DA)SPA-SRS (RS)SPA-URS (CS,CA)SPA-SRA (RA)SPA-SO (DA)SPA-SPA (DS)SPA-SPS (DS)SRA-SO (DA)SRA-NC (CS, CA)SRA-SPA (PA)SRA-SPS (DA)SRA-SRA (DS)SRA-UPS (PS)SRS-NC (CS,CA)SRS-SO (DA)SRS-SRS (DS, PS)SRS-URA (RA)SRS-URS (RS)URS-UPA (PA)URS-URA (PA)
URS-UPS (RS,PS)URS-URS (RS,CS,CA)URA-UPS (CS, PS)URA-SPA (PA)URA-NC (CS, CA)URA-SO (DA)UPS-URS (RS,CS, CA, DS)UPS-SPS (PA)UPS-URA (RA)UPS-UPA (PA)UPS-UPS (PS,DS)UPS-SO (DA)UPA-SO (DA)UPA-URS (RS,CS,CA)UPA-UPS (DS)UPA-URA (RA)在又一實例中,除了傳輸控制和圖像包數(shù)據(jù)的算法之外,系統(tǒng)可以執(zhí)行維持源計算機的低CPU使用率、高圖像清晰度、容易切換以及控制多對多連接中的轉換的另外的算法。CPU使用率算法首先讀取源計算機的CPU使用率并且調(diào)整其它算法以使所需CPU使用率上限限制(cap off)到預配的極限。因此,算法適當?shù)厥褂昧丝捎觅Y源并且為源計算機的用戶提供了用于其它應用的空間。下面給出了算法的另外的細節(jié)。自動初始CPU上限限制算法自動初始CPU上限限制算法首先讀取用戶的CPU使用率并且將上述算法自動調(diào)整到預配值。因此,適當?shù)厥褂昧丝捎觅Y源并且為用戶提供了用于其它應用的空間。在前10 秒,算法記錄學習下的線程并計算線程必須等待以在CPU上限限制值內(nèi)執(zhí)行的間隔時間。偽代碼函數(shù) 1.該函數(shù)承擔一個重要任務捕獲桌面圖像。其與圖像差分算法同步運行。在捕獲桌面執(zhí)行一個周期之后,其等待圖像差分算法來完成其執(zhí)行。DesktopImageCaptureThread Function {
rectangle =屏幕分辨率
tempDesktopImage's PixelFormat = Format32bppArgb
while (連接)
{
CaptureThread AutoResetEvent .Wait 等待設置信號
Threadl TotalWaitTime = Threadl—waitTime—2 -Threadl—waitTime—2
if (_Optimize) 等待—Tl—NewWaitTime 秒執(zhí)行 CaptureDesktopScreen Threadl—waitTime—2 =標記當前時間設置 ImageDiffernce—AutoResetEvent Thread2_wai tTime—2 =標記當前時間
}
}
}函數(shù) 2該函數(shù)計算需要被發(fā)送到遠程客戶端系統(tǒng)的差分圖像。該線程與圖像捕獲線程一起工作。由該算法計算的等待值將用于該線程。ImageDiffernceComputationThread 函數(shù)
{
rectangle =屏幕分辨率
tempDesktopImage's PixelFormat = Format32bppArgb
while (連接)
{
ImageDiffernce AutoResetEvent.Wait 等待桌面圖像被捕獲 Thread2—TotalWaitTime = Thread2—waitTime—2 - Thread2—waitTime—1
if (_0ptimize) 等待—T2—NewWaitTime 秒執(zhí)行 ComputeImageDifference Thread2 wait Time 1 =標記當前時間設置 CaptureThread—AutoResetEvent
Threadl—waitTime—2 =標記當前時間
}
}
}函數(shù) 3該函數(shù)計算正在由上述線程使用的等待時間,以使它們的CPU使用率在特定限制以下。其利用許多統(tǒng)計數(shù)據(jù)得出等待時間,該等待時間為收集到的十次的算數(shù)平均值。一旦得到等待時間,該計算將不再執(zhí)行。PerformanceUpdateTimer—Tick 函數(shù)
{
TotalCPUUsageValue =得到總的CPU使用率的值調(diào)用UpdateProcessThreadValues函數(shù)以更新線程CPU值
if—optimising
{
if count <10
{
給 _count 加 1
JotalCPUAvg = totalCPUAvg + TotalCPUUsageValue CaptureThread waitTime = CaptureThread waitTime +
Threadl TotalWaitTime _ImageDiffThread_waitTime=—ImageDiffThread—waitTime+
Thread2—TotalWaitTime }
else {
totalCPUAvg = JotalCPUAvg / count _C aptureThread_CPUAvg = C aptureThread_CPUAvg / _count _lmageDiffThread_CP UAvg = _lmageDifFThread_CPUAvg / count _CaptureThread_waitTime =_CaptureThread_waitTime/_count ImageDiffThreadwaitTime = ImageDiffThreadwaitTime /
count
_percentCPUReduction = (_totalCPUAvg -
(RequiredCPUCapOff / JotalCPUAvg)
* 100
_reducedTl_CPU = (_CaptureThread_CPUAvg * _percentCPUReduction) /100
_reducedT2_CPU = (_ImageDiffThread_CPUAvg * _percentCPUReduction) /100
_reducedTl_CPU_Percent = ((_CaptureThread_CPUAvg -_reducedTl_CPU) /CaptureThread CPUAvg) * 100 —reducedT2—CPU—Percent = ((_ImageDiffThread_CPUAvg
-—reducedT2—CPU) /
ImageDiffThread CPUAvg) * 100 —Tl—NewWaitTime = ((_CaptureThread—waitTime * 100) / —reducedTl—CPU—Percent))-
—Tl—waitTime
—T2—NewWaitTime = ( ( ImageDiffThread waitTime * 100)/ —reducedT2—CPU—Percent))-
—Tl—waitTime
optimising =假 Optimize =真
}
}
}函數(shù) 4.為了核算所需的等待時間,需要記錄在當前CPU上運行的所有線程以及它們的 CPU使用率的值,其將用于下面的計算。
GetAllProcessThreadList 函數(shù)
{
—ThreadsList =得到CPU中運行的所有線程僅過濾出屬于該進程的線程
}函數(shù) 5由于該算法涉及兩個主要的耗CPU線程,因此我們需要過濾出不產(chǎn)生影響或者過多地使用CPU的這些線程。因此,該函數(shù)將過濾出不必要的線程并且僅考慮上文描述的、 CPU密集的這兩個線程。
UpdateProcessThreadValues 函數(shù)
{
對于CPU中的每個線程{
得到 CPUThreadValue
if (CPUThreadValue >5.0) {
if〔optimising) {
記錄第一線程
if(Thread_l_Name 為空) {
Thread_l_Name =貢獻大于總CPU消耗的30%的
CurrentCPUThreadValueName
}
}
else if (currentCPUThreadValueName 等丁·
Thread_l_Name)
—CaptureThread_CPUAvg = CaptureThreadCPUAvg + CPUThreadValue
現(xiàn)在記錄第二線程
if(Thread_2_Name 為空) {
檢查該名稱是否已經(jīng)分配給Thread—1—Name 如果Thread—l_Name不等于
currentCPUThreadValueName
{
if CPUThreadValue CPU >
(TotalCPUUsageValue *0. 3)
{
Thread_2 Name =
currentCPUThreadValueName
}
}}
else if (currentCPUThreadValueName 等于
Thread—2—Name)
將 CPUThreadValue 力口到
ImageDiffThreadCPUAvg
}
}
}部分圖像發(fā)送處理算法僅當檢測到桌面內(nèi)容變化時,圖像處理算法將圖像數(shù)據(jù)發(fā)送到圖像處理器,而在其它情況下不向圖像處理器發(fā)送圖像數(shù)據(jù),從而避免了對網(wǎng)絡帶寬不必要的使用。下面解釋基于算法做出的決定所發(fā)生的圖像轉換。偽代碼函數(shù) 1該函數(shù)捕獲桌面圖像并通知計算差分圖像的線程。圖像及其相關數(shù)據(jù)被發(fā)送到 dataContainer 巾,dataContainer
StartCapturing 函數(shù)
{
UnitDesktopImageData 力口 ill dataContainer
while (真)
{
等待直到—ImageProcessed為真 —desktoplmage = CaptureDesktop Image if (!_pauseCaptureThread) 發(fā)出—desktopCaptured 信號
}
}函數(shù) 2該函數(shù)計算當前桌面圖像和之前桌面圖像的差分圖像,如果_reSetImage沒有被設置為真,則當需要全圖像而非部分圖像時將—resetlmage設置為真。該函數(shù)返回僅包含變化而不包含冗余部分的圖像。將_儀8討1!11叫6設置為真的條件是重啟連接、連接單個、新連接、重新發(fā)送數(shù)據(jù)和分辨率變化。該函數(shù)與MartCapturing同步工作,一個進程接著一個進程。ComputelmageDifference 函數(shù) {
while (真)
{
等待直為真將—desktoplmage 賦值給—tempDesktopImage
if (_resetlmage)
{
_prevSynchronisedImage =空
//分辨率已經(jīng)變化。因此獲得新的屏幕坐標 imageRect =得到屏幕分辨率
}
if (_prevSynchronisedImage ==空) {
如果分辨率變化,下面的情況將避免發(fā)送_tempDesktopImage, 其可以是之前的分辨率,如果沒有檢查到分辨率變化,OnDataUpdated將發(fā)送圖像并將
_ tempDesktopImage 保持為_prevSynchronisedImage, 其與下一周期的新_tempDesktopIn^ge的分辨率不同, 因此在GetDifferenceln^ge函數(shù)中發(fā)生異常 If ( tempDesktopImage. Width == image processordesktopWidth
&&
_ tempDesktopImage.Height == image
processordesktopHeight)
{
將—tempDesktopImage 保存為 imageMemoryStream _unitDesktopImageData.width =_tempDesktop!mage. Width
_uni tDesktopImageData.height =
_tempDesktopImage.Height
difFerenceTmageArray =
imageMemoryStream. ToArray ()
_uni tDesktop ImageData. encodingType =
(int) —encodingType
uni tDesktop ImageData. imageBuffer =
—differencelmageArray
—unitDesktop ImageData. TopLeft—X—CoOrdiante = O _uni tDesktop ImageData. TopLeft_Y_CoOrdiante = O —data Container
二 —unitDesktopImageData 調(diào)用 OnDataUpdated 函數(shù)
}
}
else {
調(diào)用 GetDifferenceImage 函數(shù)
if (_imageDifference) {
#_diflf Image 保存為 imageMemory Stream
unitDesktopImageData.width = difflmage. Width —unitDesktopImageData.height二—difflmage. Height _difFerenceImageArray =
imageMemoryStream. ToArray ()
—unitDesktopTmageData encodingType 二
(int) —encodingType
_unitDesktopImageData.imageBuffer =
—differencelmageArray
_dataContainer
= _um tDesktopImageData 調(diào)用 OnDataUpdated 函數(shù)
}}
保持空閑所計算的—T2_NewWaitTime秒發(fā)出信號—ImageProcessed
}
}函數(shù) 3一旦差分圖像或全圖像就緒,就將其發(fā)送到目的程序,并且如果圖像已經(jīng)被使用或更新則得到返回值。這對于自始至終維持相同的前一圖像是必須的,其為源或客戶端桌面以及接收計算機。只有這樣做,差分圖像才會被附加而沒有任何幀損失。否則,源和目的圖像將不同。
OnDataUpdated 函數(shù)
{
將—dataContainer發(fā)送到目的地并且如果iimgeUpdatedAtDestination為真得到 imageUpdatedAtDestination
if (imageUpdatedAtDestination)
{
//當發(fā)送的圖像是第一個圖像或當分辨率變化時,_prevSynchronisedIimge為空。
if (_prevSynchronisedImage =空)
_prevSynchronisedImage =創(chuàng)建尺寸為—image processordesktopWidth 禾口 —image processordesktopHeight 的虛擬圖像 else
_prevSynchronisedImage= —currentDesktopImage
}函數(shù) 4計算差分圖像
得到 GetDifferenceImage 函數(shù)
{
//這個塊得到差分矩形的坐標
—remainl=圖像1中的一個像素間距的值_remain2 =圖像2中的一個像素間距的值
—ptrl =指向圖像1中的起始像素的指針 _ptr2 =指向圖像2中的起始像素的指針 loop from i = 0 till i < —height
{
loop from j = 0 till j < _width * 3 {
if Cptrl
!=_ptr2
) {
—topLeft—χ = j if (_topLeft_x > j) else
topLeftx
_topLeft_y = I if (_topLeft_y > i) else
_topLeft_y
btmRight x =j if (_btmRight_x <j) else
_btmRightx
_btmRight_y 二 I if (_btmRight_y < i) else
_btmRight_y
}
_ptrl++ _ptr2++ 1
}
_ptrl += —remainl _ptr2 += —remain2
ι
//如果上述坐標與完整圖像的相關值不同則有效 if( ! ((_ topLeftx = _width) && (_ topLeft_y = _height) && (_btmRight_x = 0) && (_btmRight_y =。))&& (_btmRight_y=_ topLeft_y)! = 0 &&((_ btmRight x - —topheft— χ) / 3) ! = 0)
{
//即使像素從第二行、第二列開始也認為其在行O、列O。 if (JopLeft—χ >= 2 && —topLeft_y >= 2)
{
_topLeft_y = —topLeft—y - 2 —topLeft—χ = —topLeft—χ - 2
}
—rectOf Change . X = —topLeft—χ / 3 —rectOf Change . Y = —topLeft—y
—rectOf Change . Width = (_btmRigh t_x - _ topLeft—x) / 3 —rectOf Change . Height = _btmRight_y - _ topLeft_y
//避免矩形大于分辨率時的異常
if ((_rectOfChange.X +—rectOfChange. Width + 2)〈—width)
—rectOfChange. Width = —rectOfChange. Width + 2 if ((_rectOfChange. Y + —rectOfChange. Height + 2)〈—height)
—rectOfChange. Height = —rectOfChange. Height + 2 #_tempDesktopImage Χ^Φ) i'J —diff Image TopLeft—X—CoOrdiante of—unitDesktopImageData =
—topLeft—χ
TopLeft—Y—CoOrdian te of —uni tDesktopImageDa ta =
_ topLeft—y
—imageDifference =真
}
else —imageDifference =假
tempDesktopImage 復制到—curren tDesktopImage
}從單個客戶端到多個圖像處理器連接的算法運行客戶端組件程序的用戶顯示裝置,例如用戶膝上型電腦,一次可以連接到多于一個圖像處理器。所有這些連接通過單個套接字連接完成。膝上型電腦維護用作服務器的所有活動圖像處理器的列表?;顒拥膱D像處理器是在該時間點連接并且正在進行主動通信的圖像處理器。每個包被傳送到整個列表。此外,內(nèi)置同步化屬性以確保所有圖像處理器接收相同的包而無差異。
偽代碼函數(shù) 1該函數(shù)使得客戶端膝上型電腦(顯示裝置)連接到圖像處理器。該方法還含有用于連接的認證機制。僅在連接有效時,圖像處理器被加入活動服務器的列表中。
ConnectToImage processor (圖像處理器 IP 地址);
當從客戶端接收到連接時,用IP認證連接并發(fā)送確認
if (OnSuccessfulConnection)
{
AddToimage processorList (圖像處理器 IP 地址) activeimage processorList.Add (圖像處理器 IP 地址) _proj ectingimage processorCount++
}函數(shù) 2該函數(shù)負責將圖像以及鼠標數(shù)據(jù)包發(fā)送至由函數(shù)1添加的列表中的所有的服務器。在發(fā)送完每個數(shù)據(jù)包之后,等待圖像處理器的確認,在確認之后,發(fā)送隨后的包。存在用于客戶端將要等待每個圖像處理器確認的時間的閾值時間。如果計時器暫停,則切斷與圖像處理器的連接并將該連接從圖像處理器的列表中刪除。
TriggerAsync S end ()
{
while (被所有服務器確認) {
—imageData = PacketProtocol .GetPacket (―ImageData)
對于—activeServerList中的每個服務器 {
socket. SendData (_imageDa ta)至 IP 地址 _proj ectingimage processorCount—
}
啟動—acknowledgeTimer。如果時間到了,則斷開此連接并從 activeimageprocessorlist 中移除此連接。
}
}函數(shù) 3
該函數(shù)負責一旦用于確認的閾值等待時間結束則從連接的圖像處理器列表中移除圖像處理器。
AcknowledgeTimeOutHandler ()
{
對于每個(在—serverlnventory. InActiveServerList 中
的失效服務器IP地址) {
_serverList. RemoveAt (index);
if (_activeServerList.Contains (失效圖像處理器 IP 地址))
{
indx = —activeServerList. IndexOf (失效圖像處理器 IP 地址 S) 從—activeServerList移除失效圖像處理器IP地址 _proj ectingServerCount—
}
}
}從單個圖像處理器到多個客戶端的連接單個圖像處理器可以連接到輸出將要被顯示的圖像內(nèi)容的多個客戶端顯示裝置。 通過維護主動連接到該圖像處理器的客戶端或源的列表,這是可能的。所有的連接通過單個套接字實現(xiàn)。基于源IP地址挑選從所有源接收到的數(shù)據(jù)包;如果之前已經(jīng)成為碎片則進行組合并更新該連接的顯示。偽代碼函數(shù) 1該函數(shù)能夠實現(xiàn)到源膝上型電腦的連接。其還包含用于連接的認證機制。僅在連
接有效時,該源被添加到活動源的列表中。
ConnectFromSourceReceived (源 IP 地址);
當從客戶端接收到連接時,用IP認證連接并發(fā)送確認。
if (OnSuccessfulConnection)
{
AddToSourceList (源 IP 地址) activeSourceList. Add (源 IP 地址) _proj ectingSourceCount++
}
函數(shù) 2此函數(shù)基于接收到的包類型以及發(fā)送該包的源對接收到的數(shù)據(jù)包執(zhí)行多個操作。其執(zhí)行以下操作■其接受來自需要將其內(nèi)容投送到圖像處理器的源的連接?!霎斀邮者B接時,其認證連接然后將該源IP地址加入其活動投射源列表的列表中。■基于頭部分離包并且通過檢查包大小查明其是否是有效包,如果包是有效的, 則將其發(fā)送到其各自的處理函數(shù)。如果包是無效的,則將其存儲在臨時緩沖器中并將其它包附加在其上直到其為有效包。
DataProcessor (所接收的數(shù)據(jù)e)
{
int requiredLength = 0, count = 0; bool breakProcessingLoop =真;
—receivedArray = e. TotalReceivedBuffer;
if (_incompleteByteArray) {
_partialArray =
ArrayUtility. AppendByteArray(_partialArray, receivedArray);
—receivedArray = _partial Array;incompleteByteArray =假;
}
while (真)
{
breakProcessingLoop =真;
receivedPacketData = GetPacketType ( receivedArray); —receivedPacketType = receivedPacketData . PacketType;
switch (_receivedPacketType) {
case Authentication;
//如果其為認證包,進行認證,如果失敗斷開包句柄
if (_receivedPacketType == Authentication) {
—socket. SendData (e. SourceIPAddress,
PacketProtocol. GetPacket (Acknowledge, AcknowledgementStatus. AuthenticationSuc cessful));
}
—receivedArray =空; break;
case Initial Setup:
//相應地初始化視圖類的顯示設置 if (_receivedPacketType == Initial Setup)
{
setUpData =
PacketProtocol. GetPacketData ( (int) —receivedP acketType, —receivedArray);
//確認—socket. SendData (e. SourceIPAddress ,
PacketProtocoL GetPacket (PacketType. Ack nowledge,
AcknowledgementStatus.BufferSizeSet)); —receivedArray =空;
}
break;
case PacketType. DataPacket:
//如果是數(shù)椐包,則將數(shù)椐傳送至靜態(tài)圖像以得到圖像數(shù)椐
if (_receivedPacketType==_DataPacket) {
—completeArray = —receivedArray ;
//檢查圖像處理器客戶端是否還處于連接。如果是,你將接收到圖像
if (_SourceConnected) {
—ImageData =
(ArrayList) PacketProtocol. GetPacketData (PacketType. DataPacket, —completeArray);
//將圖像數(shù)據(jù)發(fā)送到用于顯示的視圖類。
通過從-ImageDataList 建立圖像來—display. UpdateDesktopImage
}
//如果否,則連接已經(jīng)被斷開,設置默認圖像處理器服務器,顯示圖像
else
—display.UpdateDesktopImage (空);
—socket. SendData (e. SourceIPAddress,
PacketProtocoL GetPacket(PacketType. Acknowledge,
Acknowledgementstatus.DataReceived))
}
—received Array =空; break;
case PacketType MouseCursorPacket: if (_receivedPacketType -= MouseCursorPacket)
{
_mouseDataArray = —receivedArray;
}
mouseData =
PacketProtocol. GetPacketData (PacketT ype MouseCursorPacket, —mouseDataArray);
//將圖像數(shù)椐發(fā)送到用于顯示的視圖類,
—display. UpdateMouseData (_mouseData);
—received Array =空;
break;
case PacketType. MultiplePackets:
requiredLength 二 receivedPacketData.RequiredTrimmedBytes;
count二 0;
對于_receivedArray中的每個字節(jié)
{
if (count < reguiredLength)
{
if (_receivedTempArray_l ==空) —receivedTemp Array—1 =初始的;_receivedTempArray_l [count] 二 Byte;
ι
else {
if (_receivedTempArray_2 ==空) receivedTempArray—2 = new byte [—receivedArray. Length -
requiredLength];
receivedTempArray 2 [Math. Abs (count - (reguiredLength)) ] = Byte;
}
count++
}
receivedArray = —receivedTempArray—1 ; receivedTempArray l =空; breakProcessingLoop 二假; break;
case PacketType. IncompletePacket:
—incompleteByteArray =真; _remainingIncompleteByteLength = receivedPacketData. RemaininglncompleteByteLe ngth;
_partialArray = receivedArray; —receivedArray =空; break;
case PacketType. ResolutionChangePacket:
ResolutionChangeData = (ResolutionChangePcktStructure) PacketProtocol .GetPacketData (_receivedPacketType,—receivedArray); ChangeDesktopResolution(ResolutionChangeData. Width, ResolutionChangeData.Height);
_socket. SendData (e. Source IPAddress ,
PacketProtocol. GetPacket(Packe tType. Acknowl edge,
Acknowledgementstatus.ResolutionChangeSuccess ful));
—receivedArray =空; break;
}
//檢查是否有任何數(shù)據(jù)碎片留下
if (_receivedArray ==空 && —receivedTempArray—2 !=空)
{
—receivedArray = new byte [—receivedTempAr ray—2. Length];
—receivedArray = —receivedTempArray—2 ; —receivedTempArray—2 =空; breakProcessingLoop =假; } if (breakProcessingLoop) break;
}
}
權利要求
1.一種處理電子圖像內(nèi)容用于顯示的方法,該方法包括計算系統(tǒng)接收包括第一陣列像素的第一圖像;所述計算系統(tǒng)接收包括第二陣列像素的第二圖像;所述計算系統(tǒng)的比較器通過比較所述第一陣列和所述第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同,并將所述第二陣列的所述不同像素輸出到至少一個圖像編輯器;所述圖像編輯器構建新圖像用于顯示,該新圖像包括由所述比較器從所述第二陣列識別的所述不同像素和所述第一陣列中與第二陣列的所述不同像素互補的像素;和輸出該新圖像用于顯示。
2.如權利要求1所述的方法,其中所述圖像編輯器通過電信網(wǎng)絡連接到所述計算系統(tǒng)。
3.如權利要求2所述的方法,還包括通過所述電信網(wǎng)絡經(jīng)由TCP/IP從所述計算系統(tǒng)輸出由所述比較器從所述第二陣列識別的所述不同像素。
4.如權利要求3所述的方法,還包括所述圖像編輯器認證所述不同像素的接收。
5.如權利要求1所述的方法,還包括輸出該新圖像用于由至少一個顯示裝置顯示。
6.如權利要求5所述的方法,還包括使用音頻/視頻接口輸出到該顯示裝置。
7.如權利要求5所述的方法,還包括所述計算系統(tǒng)輸出控制信息以控制所述圖像內(nèi)容在該顯示裝置上的顯示。
8.如權利要求7所述的方法,其中所述控制信息包括所述第一和第二陣列的像素陣列尺寸。
9.如權利要求1所述的方法,還包括所述計算系統(tǒng)接收音頻和/或視頻數(shù)據(jù)并且除了由所述比較器從所述第二陣列識別的所述不同像素外還將所述音頻和/或視頻數(shù)據(jù)作為流數(shù)據(jù)輸出到該圖像編輯器。
10.如權利要求9所述的方法,還包括所述計算系統(tǒng)輸出控制信息以控制用于由至少一個顯示裝置顯示的所述音頻和/或視頻數(shù)據(jù)的顯示。
11.如權利要求9所述的方法,還包括輸出所述流數(shù)據(jù)到對于以存儲器為媒介的所述圖像編輯器。
12.如權利要求11所述的方法,其中所述存儲器位于通過電信網(wǎng)絡連接到所述計算系統(tǒng)的服務器中。
13.如權利要求1所述的方法,還包括從所述計算系統(tǒng)將由所述比較器識別的所述不同像素輸出到該至少一個圖像編輯器的每一個,以構建所述新圖像用于由對應于該圖像編輯器的每個顯示裝置顯示。
14.如權利要求13所述的方法,還包括所述計算系統(tǒng)將由所述比較器識別的所述不同像素同步輸出到每個圖像編輯器以提供在每個對應顯示裝置上的同步顯示。
15.如權利要求14所述的方法,還包括所述計算系統(tǒng)輸出控制信息以同步所述圖像內(nèi)容在每個對應顯示裝置上的顯示。
16.如權利要求1所述的方法,還包括在輸出到所述圖像編輯器之前壓縮由所述比較器從所述第二陣列識別的所述不同像素。
17.如權利要求1所述的方法,其中所述計算系統(tǒng)包括至少一個計算機。
18.如權利要求17所述的方法,其中所述圖像內(nèi)容作為電子圖像來自該至少一個計算機。
19.如權利要求1所述的方法,還包括當所述比較器超過所述計算系統(tǒng)的CPU使用率閾值時,所述計算暫停所述比較器通過比較所述第一陣列和所述第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同以及輸出所述第二陣列的所述不同像素到所述圖像編輯器。
20.如權利要求19所述的方法,其中所述閾值是所述計算系統(tǒng)的CPU使用率的30%。
21.一種用于處理電子圖像以顯示的系統(tǒng),該系統(tǒng)包括計算系統(tǒng),被設置為接收包括第一陣列像素的第一圖像和包括第二陣列像素的第二圖像;所述計算系統(tǒng)的比較器,被設置為通過比較所述第一陣列和所述第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同并將所述第二陣列的所述不同像素輸出到至少一個圖像編輯器,由此,所述圖像編輯器被設置為構建新圖像用于顯示,該新圖像包括由所述比較器從所述第二陣列識別的所述不同像素和所述第一陣列中與第二陣列的所述不同像素互補的像素,并且輸出該新圖像用于顯示。
22.如權利要求21所述的系統(tǒng),其中所述圖像編輯器通過電信網(wǎng)絡連接到所述計算系統(tǒng)。
23.如權利要求22所述的系統(tǒng),其中所述計算系統(tǒng)通過所述電信網(wǎng)絡經(jīng)由TCP/IP輸出由所述比較器從所述第二陣列識別的所述不同像素。
24.如權利要求21所述的系統(tǒng),其中所述圖像編輯器輸出所述新圖像用于由至少一個顯不裝置顯不。
25.如權利要求21所述的系統(tǒng),其中所述圖像編輯器使用音頻/視頻接口輸出到該顯示裝置。
26.如權利要求21所述的系統(tǒng),其中所述計算系統(tǒng)將由所述比較器識別的所述不同像素輸出到多個圖像編輯器,以構建所述新圖像用于由多個對應顯示裝置顯示。
27.如權利要求21所述的系統(tǒng),其中所述計算系統(tǒng)包括至少一個計算機。
28.一種用于處理電子圖像內(nèi)容以顯示的裝置,該裝置包括 圖像編輯器,被設置為接收包括第一陣列像素的第一圖像;接收包括第二陣列像素的第二圖像的像素,該包括第二陣列像素的第二圖像的像素與第一陣列的對應像素不同;構建新圖像用于顯示,該新圖像包括由所述比較器從所述第二陣列識別的所述不同像素和所述第一陣列中與第二陣列的所述不同像素互補的像素;并且輸出該新圖像用于顯示。
29.計算機程序代碼,當其被執(zhí)行時,實現(xiàn)權利要求1至20任一項所述的方法。
30.一種計算機可讀介質,包括權利要求觀的程序代碼。
31.一種數(shù)據(jù)文件,包括權利要求四的程序代碼。
全文摘要
本發(fā)明提供一種用于處理電子圖像內(nèi)容以顯示的方法、設備和裝置。在該方法中,計算系統(tǒng)(12)接收包括第一陣列像素的第一圖像和包括第二陣列像素的第二圖像;該計算系統(tǒng)(12)的比較器(14)通過比較第一陣列和第二陣列來識別第二陣列中哪些像素與第一陣列的對應像素不同并將第二陣列的不同像素輸出到至少一個圖像編輯器(16);該圖像編輯器(16)構建新圖像用于顯示,該新圖像包括由比較器從第二陣列識別的不同像素和第一陣列中對第二陣列的不同像素的互補像素。隨后,該新圖像被輸出用于顯示。
文檔編號G06T5/00GK102483844SQ201080024510
公開日2012年5月30日 申請日期2010年3月31日 優(yōu)先權日2009年4月2日
發(fā)明者H·拉維德拉巴布, 劉祖江 申請人:Ncs私人有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
永安市| 扶风县| 上林县| 石城县| 鹤壁市| 高青县| 潞城市| 栾城县| 柘城县| 澄城县| 察隅县| 得荣县| 无棣县| 宜宾县| 鞍山市| 海林市| 托里县| 漳浦县| 鄂托克前旗| 万源市| 江门市| 山东| 江孜县| 巩义市| 田东县| 洛浦县| 乐都县| 黔东| 留坝县| 法库县| 高邮市| 江山市| 根河市| 彩票| 遂宁市| 永泰县| 长顺县| 武胜县| 秭归县| 衡阳县| 施甸县|