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

主要功能實(shí)現(xiàn)在主機(jī)軟件中的攝像機(jī)的制作方法

文檔序號(hào):7601756閱讀:324來源:國知局
專利名稱:主要功能實(shí)現(xiàn)在主機(jī)軟件中的攝像機(jī)的制作方法
相關(guān)申請(qǐng)的相互參照
本申請(qǐng)為1999年6月30日提交的名為“基于圖象傳感器地漸暈糾正”的申請(qǐng)?zhí)?9/345,167、1999年12月15日提交的名為“動(dòng)態(tài)異常象素檢測(cè)與糾正”的申請(qǐng)?zhí)?9/464,364及1999年6月30日提交的名為“快速解碼”的申請(qǐng)?zhí)?9/343,934的部分繼續(xù)申請(qǐng)。通過引用將它們?nèi)拷Y(jié)合在此。
背景技術(shù)
本發(fā)明涉及攝像機(jī),具體地涉及用諸如通用串行總線(USB)等共用接口連接在計(jì)算機(jī)或其它智能設(shè)備上的攝像機(jī)。
已研制出用于提供靜止畫面與運(yùn)動(dòng)畫面兩者的攝像機(jī),它們能連接在計(jì)算機(jī)上以提供數(shù)字化圖象。這些攝像機(jī)能通過諸如USB等共用總線連接在計(jì)算機(jī)上。這限制了能發(fā)送的數(shù)據(jù)的帶寬而要求壓縮視頻數(shù)據(jù)。通常,攝像機(jī)在攝像機(jī)電子器件中進(jìn)行一些圖象預(yù)處理,從而既從計(jì)算機(jī)的CPU卸載了處理并潛在地減少了必須壓縮及在總線上發(fā)送的數(shù)據(jù)量。
以這一設(shè)計(jì),一些功能需要在攝像機(jī)中完成。例如,攝像機(jī)中的CCD或CMOS傳感器可能具有不正確地采集光線的有缺陷的檢測(cè)器位置。它們能通過平均在鄰接檢測(cè)器。位置上檢測(cè)到的光量并將其代替由有缺陷的位置所提供的值來加以補(bǔ)償。當(dāng)前,通常在攝像中進(jìn)行的諸如彩色處理與縮放等其它類型的處理之前需要完成這一類型的處理。


圖1為能通過總線連接到主機(jī)上的典型攝像機(jī)的框圖。鏡頭10將光線聚焦在帶有用于讀出傳感器數(shù)據(jù)的相關(guān)控制邏輯的傳感器12上。將數(shù)據(jù)提供給模數(shù)轉(zhuǎn)換器(ADC)14,在這里將其數(shù)字化。然后將數(shù)據(jù)存儲(chǔ)在幀緩沖存儲(chǔ)器16中??捎秒娐?8在數(shù)據(jù)上施加象素糾正??蓪⒓m正數(shù)據(jù)存儲(chǔ)在可編程存儲(chǔ)器20中。這一存儲(chǔ)器可在運(yùn)送攝像機(jī)之前的制造過程中編程。
通常以圖1中所示的特定次序在攝像機(jī)中執(zhí)行若干其它功能,然而它們可按其它次序或者在調(diào)用它們時(shí)通過總線連接來改變。例如,彩色處理電路22可執(zhí)行若干彩色功能,例如可將接收的數(shù)據(jù)從諸如YUV等一種彩色格式轉(zhuǎn)換成諸如RGB的另一格式。縮放器功能24能縮放圖象來符合主機(jī)上所要求的顯示。壓縮電路26壓縮數(shù)據(jù)以減少要在共用總線上傳輸?shù)臄?shù)據(jù)量。最后,總線接口電路28實(shí)現(xiàn)將數(shù)據(jù)傳輸?shù)竭h(yuǎn)程主機(jī)的總線30的協(xié)議。
赫夫曼編碼是最廣泛地用于壓縮視頻數(shù)據(jù)的算法之一。赫夫曼編碼已用在各種圖象與視頻壓縮標(biāo)準(zhǔn)中,諸如聯(lián)合照相專家組(JPEG)、運(yùn)動(dòng)圖象專家組(MPEG)、MPEG-II、H.261、H.263及H.323所規(guī)定的標(biāo)準(zhǔn)。將這些標(biāo)準(zhǔn)全文包含在此作為參考。赫夫曼編碼為無損失熵編碼技術(shù)。赫夫曼編碼利用概率來為最頻繁出現(xiàn)的數(shù)據(jù)選擇最短的碼字。例如,在編碼英文正文時(shí),可用2位碼字表示在英語中非常普遍的字符“E”,而可用8位碼字表示不那樣頻繁使用的“A”。
結(jié)果,赫夫曼編碼通過將較短的碼字分配給較頻繁出現(xiàn)的數(shù)據(jù)而將較長的碼字給較不頻繁出現(xiàn)的數(shù)據(jù)來壓縮數(shù)據(jù)。可將分配的碼字維護(hù)在一表中,然后由接收者與發(fā)送者共同使用。關(guān)于赫夫曼編碼的進(jìn)一步細(xì)節(jié)可在D.A.Huffman的“構(gòu)成最小冗余碼的方法”,IRE學(xué)報(bào),卷40,第9期,1952年9月,1098-1101頁中找到,將其全文結(jié)合在此作為參考。
此外,赫夫曼碼字是以這一方式構(gòu)成的,即沒有碼字是另一碼字的前綴。這保證盡管代碼是可變長度的,來自數(shù)據(jù)位流的各符號(hào)是無歧義解碼的。赫夫曼碼的特征的附加描述可在M.Nelson與J.L.Gailly的數(shù)據(jù)壓縮書本,M&T書本(1996年)中找到,將其全文結(jié)合在此作為參考。在31-35頁上,這一參考書提出基于樹跟蹤的解碼算法。然而這一算法不適用于使用諸如Intel、Pentium系列等當(dāng)前可獲得的大多數(shù)微處理器的快速解壓。
漸暈效應(yīng)是當(dāng)屏幕周邊的亮度小于屏幕中心的亮度時(shí)產(chǎn)生的暈圈效應(yīng)。專業(yè)攝影師有時(shí)用適當(dāng)?shù)溺R頭或屏幕試圖故意產(chǎn)生這一效應(yīng)以在畫面的邊沿產(chǎn)生柔和的圖象。然而當(dāng)在數(shù)字照片中非故意出現(xiàn)這一效應(yīng)時(shí),它是煩人的。已研發(fā)多種技術(shù)來測(cè)定與處理漸暈效應(yīng)。
專利號(hào)4,884,140示出為使用導(dǎo)致漸暈的變焦鏡頭的攝像機(jī)提供漸暈補(bǔ)償?shù)哪M電路。
專利號(hào)5,434,902示出通過使用恒定亮度圖象測(cè)定X線檢驗(yàn)裝置的漸暈效應(yīng)。然后為各象素在存儲(chǔ)器中存儲(chǔ)一糾正因子。
專利號(hào)5,576,797示出用焦點(diǎn)檢測(cè)裝置檢測(cè)攝像機(jī)中的漸暈效應(yīng)。
專利號(hào)5,381,174示出通過使用場(chǎng)頻鋸齒信號(hào)糾正由變焦鏡頭的操作引起的漸暈。
專利號(hào)4,816,663示出取象鏡與焦點(diǎn)檢測(cè)光學(xué)系統(tǒng)之間的漸暈檢測(cè)。
供與個(gè)人計(jì)算機(jī)一起用于個(gè)人電話會(huì)議的數(shù)字?jǐn)z像機(jī)已越來越便宜。這在攝像機(jī)制造商身上施壓去采用更便宜的鏡頭,它們具有更大的漸暈效應(yīng)。此外,價(jià)格壓力迫使制造商使用較少的半導(dǎo)體芯片,從而使得使用半導(dǎo)體存儲(chǔ)器存儲(chǔ)漸暈糾正不理想。從而,存在著對(duì)制造成本低廉并且也糾正廉價(jià)鏡頭的漸暈的數(shù)字?jǐn)z像機(jī)的需求。
用于生產(chǎn)圖象傳感器的過程雖高度先進(jìn)但不是完美的。圖象傳感器陣列中的光格點(diǎn)的靈敏度或?qū)⒐廪D(zhuǎn)換成電流的能力可能改變。有些改變是預(yù)期的與容許的,但有時(shí)陣列中的單個(gè)光格點(diǎn)可能是死的、不活躍的或過度活躍的。這能使顯示的圖象具有暗或黑點(diǎn)、亮白點(diǎn)或不正確的彩色點(diǎn),所有這些對(duì)最終用戶都是不想要與不希望的。在數(shù)字成象領(lǐng)域中人們也認(rèn)識(shí)到目標(biāo)圖象的不適當(dāng)數(shù)字化所導(dǎo)致的問題,并已提出各種解決方法來檢測(cè)與糾正有缺陷的象素??蓪⑦@些先有技術(shù)方法與系統(tǒng)大致上分成兩類。
一方面存在著各種基于硬件的方法用于檢測(cè)與糾正從圖象傳感器陣列取得的有缺陷象素。這些基于硬件的方法與系統(tǒng)對(duì)于攝像機(jī)制造商相當(dāng)普遍。大多數(shù)傳統(tǒng)攝像機(jī)采用固態(tài)取象裝置,包含有缺陷象素檢測(cè)與糾正電路用于糾正取自圖象傳感器陣列的有缺陷的象素。有缺陷的象素是在制造圖象傳感器時(shí)或之后產(chǎn)生的。在這種攝像機(jī)中,有缺陷象素糾正電路檢出有缺陷的象素并將位置數(shù)據(jù)及關(guān)于該有缺陷象素的各種數(shù)據(jù)存儲(chǔ)在只讀存儲(chǔ)器(ROM)等中。然后,在使用該攝像機(jī)時(shí),用來自靠近該有缺陷的象素的象素的數(shù)據(jù)取代來自該有缺陷象素的象素?cái)?shù)據(jù)。美國專利號(hào)5,796,430中公開了一種這樣的方法與系統(tǒng)。這種方法的缺點(diǎn)是需要在產(chǎn)品組裝與測(cè)試中加入程序存儲(chǔ)裝置,這增加成本并延長工期。此外,由于需要在視頻處理應(yīng)用特定的集成電路(ASIC)中增加糾正電路而同時(shí)增加硬件設(shè)備成本。
另一方面,存在著各種基于軟件的方法用于檢出與糾正數(shù)字圖象中的有缺陷象素。美國專利號(hào)5,982,946中公開了這樣的方法與系統(tǒng)。這些基于軟件的方法通常瞄準(zhǔn)在糾正已數(shù)字化并且完全處理過的圖象中的壞圖象象素上。這些已數(shù)字化圖象采用已通過彩色處理、壓縮及在從圖象傳感器陣列讀出的原始數(shù)據(jù)上執(zhí)行的各種其它處理的最終可顯示和存儲(chǔ)的形式。因此,這些處理完全處理過的數(shù)字圖象的基于軟件的方法可以糾正由諸如原始景象上的塵土或臟物、用于捕捉景象的鏡頭上的塵土或臟物等任何數(shù)目的人為事物導(dǎo)致的異常象素以及由有缺陷的光格點(diǎn)所導(dǎo)致的數(shù)字化圖象中的異常象素。這些方法通常依賴于較完善與昂貴的系統(tǒng)與計(jì)算機(jī)軟件來檢測(cè)與糾正壞象素。這些方法通常需要用戶輸入以檢測(cè)潛在的壞圖象象素的位置。一旦用戶用視覺掃描了整個(gè)圖象并標(biāo)記了潛在的壞圖象象素,包含軟件程序的系統(tǒng)便接手糾正加標(biāo)記的有缺陷象素。除了需要用戶輸入,這些方法也是昂貴的、乏味的與非常費(fèi)時(shí)的。
廉價(jià)的與PC接口的數(shù)字靜止與視頻攝像機(jī)設(shè)備的擴(kuò)張需要快速、動(dòng)態(tài)、廉價(jià)與智能的有缺陷象素檢測(cè)與糾正解決方案。發(fā)明概述
本發(fā)明通過將主要功能實(shí)現(xiàn)在主機(jī)軟件中提供低成本的攝像機(jī)。這是通過從攝像機(jī)直接將原始的數(shù)字化數(shù)據(jù)發(fā)送給主機(jī)實(shí)現(xiàn)的。通過使用無損失壓縮,使用有損式壓縮或使用較高帶寬的共用總線的以改進(jìn)的壓縮/解壓方案來處理原始數(shù)據(jù)的增加的容量。通過將諸如彩色處理及縮放等功能轉(zhuǎn)移給主機(jī),象素糾正也能轉(zhuǎn)移給主機(jī)。這又允許從攝像機(jī)中消除幀緩沖存儲(chǔ)器。最后,通過用存儲(chǔ)在攝像機(jī)的寄存器中的漸暈糾正值實(shí)現(xiàn)漸暈糾正以供主機(jī)以后訪問來執(zhí)行糾正,該攝像機(jī)能使用低成本鏡頭。
在一個(gè)實(shí)施例中,通過使用帶諸如Intel MMXTM技術(shù)的在多個(gè)組合象素值上同時(shí)操作的能力的處理器,主機(jī)解壓所傳輸?shù)臄?shù)據(jù)。這對(duì)于較大的數(shù)據(jù)量保持足夠的解壓速度而在幀速率上具有最小的影響。在一個(gè)實(shí)施例中,復(fù)制來自數(shù)據(jù)流的位組并將其提供給寄存器中的多個(gè)位置,它們能在那里同時(shí)與多個(gè)最大值比較。這能快速確定可變位編碼中多少位對(duì)應(yīng)于一象素值。
在采用有損失壓縮的實(shí)施例中,漸暈、反襯度、畸變或假頻糾正與象素糾正是在攝像機(jī)本身中執(zhí)行的,由于在有損失的壓縮/解壓過程中信息的損失會(huì)降低糾正能力。然而,彩色處理、縮放及其它操作仍在主機(jī)中執(zhí)行。實(shí)現(xiàn)了并不需要幀緩沖存儲(chǔ)器與彩色處理及縮放電路的低成本攝像機(jī)。
在一個(gè)實(shí)施例中,通過使用即使有漸暈畸變的低成本鏡頭能使攝像機(jī)的成本降低。這是通過在攝像機(jī)中提供諸如寄存器等存儲(chǔ)器單元達(dá)到的。在制造時(shí)用對(duì)應(yīng)于漸暈量或所需的糾正的值編程該存儲(chǔ)器單元。然后在操作期間主機(jī)可讀取該寄存器來確定在任何其它處理之前在所接收的數(shù)據(jù)上主機(jī)中所執(zhí)行的漸暈糾正算法中所需的糾正量。在一可替換的實(shí)施例中,該存儲(chǔ)單元能為鏡頭中的其它缺陷或攝像機(jī)的其它方面存儲(chǔ)糾正或值因子。例如,可存儲(chǔ)壞象素位置的指示供以后由主機(jī)讀取與糾正。
為了進(jìn)一步理解本發(fā)明的性質(zhì)與優(yōu)點(diǎn),應(yīng)參考下面結(jié)合附圖所作的描述。附圖簡述
圖1為先有技術(shù)攝像機(jī)的框圖。
圖2為將主要功能轉(zhuǎn)移到主機(jī)的本發(fā)明的一個(gè)實(shí)施例的框圖。
圖3為說明赫夫曼并行解碼操作的操作圖。
圖4說明用于執(zhí)行本發(fā)明的實(shí)施例的方法的計(jì)算機(jī)系統(tǒng)的示例。
圖5說明用于執(zhí)行本發(fā)明的實(shí)施例的方法的典型計(jì)算機(jī)系統(tǒng)100的簡化系統(tǒng)框圖。
圖6為按照本發(fā)明的實(shí)施例的SIMD系統(tǒng)300的簡化框圖。
圖7說明按照本發(fā)明的實(shí)施例的系統(tǒng)400的簡化框圖。
圖8說明按照本發(fā)明的實(shí)施例解碼赫夫曼編碼數(shù)據(jù)的順序解碼方法500。
圖9說明按照本發(fā)明的另一實(shí)施例解碼赫夫曼編碼數(shù)據(jù)的并行解碼方法600。
圖10為說明漸暈效應(yīng)的象素陣列與亮度曲線圖。
圖11為按照本發(fā)明的漸暈糾正的一個(gè)實(shí)施例的框圖。
圖12說明按照本發(fā)明的一個(gè)實(shí)施例檢測(cè)與糾正有缺陷象素的方法的簡化流程圖。
圖13為按照本發(fā)明的一個(gè)實(shí)施例的攝像機(jī)系統(tǒng)的框圖。
圖14為按照本發(fā)明的一個(gè)實(shí)施例的提供給CMOS傳感器陣列的脈沖的定時(shí)圖。
具體實(shí)施方式
I.總體系統(tǒng)
圖2為本發(fā)明的一個(gè)實(shí)施例的框圖。攝像機(jī)32和先有技術(shù)一樣包含鏡頭10、傳感器與控制邏輯12、及ADC14。然而除外壓縮單元26與總線接口28,其它主要功能被消除了。此外,增加了糾正寄存器34來存儲(chǔ)對(duì)應(yīng)于鏡頭10的漸暈的值。
攝像機(jī)通過共用總線30連接在主機(jī)36上。在主機(jī)36中,所示的單元為主機(jī)36的處理器所執(zhí)行的編程單元。其中有解壓單元38、漸暈糾正單元40、象素糾正單元42、彩色處理單元44及縮放單元46。同時(shí)示出的有用于存儲(chǔ)關(guān)于需要糾正的象素的統(tǒng)計(jì)信息的統(tǒng)計(jì)存儲(chǔ)器48,它可以是主機(jī)存儲(chǔ)器的一部分。II.赫夫曼解壓
最好,主機(jī)36所使用的處理器包含在單一寄存器中的多個(gè)組合象素上并行執(zhí)行操作的能力。例如,Intel MMXTM技術(shù)提供用于在微處理器寄存器中的組合象素上的這種操作的若干指令。從而,希望利用這些功能來提高處理速度。然而,有些操作并不支持這種同時(shí)操作。例如,赫夫曼壓縮通常用于視頻數(shù)據(jù),并用在本發(fā)明的實(shí)施例中。這是一種可變長度碼壓縮機(jī)制。換言之,對(duì)應(yīng)于一象素值的位數(shù)可以是1、2、3、4等,并能逐個(gè)象素改變。事先不知道位數(shù),并帶有不同的大小,便不能立即明白如何利用一組合象素寄存器,它為各象素表示使用相同的大小。
在當(dāng)今的USB技術(shù)的有限帶寬上,如果攝像機(jī)發(fā)送具有比已經(jīng)預(yù)處理過的數(shù)據(jù)大得多的數(shù)據(jù)量的原始數(shù)據(jù),希望能設(shè)法進(jìn)行并行解壓處理。這是通過獨(dú)一無二地采用組合象素配置來執(zhí)行赫夫曼解碼而完成的。
圖3為總的說明并行赫夫曼解碼如何進(jìn)行的圖。用若干字母示出進(jìn)入數(shù)據(jù)流50。各字母是指示不同位數(shù)的任意符號(hào)。在所示的例中,將第一位數(shù)A復(fù)制四次并放入第一寄存器52的四個(gè)位置中。第二寄存器54存儲(chǔ)四個(gè)不同的掩碼。這些掩碼啟動(dòng)與位段A中的位的不同部分的比較。例如,受檢驗(yàn)的A的位數(shù)可能分別是1、2、3與4。然后將這些與1、2、3與4位的赫夫曼碼的最大值進(jìn)行比較。這四個(gè)不同的最大值存儲(chǔ)在另一寄存器56中。從而,不是將位數(shù)A順序地與四個(gè)不同值比較,這能并行進(jìn)行,即使要比較的位數(shù)是可變的也一樣。這一變化是用屏蔽操作來克服的。從而,將相同的位數(shù)存儲(chǔ)在寄存器中各象素位置中,但借助于屏蔽操作為各象素位置比較不同的位數(shù)。
在所示的例中,位段A對(duì)應(yīng)于在最大段M3之內(nèi),然后在等式中利用它索引到組合赫夫曼值表58中。通過利用前面的比較的算術(shù)結(jié)果作為索引,先有技術(shù)中需要三次不同的表查找,現(xiàn)在只須進(jìn)行一次表查找來完成,從而節(jié)省了進(jìn)一步處理時(shí)間。
圖4說明用于執(zhí)行本發(fā)明的軟件的計(jì)算機(jī)系統(tǒng)的實(shí)例。圖4示出的計(jì)算機(jī)系統(tǒng)100包含監(jiān)視器104、屏幕102、機(jī)柜108、鍵盤214(見圖5)、及鼠標(biāo)器110。鼠標(biāo)器110可具有一或多個(gè)按鈕,諸如鼠標(biāo)器按鈕112。機(jī)柜108能容納CD-ROM驅(qū)動(dòng)器106與硬盤驅(qū)動(dòng)器(未示出),它們能用來存儲(chǔ)與檢索體現(xiàn)本發(fā)明的軟件程序。雖然CD-ROM 106示出為可卸的介質(zhì),其它可卸的現(xiàn)有介質(zhì)也可利用,其中包含軟盤、磁帶驅(qū)動(dòng)器、ZIP驅(qū)動(dòng)器,及閃速存儲(chǔ)器。機(jī)柜108也能容納諸如處理器、存儲(chǔ)器、及諸如此類的熟知的計(jì)算機(jī)部件。
圖5說明用于執(zhí)行本發(fā)明的實(shí)施例的軟件的典型計(jì)算機(jī)系統(tǒng)100的簡化系統(tǒng)框圖。如圖1中所示,計(jì)算機(jī)系統(tǒng)100可包含監(jiān)視器104。計(jì)算機(jī)系統(tǒng)100還能包含諸如I/O控制器204、系統(tǒng)存儲(chǔ)器206、中央處理器208、揚(yáng)聲器210、可卸盤212、鍵盤214、固定盤216、及網(wǎng)絡(luò)接口218等子系統(tǒng)。適用于本發(fā)明的其它計(jì)算機(jī)系統(tǒng)可包含或多或少的子系統(tǒng)。例如,另一計(jì)算機(jī)系統(tǒng)可包含一個(gè)以上處理器208(即多處理器系統(tǒng))或高速緩沖存儲(chǔ)器。諸如220等箭頭表示計(jì)算機(jī)系統(tǒng)100的系統(tǒng)總線體系結(jié)構(gòu)。然而,這些箭頭220示例服務(wù)于鏈接子系統(tǒng)的任何互聯(lián)方案。
例如,可用本機(jī)總線將中央處理器208連接在系統(tǒng)存儲(chǔ)器206上。同時(shí),可將諸如電耦合器件(CCD)攝像機(jī)等圖象捕捉設(shè)備連接在計(jì)算機(jī)系統(tǒng)100上用于捕捉圖象數(shù)據(jù)??赏ㄟ^諸如通用串行總線(USB)等同一或另一總線體系結(jié)構(gòu)將圖象捕捉設(shè)備連接在計(jì)算機(jī)系統(tǒng)100上。USB通過使用與設(shè)備驅(qū)動(dòng)器的數(shù)據(jù)庫匹配的標(biāo)識(shí)號(hào)為100臺(tái)以上連接的外圍設(shè)備提供插接與播放支持。也能通過I/O控制器204或網(wǎng)絡(luò)接口218將USB連接在計(jì)算機(jī)系統(tǒng)100上。此外,能將計(jì)算機(jī)系統(tǒng)100配置成通過諸如I/O控制器204或網(wǎng)絡(luò)接口218與因特網(wǎng)通信。從而,能用多種設(shè)備向/自計(jì)算機(jī)系統(tǒng)100傳輸數(shù)據(jù)。圖4中所示的計(jì)算機(jī)系統(tǒng)100只是適用于本發(fā)明的計(jì)算機(jī)系統(tǒng)的一個(gè)示例。對(duì)于熟悉本技術(shù)的人員適用于本發(fā)明的其它子系統(tǒng)配置是顯而易見的。
本發(fā)明能在能單指令多數(shù)據(jù)(SIMD)執(zhí)行的任何微處理器中實(shí)施。例如,IntelMMXTM微處理器、帶視覺指令集的SunUltraAPSRC、高級(jí)微設(shè)備公司(Advance Micro Device,Inc.)的3Dnow!TM、帶流送SIMD擴(kuò)展的IntelMMXTM等都可使用。為了示例,將描述使用IntelMMXTM的一種實(shí)現(xiàn)方案。MMXTM技術(shù)是在1997年1月正式引入以加速對(duì)CPU要求高的多媒體應(yīng)用的。MMXTM提供由Intel公司引入的一組指令(57條指令)。它能在同一指令中的64位的單元上執(zhí)行加、減、乘、邏輯與算術(shù)移位。64位單元也能作為8個(gè)字節(jié)、4個(gè)字、2個(gè)雙字、或一個(gè)四重字對(duì)待。提供了飽和算術(shù)與組裝/解開數(shù)據(jù)的指令以及在MMXTM寄存器與整數(shù)寄存器之間傳送數(shù)據(jù)的指令。進(jìn)一步的關(guān)于MMXTM技術(shù)的信息可在Intel(1996年)的“Intel體系結(jié)構(gòu)MMXTM技術(shù)開發(fā)者手冊(cè)導(dǎo)論”中找到,將其全文結(jié)合在此作為參考。
圖6為SIMD系統(tǒng)300的簡化框圖。該系統(tǒng)300包含當(dāng)前支持一57條指令集的MMXTM處理器302。MMXTM處理器能實(shí)現(xiàn)在CPU內(nèi)或者能另外實(shí)現(xiàn)在一分開的芯片中。MMXTM處理器302接收來自寄存器304a-h的數(shù)據(jù)。各該寄存器304a-h為64位寬。這些寄存器的各個(gè)能保持8×8、16×4、32×2、64×1位數(shù)據(jù)。MMXTM處理器302在一個(gè)周期中從寄存器304a-h接收數(shù)據(jù)及在數(shù)據(jù)上執(zhí)行要求的操作。然后將處理過的數(shù)據(jù)提供給存儲(chǔ)器306或返回給寄存器304a-h。存儲(chǔ)器306可實(shí)現(xiàn)在MMXTM處理器302內(nèi)或者它也能是共用的存儲(chǔ)器。結(jié)果,MMXTM處理器302能同時(shí)在不同數(shù)據(jù)上執(zhí)行相同的操作,從而它具有SIMD體系結(jié)構(gòu)。
圖7說明采用USB的系統(tǒng)400的簡化框圖。攝像機(jī)402捕捉圖象并將它們提供給位流轉(zhuǎn)換單元404。攝像機(jī)402能包含用于將模擬數(shù)據(jù)轉(zhuǎn)換成數(shù)字?jǐn)?shù)據(jù)的電路。攝像機(jī)402也能包含執(zhí)行數(shù)據(jù)壓縮與/或編碼的電路。攝像機(jī)402與位流轉(zhuǎn)換單元404通過連接器406連接??蓮谋炯夹g(shù)中普通技術(shù)人員所熟知的若干連接器或總線體系結(jié)構(gòu)中選擇連接器406。連接器406最好是USB連接。在一些實(shí)現(xiàn)中,USB提供12Mb/sec帶寬。連接器406的另一選擇可以是Firewire(IEEE1394),它能提供100Mb/sec、200、400或800Mb/sec的帶寬。對(duì)于某些實(shí)施例USB連接較佳,因?yàn)樗钱?dāng)前提供高達(dá)500mA與5V的供電的總線。能利用USB所提供的電能來運(yùn)行諸如攝像機(jī)402等連接在總線上的設(shè)備。此外,USB的實(shí)現(xiàn)較便宜。在一些實(shí)施例中,由于USB沒有與Firewires相同的帶寬,可在USB上傳輸之前首先壓縮數(shù)據(jù)時(shí)利用USB。
因此,攝像機(jī)402能包含壓縮電路以便在將數(shù)據(jù)發(fā)送到位流轉(zhuǎn)換單元404之前壓縮捕捉到的圖象。攝像機(jī)402可以是包含CCD、互補(bǔ)金屬氧化物半導(dǎo)體(CMOS)等的用于捕捉圖象的任何數(shù)目的器件??蓪⑽涣鬓D(zhuǎn)換單元404配置成將串行傳輸?shù)臄?shù)據(jù)轉(zhuǎn)換成數(shù)據(jù)分組。例如,位流轉(zhuǎn)換單元404能為各圖象幀累積數(shù)據(jù)并將累積的數(shù)據(jù)發(fā)送給解壓單元408。數(shù)據(jù)幀可以是任何規(guī)模的。但最好是352×288個(gè)象素。幀也能是320×240、176×144或160×120個(gè)象素的塊。在一些實(shí)施例中,數(shù)據(jù)幀可以是640×480個(gè)象素的塊。解壓單元408解壓與/或解碼從位流轉(zhuǎn)換單元404接收的數(shù)據(jù)。解碼可按照赫夫曼編碼、算術(shù)編碼、其它類型的熵編碼等。位流轉(zhuǎn)換單元404也能包含用于存儲(chǔ)從攝像機(jī)402接收的數(shù)據(jù)及發(fā)送給解壓單元408的數(shù)據(jù)的緩沖器。
然后將來自解壓單元408的解壓后的數(shù)據(jù)提供給彩色轉(zhuǎn)換單元410。來自解壓單元408的數(shù)據(jù)可是以任何格式但最好是YUV格式,其中Y是亮度,U是色度紅(也稱作CR),而V是色度蘭(也稱作CB)。轉(zhuǎn)換單元410將YUV格式數(shù)據(jù)轉(zhuǎn)換成包含RBG(紅、綠、與蘭)在內(nèi)的適合于顯示器412的格式。顯示器412可以是包含打印機(jī)、手持式設(shè)備等在內(nèi)的任何輸出設(shè)備。系統(tǒng)400還包含能為顯示器412、彩色轉(zhuǎn)換單元410及位流轉(zhuǎn)換單元404提供存儲(chǔ)的存儲(chǔ)器414。存儲(chǔ)器414可以是任何類型的存儲(chǔ)器,諸如動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、擴(kuò)展輸出DRAM(EDO DRAM)、同步DRAM(SDRAM)、視頻RAM(VRAM)、靜態(tài)RAM(SRAM)等。此外,位流轉(zhuǎn)換單元404、彩色轉(zhuǎn)換單元410與顯示器412可具有它們自己的本機(jī)存儲(chǔ)器。同時(shí),解壓單元408可具有其本身的存儲(chǔ)器或在需要時(shí)使用存儲(chǔ)器414供它存儲(chǔ)。
圖8說明用于解碼赫夫曼編碼數(shù)據(jù)的順序解碼方法500。順序解碼方法500利用下列四表產(chǎn)生解碼值。
MINCODE[I]-長度I的碼字的最小值;
MAXCODE[I]-長度I的碼字的最大值;
HUFFVAL[J]-對(duì)應(yīng)于第J個(gè)碼字的符號(hào)值表;及
VALPTR[I]-對(duì)用長度I的碼字解碼的HUFFVAL中的值的表的起點(diǎn)的索引。
所有碼字的最小長度為MinLength而所有碼字的最大長度為MaxLength。因此,表MINCODE、MAXCODE及VALPTR的大小等于[MaxLength-MinLength+1]。HUFFVAL的大小取決于碼字的數(shù)目,并記作N。MINCODE、MAXCODE及VALPTR三表用于為各有效赫夫曼碼解碼出對(duì)HUFFVAL的指針。
在步驟502中,接收位流數(shù)據(jù)供解碼。在步驟504中,將當(dāng)前碼長I設(shè)定為MinLength。步驟504還將變量CODE初始化成包含來自步驟502所提供的位流的碼字的NEXTBITS[MinLength]。步驟506將CODE的值與MAXCODE[I]比較。如果CODE的值大于MAXCODE[I]的值,指示當(dāng)前的碼字具有大于I的長度,I是在步驟504中首先初始化成MinLength的,步驟506后面是步驟508。在步驟508中,將I的值增加一。步驟508還將位流的下一位讀入CODE。步驟508通過在CODE的當(dāng)前值上執(zhí)行邏輯左移(SLL)一位,并用來自位流的下一位(NEXTBIT)填充CODE的最低位來更新CODE的值。
另一方面,如果在步驟506中判定CODE的值不大于MAXCODE[I]之值,指示當(dāng)前碼字具有等于或小于I的長度,則步驟506后面是步驟510。步驟510解碼符號(hào)值。步驟510計(jì)算碼值指針J然后用J計(jì)算符號(hào)值。步驟501將J設(shè)定為{VALPTR[I-MinLength]+CODE-MINCODE[I-MinLengthJ]}。然后步驟510通過設(shè)定VALUE為HUFFVAL[J]來計(jì)算符號(hào)值。從而步驟510執(zhí)行三次表查找,包含VALPTR、MINCODE及HUFFVAL,來計(jì)算符號(hào)值。然后將計(jì)算出的符號(hào)值(VALUE)提供給步驟512去輸出。為下一碼字重復(fù)順序解碼方法500。
可為各種實(shí)現(xiàn)來定制用于編碼與解碼的赫夫曼表。但大多數(shù)編碼標(biāo)準(zhǔn)提供缺省的赫夫曼表。下面的表1示出按照J(rèn)PEG標(biāo)準(zhǔn)的用于亮度DC差的一推薦的赫夫曼表。關(guān)于JPEG標(biāo)準(zhǔn)的進(jìn)一步的信息可在William B.Pennebaker與Joan L.Mitchell的“JPEG-靜止圖象數(shù)據(jù)壓縮標(biāo)準(zhǔn)”,附錄A,ISO DIS 10918-1,要求與指南,F(xiàn)-26頁,Van Nostrand Reiuhold,1993中找到,將其全文結(jié)合在此作為參考。
在JPEG標(biāo)準(zhǔn)中,MinLength為2且MaxLength為16。進(jìn)一步將碼字分類成按長度加以組合并在各長度組中按遞升的值次序排序。MINCODE與MAXCODE中的值為帶符號(hào)的16位整數(shù)。
表1
表1中,碼字表示來自定位流的實(shí)際碼字;碼長為各碼字的長度;Huff碼為各碼字的值;而Huff值為各符號(hào)的赫夫曼碼。
以表1中的值為例,Min Length=2及Max Length=9,順序解碼方法500所利用的三個(gè)表的表值如下
MINCODE[8]={0,2,14,30,62,126,254,510};
MAXCODE[8]={0,6,14,30,62,126,254,510};及
VALPTR[8]={0,1,6,7,8,9,10,11}
例如,考慮一進(jìn)入位流“010”,步驟504將I設(shè)定為2并將CODE設(shè)定為“01”。步驟506將返回“是”,因?yàn)椤?1”大于為0的MAXCODE[2-2]。在步驟508中,將I增加到3并將OCDE設(shè)定為“010”。再度重復(fù)步驟506而這一次它將返回“否”,因?yàn)椤?10”小于為6的MAXCODE[3-2]。然后步驟510將J設(shè)定為等于1。步驟510還查找HUFFVAL[I]的符號(hào)值并在步驟512中輸出這一符號(hào)值(VALUE)。
從而,順序方法500重復(fù)地將位流移位到CODE中并將當(dāng)前碼與相同長度的最大碼比較。一旦知道了碼長,各值的解碼需要兩次加法與三次表查找。這一算法本質(zhì)上是順序的,因?yàn)榇a長是順序地檢驗(yàn)的。這便是在檢驗(yàn)長度I之前,沒有實(shí)際碼長是否I,I+1,I+2等的指示。
圖9說明按照本發(fā)明的實(shí)施例的解碼赫夫曼編碼數(shù)據(jù)的并行解碼方法600。為了示例,將描述對(duì)圖6討論的并行解碼方法600的一種實(shí)現(xiàn)。同樣,在示例實(shí)施例中利用相對(duì)于圖8與表1討論的樣本JPEG值。然而并行解碼方法600可在能夠SIMD執(zhí)行的任何處理器上被執(zhí)行,其中這些處理器包含IntelMMXTM微處理器、帶視覺指令集的SunUltra SPARC、高級(jí)微設(shè)備公司的3DNow!TM、帶流送SIMD擴(kuò)展的IntelMMXTM等。
如上面詳述的,MMXTM技術(shù)能在同一指令中在64位單元上執(zhí)行操作。也能將64位的單元作為8個(gè)字節(jié)、4個(gè)字、2個(gè)雙字或一個(gè)四重字進(jìn)行處理。對(duì)于按照來自表1的值的實(shí)例,可將64位作為四個(gè)16位寄存器(或4個(gè)字)對(duì)待,因?yàn)楸?中的最大碼字長度為9。對(duì)于圖9的示例實(shí)施例,利用MMXTM指令PSRL、PSLL、及PSRA來移位選擇的變量的內(nèi)容。PSRL表示組合邏輯右移。PSLL表示組合邏輯左移而PSRA表示組合算術(shù)右移。
并行解碼方法600在步驟602中接收位流。在步驟604中將位流排列成little-endian格式的4位部分(或四重位)。這表示如果原始位流具有格式b0,b1,b2,b3,…(其中bi代表字節(jié)i),則轉(zhuǎn)換后的位流將具有格式b1,b0,b1,b0,b1,b0,b1,b0,b3,b2,b3,b2,b3,b2,b3,b2,b3,b2,…。
對(duì)于每一16位字,這一轉(zhuǎn)換可用5.5個(gè)周期實(shí)現(xiàn)。在步驟606中,初始化I、MASK與CODE4的值。如上面對(duì)JPEG實(shí)例討論的,將I初始化成2。步驟606將CODE4初始化成來自位流的第一組4×16位碼(或四重位)。并行解碼方法600在步驟608中用MASK屏蔽出用于比較操作的位。將MASK的初始值設(shè)定為“1100,0000,0000,0000,1110,0000,0000,0000,1111,0000,0000,0000,1111,1000,0000,0000b”或“0×C000,E000,F(xiàn)000,F(xiàn)800”。這是碼長2至5的位掩碼,它們將在并行解碼方法600的第一迭代中被檢驗(yàn)。
在步驟608中,用MASK的值屏蔽掉CODE4。步驟608還將MAXCODE4設(shè)定為MAXCODE4_P[I~I(xiàn)+3],后者表示對(duì)于I,I+1,I+2與I+3的MAXCODE4_P的值。相應(yīng)地,MAXCODE4將為四個(gè)接連的碼長保持最大值。因?yàn)镸AXCODE4的四個(gè)值是在單一指令中加載的,可將用于并行解碼方法600的MAXCODE表生成如下
I=0While I is less than(Maxlength-Minlength+2)do(當(dāng)I小于(Maxlength-Minlength+2)時(shí))J=(I/4)*4+3-I%4MAXCODE_P[I]=(2(16-Minlength-J)*MAXCODE[J]+1I=I+1End while(結(jié)束)
其中“/”表示舍位除法及“%”表示模運(yùn)算。MAXCODE4-P之值為不帶符號(hào)的16位整數(shù)。必須為各赫夫曼表示成MAXCODE表一次。
取與相對(duì)于圖8所討論的順序赫夫曼解碼算法中相同的實(shí)例,用于并行算法的MAXCODE表具有下列的值
MAXCODE_P[8]={61441,57345,49153,1,65281,65025,64513,63489}
對(duì)于一實(shí)例,表的尺度必須是4的倍數(shù)。并且,對(duì)于不存在在赫夫曼碼表中的碼長假設(shè)為零。
在步驟610中,將MAXCODE4的值與步驟606與608中初始化與屏蔽的CODE4比較。在使用MMXTM技術(shù)的實(shí)施例中,由于MMXTM指令PCMPEQ只比較帶符號(hào)的字,這一比較操作能用帶飽和的一次不帶符號(hào)的減法及一次與零的比較來進(jìn)行??蓪AXCODE的值存儲(chǔ)在MAXCODE4中。如果發(fā)現(xiàn)CODE4大于MAXCODE4,則在步驟612中將I增加4并通過將MASK的值向右算術(shù)移位4位來更新MASK。MASK的新值將為下面剩下的4個(gè)碼字長度(6至9)建立位屏蔽。步驟612之后,重復(fù)步驟608與610。從而,對(duì)于表1的實(shí)例,步驟608與610重復(fù)兩次,一次用于碼字長度2至5而一次用于碼長度6至9。
一旦步驟610返回“是”,步驟614判定正在檢驗(yàn)的四個(gè)長度中哪一個(gè)包含該符號(hào)。從而,步驟614計(jì)算設(shè)定為[MAXCODE4-CODE4-1]向右邏輯移位4位的DIF的值。步驟610還執(zhí)行表查找來提供找到的符號(hào)值(VALUE)。步驟614在表HUFFVAL_P中查找符號(hào)值(VALUE)。
對(duì)于這一實(shí)例,假設(shè)1<I<17,則可用[I+16*(MAXCODE[I]-CODE)]作為索引來建立HUFFVAL_P表。令
M=max(MAXCODE[I]-MINCODE[I]);及
I=0,1,2,…,Max Length-Min Length。
HUFFVAL_P表將具有[16*(M+2)]的大小。令COENUM[I]表示碼長為(I+Min Length)的碼字的數(shù)目。令CODE[I]表示第J個(gè)碼長為I的碼的碼值。大HUFFVAL表的表項(xiàng)可計(jì)算如下
I=0While I is less than(Maxlength-Minlength+1)do(當(dāng)I小于(Maxlength-Minlength+1)時(shí))J=QWhile J is less than CODENUM[I]do(當(dāng)J小于CODENUM[I]時(shí))HUFFVAL_P[I+16*(MAXCODE[I]+1-CODE[J])]=HUFFVAL[VALPTR[I]+CODE[J]-MINCODE[I]]J=J+1<!-- SIPO <DP n="17"> --><dp n="d17"/>End while(結(jié)束)I=I+1End while(結(jié)束)
從而,HUFFVAL_P表中的值將是取決于赫夫曼碼的數(shù)目的無符號(hào)16位整數(shù)的最大大小。通過將順序方法的三次表查找組合成一次,明顯地減少索引赫夫曼碼值所需的指令。同時(shí),減少表查找次數(shù)節(jié)省了寶貴的寄存器空間。并且,注意(MAXCODE[I]+1-CODE)是在確定碼長時(shí)計(jì)算的及可為這一表查找利用。
在步驟616中,輸出計(jì)算的符號(hào)值(VALUE)。一旦在步驟614中確定了當(dāng)前赫夫曼碼的碼長,便能左移當(dāng)前的4×16位碼字并將來自下一4×16位碼字的相同數(shù)目的位移入。然后開始下一個(gè)赫夫曼碼的解碼。
從而,并行解碼方法600一次從位流中讀入4位數(shù)據(jù)。并行檢驗(yàn)各接連的4位長度來判定當(dāng)前的碼字是否落入這一范圍中。代替順序算法中所需的16次檢驗(yàn)來覆蓋范圍1至16,只需四次檢驗(yàn)來覆蓋同一范圍。另一重大改進(jìn)是將用于解碼的三次表查找組合成單一的表查找。這具有減少計(jì)算及寄存器使用的效果,這在許多場(chǎng)合是非常寶貴的。長度1至8的樣板實(shí)施例
上面討論的示例實(shí)施例假定碼字具有2與9之間的長度、然而,如果碼字的長度在1與8之間,解碼可在8位單元上進(jìn)行。每一碼字需要最多一次而不是8次檢驗(yàn)。這要求將位流擴(kuò)張成8×8位。例如,如果輸入位流是“b0,b1,…”(其中bi代表字節(jié)i),轉(zhuǎn)換后的位流將是“b0,b0,b0,b0,b0,b0,b0,b0,b1,b1,b1,b1,b1,b1,b1,b1,…”。初始位掩碼現(xiàn)在是“10000000,11000000,11100000,11110000,11111000,11111100,11111110,11111111b”或“0×80C0,E0F8,F(xiàn)8FC,F(xiàn)EFF”。
表項(xiàng)將生成如下
I=0While I is less than(Maxlength-Minlength+1)do(當(dāng)I小于(Maxlength-Minlength+1)時(shí))J=(I/8)*8+7-I%8MAXCODE_P[I]=(2(8-Minlength-1)*MAXCODE[J]+1I=I+1End while(結(jié)束)I=1While I is less than 9 do(當(dāng)I小于9時(shí))J=0While J is less than CODENUM[I]do(當(dāng)J小于CODENUM[I]時(shí))HUFFVAL_P[I+8*(MAXCODE[I]+1-CODE[J])]=HUFFVAL[VALPTR[I]+CODE[J]-MINCODE[I]]J=J+1End while(結(jié)束)I=I+1End while(結(jié)束)
HUFFVAL_P表的值將是無符號(hào)8位整數(shù),MAXCODE_P表的值將是無符號(hào)8位整數(shù)。長度1至32的樣板實(shí)施例
如果碼字長度在1與32之間,解碼可在32位的單元上進(jìn)行。需要最多8次而不是16次檢驗(yàn)來確定碼字長度。位流擴(kuò)充至2×32位格式如下
輸入位流b0,b1,b2,b3,b4,b5,b6,b7,…
輸出位流b3,b2,b1,b0,b3,b2,b1,b0,b7,b6,b5,b4,b7,b6,b5,b4,…
初始位掩碼現(xiàn)在是“10000000,00000000,00000000,00000000,11000000,00000000,00000000,00000000,00000000b”或“0×8000,0000,C000,0000”。
表項(xiàng)可計(jì)算如下
I=0While I is less than 32 do(當(dāng)I小于32時(shí))J=(I/2)*2+1-I%2MAXCODE_P[I]=(2(32-Minlength-1)*MAXCODE[J]+1I=I+1End while(結(jié)束)I=1While I is less than 32 do(當(dāng)I小于32時(shí))J=0While J is less than CODENUM[I] do(當(dāng)J小于CODENUM[I]時(shí))HUFFVAL_P[I+32*(MAXCODE[I]+1-CODE[J])]=HUFFVAL[VALPTR[I]+CODE[J]-MINCODE[I]]J=J+1End while(結(jié)束)I=I+1End while(結(jié)束)
從而,MAXCODE_P表的值將是無符號(hào)32位整數(shù)。表HUFFVAL-P的值將是無符號(hào)32位整數(shù)的最大大小。性能估計(jì)
所提出的并行赫夫曼解碼算法已在MMXTM匯編代碼中實(shí)現(xiàn)。對(duì)于這一節(jié),將初始位流擴(kuò)張成4×16位部分的CPU時(shí)間包含在解碼時(shí)間中。
如果長度I的碼字以2-1的概率出現(xiàn),則長度I的碼字的概率將是CODENUM[I]*2-1。令T[I]為解碼長度I的碼字的時(shí)間,則一個(gè)符號(hào)的平均解碼時(shí)間可計(jì)算如下
假定用順序算法壓縮10個(gè)公共中間格式(CIF)畫面并且其中只有四分之一的離散余弦變換(DCT)系數(shù)是用RUN-LEVEL符號(hào)編碼的,要解碼的赫夫曼碼字的個(gè)數(shù)可計(jì)算如下
(352*288/4)*10=253,440
雖然在本例中選擇了DCT,本技術(shù)中的普通技術(shù)人員顯而易見能利用任何變換,諸如差分脈碼調(diào)制(DPCM)、子波、分波段變換、矢量量化等。下面表2中示出使用帶MMXTM和166MHz IntelPentium處理器的最佳情況(其中所有碼字為2至5位長)、最壞情況(其中所有碼字為12至15位長)及平均情況(其碼字長度分布在2至16位之間)的解壓計(jì)時(shí)。
表2
表2展示并行算法極大地降低最壞情況定時(shí),同時(shí)給予平均情況優(yōu)越的性能。同時(shí),注意通過進(jìn)一步優(yōu)化匯編代碼可達(dá)到甚至更好的結(jié)果。
如本技術(shù)中普通技術(shù)人員所理解的,本發(fā)明可以以其它特定形式實(shí)施不脫離其精神或主要特征。例如,也能將本發(fā)明的技術(shù)應(yīng)用在其它SIMD系統(tǒng)上,例如也能利用帶視覺指令集的SunUltraSPARC高級(jí)微設(shè)備公司的3Dnow!TM等。
并且,PentiumII的后繼者Intel的新PentiumIII(也稱作Katmai)增加了流送SIMD擴(kuò)展。PentiumIII提供了70條新指令。許多指令是用于瞄準(zhǔn)3-D應(yīng)用的浮點(diǎn)SIMD運(yùn)算。幾條用于固定點(diǎn)數(shù)運(yùn)算的指令也被加上。這些指令部分地瞄準(zhǔn)MPEG編碼/解碼(運(yùn)動(dòng)估算、運(yùn)動(dòng)補(bǔ)償)。然而,本技術(shù)中的普通技術(shù)人員會(huì)理解也能利用這些新指令來進(jìn)一步加速本發(fā)明的解碼技術(shù)。例如,Min與Max運(yùn)算能加快碼長檢測(cè)。傳輸整數(shù)寄存器與一部分MMXTM寄存器的插入指令也提供加速。類似地,廣播指令能以更高效方式復(fù)制位流。
此外,能在計(jì)算機(jī)系統(tǒng)中實(shí)現(xiàn)本發(fā)明的技術(shù)。例如,可在外圍設(shè)備部件互聯(lián)(PCE)卡上實(shí)現(xiàn)方法500與600??蓪CI卡安裝在個(gè)人計(jì)算機(jī)的PCI總線上。同時(shí)也能利用諸如NUBUS、ISA、EISA、通用串行總線(USB)、1394Firewite、及加速圖形端口(AGP)等其它總線技術(shù)。此外,通過利用諸如高速緩沖存儲(chǔ)、新指令集、多處理器系統(tǒng)及它們的等效物等可獲得的例程與特征能實(shí)現(xiàn)本發(fā)明的技術(shù)。III.漸暈糾正
圖2的寄存器34允許進(jìn)行漸暈糾正,從而允許在攝像機(jī)22中使用較便宜的鏡頭10。這允許將攝像機(jī)的成本降得更低。
操作中,主機(jī)36中的處理器詢問攝像機(jī)以讀取器34的值。然后將其用于主機(jī)的漸暈糾正單元40去糾正攝像機(jī)的漸暈缺陷。這是在單元42的象素糾正之前進(jìn)行的,以免誤將漸暈當(dāng)作有缺陷的象素。這一糾正能通過在所提供的象素亮度值上加上偏移值來完成。
圖10說明象素陣列11及Y軸上的對(duì)應(yīng)亮度曲線13。具有值(x0,y0)的中心象素17對(duì)應(yīng)于鏡頭的最大亮度點(diǎn)。第二樣本象素15接近最小亮度,展示具有曲線13與最大亮度值19之間的差的漸暈效應(yīng)。本發(fā)明在X與Y方向上糾正這一漸暈效應(yīng)。
在一個(gè)實(shí)施例中,示出用rT指示的閾值,在其以內(nèi)曲線13接近最大值19,而不需要施加漸暈糾正。作為替代,可將糾正施加在所有象素上以避免點(diǎn)rT上的任何過渡效應(yīng)。
取決于所選用的具體鏡頭,可用其特定的漸暈量來提供寄存器72中的一個(gè)常數(shù)。從而,通過簡單地將不同的常數(shù)值編程進(jìn)入寄存器72中,便能在制造攝像機(jī)時(shí)使用不同的鏡頭。這允許使用多種來源的鏡頭,并允許逐批或逐個(gè)制造商地補(bǔ)償鏡頭質(zhì)量的變化。
下面列出用于實(shí)現(xiàn)的等式及執(zhí)行漸暈糾正的硬件或軟件的一個(gè)實(shí)施例。雖然該常數(shù)是存儲(chǔ)在攝像機(jī)中的,漸暈糾正可用攝像機(jī)中的硬件/軟件或主機(jī)中的軟件完成。低質(zhì)量鏡頭的漸暈效應(yīng)可模型化為通過鏡頭中央及靠近鏡頭邊沿的拋物線。變換函數(shù)是各向同性的。令Pi與Po為漸暈糾正之前與之后的象素值,而x0,y0為鏡頭中心的坐標(biāo)(如果鏡頭是正確地安裝的,應(yīng)是圖象中心)。則
P0=Pi*(α*r2+1)
=Pi*(α*((x-x0)2+(y-y0)2)+1
“α”為一個(gè)小的正常數(shù)。謹(jǐn)慎地說,最大能糾正50%的漸暈,這意味著
1.0=0.5*(α*(176*176+144*144)+1)
α=1.9338*10-5
用226正規(guī)化,這將給出α=1298。通過將α限制為0至1023,并執(zhí)行逆運(yùn)算,最大可糾正的漸暈為56%。
注意在上面給出的公式中,并未計(jì)入象素的縱橫比。對(duì)于正方形象素,公式是精確的,對(duì)于12/11縱橫比,結(jié)果稍有偏差。同時(shí),如果傳感器規(guī)格為非縮放的QCIF(通過在水平與垂直兩個(gè)方向上隔一個(gè)留一個(gè)象素從CIF二次抽樣的QCIF),α將被縮放1/4。
如果yi是10位,(x-x0)2與(y-y0)2為16位(對(duì)于CIF尺寸),且y0為10位,這確定α必須是10位(0至1023)。
圖11為用于實(shí)現(xiàn)上述公式的硬件系統(tǒng)或軟件單元的一個(gè)實(shí)施例的框圖。具體地,在多路復(fù)用器82的選擇的輸入上作用一可選用的選擇電路/單元80。當(dāng)象素位置小于閾值r2時(shí),將線路84上的輸入象素pi簡單地傳遞通過到線路86上的輸出象素p0。如果大于閾值,通過用圖11中所示的硬件實(shí)現(xiàn)上面的公式來施加漸暈糾正。
具體地,將該象素的當(dāng)前x值xi作用在算術(shù)電路/單元88上,在那里從它減去中心象素x0。然后通過多路復(fù)用器90將其輸入兩次作用在乘法電路/單元92上來平方這一值,在那里將其累計(jì)在加法/累加器94中。類似地,將y值yi提供給電路/單元96,在那里確定與中心y值y0之差。類似地將其作為兩個(gè)值通過多路復(fù)用器90作用在乘法器92上,在那里將其平方并提供給加法/累加器,在那里將其加在平方的x值上。多路復(fù)用器的使用簡單地用時(shí)分多路復(fù)用允許將同一乘法器92用于兩種計(jì)算。明顯地,另一方案是提供兩個(gè)獨(dú)立的乘法單元。
然后將累加器94的輸出提供給第二乘法器96,在那里將其乘以來自寄存器72的常數(shù)值。然后在單元98中減去1,并在乘法器100將這一值乘以象素值pi。在線路102上通過多路復(fù)用器82將該輸出提供給輸出線路86。顯而易見可提供電路的變型,諸如將同一乘法電路用作乘法器92、96與100,在不同的時(shí)隙中將乘法器用于不同目的。
選用的電路/單元80提供比較器104,它將加法/累加器94的輸出(x2+y2值的半徑值)與寄存器106中的閾值半徑比較。
最好,常數(shù)α與象素值pi具有相同的位數(shù)。從而,如果pi為10位而x與y值為16位時(shí),常數(shù)α是10位。同時(shí),如果傳感器規(guī)格為未縮放的QCIF(修剪的)則α可被縮放1/4。從而,在漸暈糾正之前修剪圖象時(shí)提供了糾正。
此外,在使用TV時(shí)通過將y值乘以11/12能對(duì)象素縱橫比進(jìn)行糾正。
在一個(gè)實(shí)施例中,糾正只在預(yù)定義的直徑外面進(jìn)行。這假設(shè)在鏡頭中心周圍鏡頭滿意地工作,這通常是合理的假設(shè)。這樣做能導(dǎo)出更精確的糾正模型。令rT為可在其中忽略漸暈效應(yīng)的直徑。則
如果r<=rT,
p0=pi,
如果r<=rT,
p0=pi*(α*(r2-rT2)+1)
=pi*(α*(((x-x0)2+(y-y0)2)-((xT-x0)2+(yT-y0)2))+1)
從而,本發(fā)明允許使用多種鏡頭及使用較便宜的鏡頭。它改進(jìn)主計(jì)算機(jī)中的AGC與AWB。此外,它允許更好的目標(biāo)運(yùn)動(dòng)跟蹤。目標(biāo)運(yùn)動(dòng)的進(jìn)行通常通過假定亮度值與目標(biāo)運(yùn)動(dòng)到傳感器邊沿時(shí)相同并從而通過尋找相同亮度值來跟蹤。明顯地,漸暈效應(yīng)能妨礙定位目標(biāo)的努力。通過在接近傳感器處作用漸暈糾正,能加以克服。本發(fā)明還提供整體改進(jìn)的圖象質(zhì)量。IV.象素糾正
圖2的單元42在主機(jī)中執(zhí)行象素糾正。這能夠糾正CMOS或CCD傳感器陣列上的有缺陷的檢測(cè)器位置。通常,這是通過將亮度值與相鄰檢測(cè)器元件的亮度值進(jìn)行比較來完成。如果差大于閾值,假定這是由有缺陷的傳感器元件導(dǎo)致的。從而,代入糾正值,它通常是周圍象素值的平均值。
為了在主機(jī)中完成這一操作而不影響視頻幀速度,將算法保持簡單。這是通過兩個(gè)基本特征實(shí)現(xiàn)的。,首先有缺陷象素檢測(cè)不是在任何幀上進(jìn)行的,而只在幀的子樣本上進(jìn)行。例如,檢測(cè)只在每32-128幀進(jìn)行一次。第二,統(tǒng)計(jì)保持簡單,以減少所需的處理量。具體地,統(tǒng)計(jì)可以只包含素元件的位置及檢測(cè)到有缺陷的象素的頻率或次數(shù)。
系統(tǒng)通過從圖象拾取器件中讀出或掃描原始圖象數(shù)據(jù)中的變化大于相鄰象素的強(qiáng)度中的特定量的象素來進(jìn)行工作。原始圖象傳感器數(shù)據(jù)便是從圖象傳感器得到的未經(jīng)過任何有損失的壓縮或彩色處理的未處理過的亮度數(shù)據(jù)輸出。圖象傳感器讀出模擬電壓或電流,轉(zhuǎn)換成數(shù)字并將信號(hào)不加進(jìn)一步處理或壓縮發(fā)送給主機(jī)。圖象傳感器上的光格點(diǎn)用于捕捉彩色或單色數(shù)字靜止或視頻圖象。以諸如通用串行總線(USB)或并行端口等特定總線的總線協(xié)議所確定的數(shù)據(jù)傳輸率在總線上將原始圖象數(shù)據(jù)發(fā)送給智能主機(jī)。
將原始圖象傳感器數(shù)據(jù)、各有缺陷象素的位置與出現(xiàn)頻率、及計(jì)算機(jī)程序所執(zhí)行的所有中間計(jì)算的結(jié)果全部存儲(chǔ)在存儲(chǔ)器中。然后用其它算法求出異常象素的相鄰象素的平均值來取代來自有缺陷的象素的數(shù)據(jù)。然后便能進(jìn)一步處理糾正后的數(shù)據(jù)并將其最終顯示在監(jiān)視器上。該處理包含視頻二次抽樣,意味著檢測(cè)是在各種幀間隔上進(jìn)行及重復(fù)的。視頻二次抽樣是在每128幀之一上進(jìn)行的(1/128)。此外,視頻二次抽樣可在每1/64視頻幀上進(jìn)行。在又另一實(shí)施例中,視頻二次抽樣是在每1/(n乘x)幀上進(jìn)行的,其中n為整數(shù)而x不等于50或60。50與60對(duì)應(yīng)于50Hz與60Hz,50Hz與60Hz分別是在美國和歐洲使用的AC照明頻率。這樣,便能保證異常原始數(shù)據(jù)象素不是人工照明系統(tǒng)的人為產(chǎn)物。采用視頻二次抽樣允許快速與最佳的糾正而無須掃描每一幀。這會(huì)不利地沖擊處理器與系統(tǒng)的處理速度。當(dāng)然,在檢測(cè)與糾正靜止圖象中的有缺陷象素時(shí)不采用視頻二次抽樣。
生成記錄有缺陷象素的位置與出現(xiàn)頻率的統(tǒng)計(jì)數(shù)據(jù)庫并將其存儲(chǔ)在存儲(chǔ)器中以便系統(tǒng)隨時(shí)學(xué)習(xí)及適應(yīng)其操作。存儲(chǔ)了來自統(tǒng)計(jì)數(shù)據(jù)庫的趨勢(shì),以便隨時(shí)能將真正的異常象素能與目標(biāo)圖象中的真實(shí)異常、照明或其它環(huán)境引起的異常的虛假檢出加以區(qū)別。下面描述統(tǒng)計(jì)數(shù)據(jù)庫的操作邏輯與計(jì)算機(jī)程序的操作細(xì)節(jié)。
圖12說明描述實(shí)現(xiàn)在按照本發(fā)明的一個(gè)實(shí)施例的用于檢測(cè)與糾正有缺陷的象素的系統(tǒng)中的軟件程序的功能的簡化流程圖。有缺陷的象素檢測(cè)與糾正中的第一步驟包含從一圖象傳感器陣列獲取一部分幀原始圖象數(shù)據(jù),步驟1210。原始圖象數(shù)據(jù)可以是對(duì)應(yīng)于數(shù)字化的實(shí)況場(chǎng)景的數(shù)據(jù)或?qū)?yīng)于標(biāo)準(zhǔn)或“黑”背景圖象的數(shù)據(jù)?!昂凇北尘皥D象可通過減少傳感器陣列的積分時(shí)間或減少圖象信號(hào)的增益獲得??蓪碜浴昂凇眻D象的原始數(shù)據(jù)以檢測(cè)活躍光格點(diǎn)。對(duì)應(yīng)于“黑”圖象的原始數(shù)據(jù)可以是黑的,而如果任何象素不是這樣,則它對(duì)應(yīng)于一過度活躍的光格點(diǎn)?!昂凇眻D象的使用能通過消除源于場(chǎng)景本身的任何亮度偏移來增強(qiáng)有缺陷的象素檢測(cè)。
雖然能為有缺陷的象素檢測(cè)與糾正一次處理來自整個(gè)幀的數(shù)據(jù),當(dāng)來自三行圖象傳感器的數(shù)據(jù)到達(dá)主機(jī)時(shí)算法便立即開始其功能。來自圖象傳感器陣列的三行數(shù)據(jù)允許處理一個(gè)象素及其所有周圍相鄰象素的數(shù)據(jù)。再者,當(dāng)正在用傳感器陣列捕捉視頻圖象時(shí),采用視頻二次抽樣,因以使是圖象傳感器陣列所捕獲的每一視頻幀都是有缺陷象素檢測(cè)所需的。在較佳實(shí)施例中,缺陷檢測(cè)是在上述預(yù)定的幀間隔上進(jìn)行的,而糾正則作用在所有視頻幀上,視頻二次抽樣的明智使用使本方法非??旖菖c高效。
在另一實(shí)施例中,不采用視頻二次抽樣而在每一視頻幀上進(jìn)行有缺陷象檢測(cè)。視頻二次抽樣的采用是智能主機(jī)的處理器速度的函數(shù)。如果處理器快得足以在每一幀中檢測(cè)異常象素,則不采用視頻二次抽樣。反之,如果處理器不夠快而不允許在要求的幀速率上進(jìn)行視頻處理,則采用視頻二次抽樣來保證在該要求的幀速率上的數(shù)據(jù)傳輸。不用視頻二次抽樣,異常象素糾正是立即的,使得缺陷就在檢出它們的幀中得到糾正。用視頻二次抽樣,異常象素糾正被延遲直到抽樣一幀來檢測(cè)異常象素。因此,采用視頻二次抽樣的選擇及二次抽樣率是處理器速率的函數(shù)及處理器能力及糾正前的延遲之間的折衷。
為各獲得的象素進(jìn)行數(shù)據(jù)采集之后,計(jì)算與存儲(chǔ)本地象素亮度值及其所有緊鄰象素的平均亮度值,步驟1212。接著,設(shè)定偏移閾值,步驟1214。該偏移閾值確定象素的亮度值與其所有緊鄰象素的平均亮度值之間可接受的變動(dòng)范圍。接著為各獲得的象素計(jì)算本地亮度偏移,步驟1216。本地亮度偏移是象素的亮度值與其所有緊鄰象素的平均亮度值之間的差的絕對(duì)值。
接著,為已獲得數(shù)據(jù)的各象素,將其本地亮度偏移與偏移閾值比較,步驟1218。然后將其本地亮度偏移超過閾值移值的任何象素標(biāo)記為有缺陷的象素。然后將各有缺陷的象素的物理位置與出現(xiàn)頻率記錄在統(tǒng)計(jì)數(shù)據(jù)庫中,步驟1220。然后查詢統(tǒng)計(jì)數(shù)據(jù)庫來確定是否應(yīng)糾正該有缺陷象素的數(shù)據(jù)值,步驟1222。統(tǒng)計(jì)數(shù)據(jù)庫通過存儲(chǔ)有缺陷象素的位置與頻率,導(dǎo)出確認(rèn)哪些有缺陷象素有理由糾正的長期趨勢(shì)。來自統(tǒng)計(jì)數(shù)據(jù)庫的趨勢(shì)的邏輯初始將認(rèn)可所有加標(biāo)記的有缺陷象素的糾正作為一缺省值,并只有在最近四次查詢中至少有兩次出現(xiàn)的頻率的特定象素才長期保證象素糾正。
接著糾正已通過統(tǒng)計(jì)數(shù)據(jù)庫過濾的有缺陷象素,步驟1224。為了糾正有缺陷的象素,用該象素的本地平均亮度值取代有缺陷象素的錯(cuò)誤的原始亮度數(shù)據(jù),前者是其所有緊鄰象素的平均亮度值。接著,準(zhǔn)備好發(fā)送來自有缺陷的象素的糾正后的數(shù)據(jù)以及來自無缺陷的象素的數(shù)據(jù)供下面的處理,步驟1226。下面的處理可包含壓縮、彩色處理及編碼成適用于顯示的數(shù)據(jù)格式。有缺陷象素檢測(cè)與糾正是在來自圖象傳感器陣列的原始數(shù)據(jù)上進(jìn)行的,因?yàn)橛捎谔幚肀旧砜赡芤腚y于與作為有缺陷的光格點(diǎn)的后果早已產(chǎn)生的贗象區(qū)別的人為現(xiàn)象,最好在發(fā)生任何后面的處理之前糾正數(shù)據(jù)。
有意識(shí)地將軟件算法保持非常簡單,以便處理器負(fù)荷與/或視頻幀速率受到最小的影響。首先,軟件算法被保持簡單,因?yàn)樗粓?zhí)行三種功能,即檢測(cè)、糾正與統(tǒng)計(jì)操作。統(tǒng)計(jì)例程保持簡單因?yàn)橹桓櫘惓O笏氐奈恢眯畔⒓俺霈F(xiàn)頻率。第二,將軟件算法保持簡單以便在將數(shù)據(jù)傳輸給主機(jī)的速率上具有最小的沖擊,從而正在掃描一幀中的有缺陷的象素時(shí),并不阻塞后面的幀。軟件算法的最大沖擊是最壞將視頻數(shù)據(jù)傳輸率從每秒10幀(fps)降低到9fps,第三,將軟件算法保持簡單使得在執(zhí)行該算法時(shí)主機(jī)處理器的負(fù)荷不增加于1%。異常象素是在一幀中檢測(cè)的而糾正是稍后在從圖象傳感器中讀出時(shí)的后面的幀上實(shí)行的。
因此,當(dāng)系統(tǒng)正在工作時(shí),隨著獲取來自圖象傳感器的原始數(shù)據(jù)及將其發(fā)送到主機(jī)上去處理,如上所述地捕捉幀供有缺陷象素檢測(cè)與糾正。一旦識(shí)別出有缺陷的象素并經(jīng)統(tǒng)計(jì)數(shù)據(jù)庫認(rèn)可其糾正,后面所有的幀將繼續(xù)這一糾正直到對(duì)統(tǒng)計(jì)數(shù)據(jù)庫作出下一次查詢?yōu)橹埂H绻藭r(shí)繼續(xù)將初始加標(biāo)記的有缺陷象素指定為有缺陷的,則糾正將繼續(xù)進(jìn)行,如上所述。反之如果統(tǒng)計(jì)數(shù)據(jù)庫并不認(rèn)可有缺陷紗的糾正,則不再糾正這些象素直到作出對(duì)統(tǒng)計(jì)數(shù)據(jù)庫的下一次查詢?yōu)橹?。本系統(tǒng)的動(dòng)態(tài)本質(zhì)也允許對(duì)來自由于制造后環(huán)境改變而引起的成為長期有缺陷的光格點(diǎn)的數(shù)據(jù)的糾正。
缺陷檢測(cè)與糾正算法的統(tǒng)計(jì)分析段是任選的。它的目的在于提高象素糾正的效率,以便不糾正不是由有缺陷的光格點(diǎn)導(dǎo)致的異常并從而節(jié)省處理時(shí)間與負(fù)荷。然而,效率的收益必須與統(tǒng)計(jì)分析部分本身施加的負(fù)荷平衡。在另一實(shí)施例中,不采用統(tǒng)計(jì)分析部分,將加上標(biāo)記為缺陷的所有象素加以糾正。如在選擇使用還是不使用視頻二次抽樣中,采用缺陷檢測(cè)與糾正算法的統(tǒng)計(jì)分析部分的決策取決于效率與處理器能力之間的折衷。如果處理器足夠快,則效率考慮不那么重要。反之,如果處理器不夠快,則象素糾正效率變得足夠重要而認(rèn)可缺陷檢測(cè)與糾正算法的統(tǒng)計(jì)分析部分的實(shí)現(xiàn)。
如本技術(shù)中的熟練技術(shù)人員所理解的,可用其它特定形式實(shí)施本發(fā)明而不脫離其主要特征。例如,可改變視頻二次抽樣率,或完全不進(jìn)行視頻二次抽樣。此外,可將任選的統(tǒng)計(jì)數(shù)據(jù)庫的邏輯從糾正有缺陷象素作為一缺省的邏輯改變成只有在來自統(tǒng)計(jì)數(shù)據(jù)庫的趨勢(shì)認(rèn)可時(shí)才糾正有缺陷的象素的邏輯。V.無幀緩沖存儲(chǔ)器
消除攝像機(jī)中的處理能消除幀緩沖存儲(chǔ)器,由于不需要為這一處理存儲(chǔ)數(shù)字象素?cái)?shù)據(jù)。然而,另一潛在問題是來自傳感器的數(shù)據(jù)輸出需要被一直保持到總線的可獲得為止。這需要非常大的緩沖存儲(chǔ)器。在一個(gè)攝像機(jī)的實(shí)施例中,只在總線接口中使用小的緩沖器。通過將讀取傳感器的時(shí)間的定時(shí)控制成對(duì)應(yīng)于主機(jī)總線可獲得的時(shí)間,及只讀取到下一次可獲得總線為止能緩沖存儲(chǔ)的數(shù)據(jù)量便可達(dá)到一小緩沖器。
圖13為按照本發(fā)明的攝像機(jī)的框圖。這一系統(tǒng)包含鏡頭1310及諸如CMOS傳感器陣列1312等傳感器陣列,并連接在USB1320上。
不是象先有技術(shù)中那樣將來自CMOS傳感器芯片的數(shù)字化信號(hào)存儲(chǔ)在幀緩沖存儲(chǔ)器中,而是將其直接提供給數(shù)字處理電路1348。首先將它們提供給執(zhí)行壓縮及諸如修剪、縮放與數(shù)字濾波等其它任選功能的視頻數(shù)字信號(hào)處理器1350來減少數(shù)據(jù)傳輸。一旦經(jīng)過了處理,便將數(shù)字?jǐn)?shù)據(jù)提供給總線接口1354。
總線接口1354包含總線控制器緩沖器1356與總線控制器1358。緩沖器1356至少存儲(chǔ)來自CMOS傳感器行的一行數(shù)據(jù)。最好,總線控制器緩沖器1356能存儲(chǔ)最大可能速率上的兩個(gè)USB幀,即2K字節(jié)。取決于幀速率、壓縮率等,這通??筛淖兊礁哌_(dá)10行,或者如果進(jìn)行分樣甚至可達(dá)到5-20行。
總線控制器1358在線路1360上提供控制信號(hào)來定時(shí)與控制發(fā)生器1326。定時(shí)發(fā)生器1326在線路1364上提供時(shí)鐘信號(hào)給CMOS傳感器陣列1322。時(shí)鐘信號(hào)1364包含行與列傳輸脈沖。列傳輸脈沖是象先有技術(shù)中那樣提供的,周期性地加載來自CMOS傳感器陣列的充電的值。然而,行傳輸脈沖是變化的以便使出自CMOS傳感器陣列的數(shù)據(jù)讀取與下面的電路的處理和到USB的數(shù)據(jù)傳輸匹配。
在一個(gè)實(shí)施例中,數(shù)字處理電路1348與CMOS傳感器陣列1312、定時(shí)發(fā)生器1326、ADC1328、及行與列邏輯與緩沖器集成在同一半導(dǎo)體芯片基板上。幀緩沖器的消除允許這一單一芯片。這允許構(gòu)成更緊湊、較便宜的攝像機(jī)。
圖14說明在線路1364上提供的行傳輸脈沖的定時(shí)。不是連續(xù)的脈沖流,這些位是在所示的成群的處理電路需要時(shí)被輸出的。發(fā)布第一群三行1466,然后在處理這些象素及將其傳輸給總線時(shí)有一段延時(shí)。然后可提供下一群兩行1468。取決于線路緩沖器的可獲得性及到USB上的傳輸定時(shí),可能有一段延時(shí)。示出了下面?zhèn)鬏數(shù)膯涡?469,后面跟隨用若干脈沖1470傳輸?shù)?行的一后繼群。傳輸了整個(gè)圖象之后,提供垂直傳輸脈沖1472。圖14的實(shí)例意在簡單地示例說明。注意因?yàn)樾袀鬏斆}沖是在相同的列脈沖之間提供的,為了能示出間隙,將這些脈沖提供得更緊地靠近在一起。從而,提供小脈沖群的脈沖串以便在電路能處理它們時(shí)盡快地發(fā)送象素?cái)?shù)據(jù)。在一個(gè)實(shí)施例中,在一系列緊密地間隔開的脈沖中定時(shí)輸出整個(gè)圖象,使下一個(gè)列傳輸脈沖之前能完成處理。如果在下一個(gè)列傳輸脈沖的時(shí)間上仍未完成處理,可能有一段延時(shí),它符合處理的定時(shí)及USB的可獲得性。從而,行脈沖可以完全是順序提供的,但在比先有技術(shù)快的速率上,并可將列脈沖后面的這一脈沖的群的定時(shí)改變成緊接下一個(gè)列脈沖之后或正好在其前面,以便接受處理及總線定時(shí)。VI.無壓縮
在本發(fā)明的一個(gè)實(shí)施例中,可消除圖2的壓縮單元26及解壓單元38。這可在例如開發(fā)出具有更高帶寬的新的USB時(shí)進(jìn)行。然而,如果研制出提高靈敏度的傳感器,允許傳輸更高分辨率的視頻圖象數(shù)據(jù),而用盡可利用的額外帶寬,前面的實(shí)施例的仍然是令人滿意的。然而,一個(gè)實(shí)施例通過消除對(duì)壓縮的需要而得益于額外的帶寬,從而進(jìn)一步簡化攝像機(jī)并其成本。
圖2中所示的相同主要功能(除外解壓)可在主機(jī)中執(zhí)行。攝像機(jī)在一個(gè)實(shí)施例中仍包含糾正寄存器34而允許使用廉價(jià)的鏡頭10。VII.有損失的壓縮
在另一實(shí)施例中,可利用有損失的壓縮方法。有損失的壓縮意味著恢復(fù)的圖象可損失一些分辨率。有損失的壓縮的缺點(diǎn)在于會(huì)降級(jí)在主機(jī)中進(jìn)行的任何漸暈或象素糾正。從而,在這另一實(shí)施例中,漸暈糾正與象素糾正是在攝像機(jī)自身中完成的。這允許將有損失的壓縮單元用作圖2的單元26。彩色處理與縮放操作仍在主機(jī)中執(zhí)行,從而提供比圖1的先有技術(shù)簡單的攝像機(jī)。
熟悉本技術(shù)的會(huì)理解,可用其它特定形式實(shí)施本發(fā)明而不脫離其主要特征。例如,在一個(gè)實(shí)施例中,糾正寄存器除了鏡頭的特征之外能糾正制造時(shí)可能逐個(gè)攝像機(jī)改變的攝像機(jī)特征。代替物理共同總線,可將數(shù)據(jù)從攝像機(jī)無線傳輸給主機(jī),或到連接在主機(jī)上的接收機(jī)。主機(jī)本身可以是個(gè)人計(jì)算機(jī)、智能因特網(wǎng)設(shè)備、或帶有某種處理器或處理電路的任何其它設(shè)備或部件。從而,上文中的描述旨在作為下面的權(quán)利要求中所提出的發(fā)明的范圍的示例而非限制。
權(quán)利要求
1、一種攝像機(jī)系統(tǒng),包括
(a)攝像機(jī),具有
圖象傳感器,及
用于執(zhí)行數(shù)據(jù)壓縮的處理元件;
(b)耦合在所述攝像機(jī)上的接口;以及
(c)用于接收來自所述接口的壓縮數(shù)據(jù)的處理單元,所述處理單元配置成執(zhí)行
解壓所述壓縮數(shù)據(jù),至少一部分所述解壓操作是并行執(zhí)行的,
異常象素糾正,及
彩色處理;
使得在所述攝像機(jī)中不需要異常象素糾正與彩色處理電路,并且所述異常象素糾正是在所述彩色處理之前執(zhí)行的。
2、如權(quán)利要求1的攝像機(jī),其中所述攝像機(jī)包含一鏡頭,及所述處理單元進(jìn)一步配置成為所述鏡頭執(zhí)行漸暈糾正。
3、如權(quán)利要求1的攝像機(jī),所述攝像機(jī)中還包括一存儲(chǔ)器單元用于存儲(chǔ)對(duì)應(yīng)于所述鏡頭的漸暈量的一常數(shù)值。
4、如權(quán)利要求1的攝像機(jī),其中將所述異常象素糾正設(shè)計(jì)成通過包含視頻二次抽樣來確定有缺陷象素及只統(tǒng)計(jì)記錄象素位置與關(guān)于檢測(cè)到的有缺陷象素的頻率的數(shù)據(jù)來減少其在視頻幀速率上的沖擊。
5、如權(quán)利要求1的系統(tǒng),其中所述處理單元包括具有用于并行操作寄存器中的多個(gè)象素的指令的一處理器,所述處理器被編程用于解壓可變大小的壓縮編碼的數(shù)據(jù)流,其中至少一部分解壓操作是在所述寄存器中的多個(gè)字段上并行執(zhí)行的。
6、如權(quán)利要求5的系統(tǒng),其中所述數(shù)據(jù)流是用赫夫曼編碼壓縮的,及所述操作包含
復(fù)制來自所述數(shù)據(jù)流的一組位以在第一寄存器中的多個(gè)位置中提供復(fù)制品;以及
在第二寄存器中的值與所述復(fù)制品之間并行執(zhí)行運(yùn)算,不同的值被用于各復(fù)制品。
7、一種攝像機(jī)系統(tǒng),包括
(a)攝像機(jī),具有
圖象傳感器,及
耦合在所述圖象傳感器上的模數(shù)轉(zhuǎn)換器;
(b)耦合在所述攝像機(jī)上的接口,所述接口為能被其它外圍設(shè)備同時(shí)使用的共用接口;及
(c)用于接收來自所述接口的數(shù)字?jǐn)?shù)據(jù)的處理單元,所述處理單元配置成執(zhí)行
異常象素糾正,及
彩色處理;
使得在所述攝像機(jī)中不需要異常象素糾正與彩色處理電路,及所述異常象素糾正是在所述彩色處理之前執(zhí)行的。
8、如權(quán)利要求7的系統(tǒng),其中所述攝像機(jī)還包含用于壓縮來自所述模數(shù)轉(zhuǎn)換器的數(shù)字?jǐn)?shù)據(jù)的處理裝置。
9、一種在具有用于在寄存器中的多個(gè)象素上并行操作的指令的處理器中解碼赫夫曼壓縮數(shù)據(jù)流的方法,包括
復(fù)制來自所述數(shù)據(jù)流的一組數(shù)據(jù)以在第一寄存器的多個(gè)位置中提供復(fù)制器;及
在第二寄存器中的值與所述復(fù)制品之間并執(zhí)行運(yùn)算,將不同的值用于各復(fù)制品。
10、如權(quán)利要求9的方法,還包括
在索引操作中利用所述運(yùn)算結(jié)果來索引赫夫曼解碼值的表。
11、一種攝像機(jī),包括
圖象傳感器;
耦合在所述圖象傳感器上的模數(shù)轉(zhuǎn)換器;
用于保持對(duì)應(yīng)于所述攝像機(jī)的一個(gè)方面的糾正因子的值的存儲(chǔ)器單元,所述值是可傳輸?shù)揭贿h(yuǎn)程主機(jī)的;及
耦合在所述模數(shù)轉(zhuǎn)換器與所述存儲(chǔ)器元件上的用于與所述遠(yuǎn)程主機(jī)建立通信的接口。
12、如權(quán)利要求11的攝像機(jī),還包括一鏡頭,及其中所述值為鏡頭漸暈值。
13、一種檢測(cè)與糾正取自用于獲取數(shù)字化圖象的圖象傳感器的原始數(shù)據(jù)中的有缺陷象素的方法,其中所述原始數(shù)據(jù)包含正常象素與有缺陷象素,所述方法包括下列步驟
(a)接收所述圖象中的各象素的原始數(shù)據(jù)信號(hào);
(b)為從所述圖象傳感接收的各象素計(jì)算亮度值;
(c)為從所述圖象傳感器接收的各象素計(jì)算本地亮度值;
(d)為從所述圖象傳感器接收的各象素計(jì)算所述亮度值自所述本地亮度值的一本地亮度偏移;
(e)設(shè)定偏移閾值;
(f)為從所述圖象傳感器接收的各象素,將其本地亮度偏移與所述偏移閾值比較,并將具有大于所述偏移閾值的本地亮度偏移的象素指定為有缺陷象素;
(g)將所述有缺陷象素的位置記錄在統(tǒng)計(jì)數(shù)據(jù)庫中;
(h)將所述有缺陷象素的出現(xiàn)頻率記錄在所述統(tǒng)計(jì)數(shù)據(jù)庫中的;以及
(i)如果來自所述統(tǒng)計(jì)數(shù)據(jù)庫的趨勢(shì)認(rèn)可糾正,便糾正所述有缺陷象素的亮度值。
14、一種操作攝像機(jī)的方法,包括下述步驟
從圖象傳感器陣列讀取圖象數(shù)據(jù);
在視頻數(shù)字信號(hào)處理器(DSP)中處理所述圖象數(shù)據(jù),所述處理包含執(zhí)行圖象壓縮;
將處理后的圖象數(shù)據(jù)提供給總線;及
提供時(shí)鐘信號(hào)給所述圖象傳感器陣列以便在對(duì)應(yīng)于所述總線上的數(shù)據(jù)傳輸率的速率上從所述圖象傳感器陣列傳送圖象數(shù)據(jù),使得不需要用于存儲(chǔ)所述圖象的整個(gè)幀的幀緩沖存儲(chǔ)器。
全文摘要
通過在主機(jī)軟件中實(shí)現(xiàn)主要功能而提供了一種低成本攝像機(jī)。這是通過將原始數(shù)字化數(shù)據(jù)直接從攝像機(jī)發(fā)送給主機(jī)完成的。增加的原始數(shù)據(jù)量是由采用無損失的壓縮的改進(jìn)的壓縮/解壓方案、采用有損失的壓縮或采用帶有較高帶寬的共用總線處理的。通過將諸如彩色處理與縮放等功能轉(zhuǎn)移至主機(jī),也能將象素糾正轉(zhuǎn)移至主機(jī)。這進(jìn)一步允許從攝像機(jī)中消除幀緩沖存儲(chǔ)器。最后,通過在攝像機(jī)的寄存器中存儲(chǔ)糾正值供主機(jī)以后訪問來執(zhí)行糾正,而實(shí)現(xiàn)漸暈、畸變、灰度系數(shù)或假頻糾正,攝像機(jī)能使用低成本鏡頭。
文檔編號(hào)H04N5/445GK1365569SQ00811020
公開日2002年8月21日 申請(qǐng)日期2000年6月29日 優(yōu)先權(quán)日1999年6月30日
發(fā)明者馬克·赫蘇, 米切爾·諾克羅斯, 喬治·奧博格, 里米·齊默爾曼, 塞爾吉奧·馬吉, 喬治·桑切斯, 布里德·比勒貝克, 偉·李, 朱尼安·拉布盧斯 申請(qǐng)人:羅技電子股份有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
闻喜县| 连平县| 内丘县| 通州区| 余干县| 安化县| 聂拉木县| 密山市| 宽甸| 古浪县| 鱼台县| 孟津县| 淮阳县| 沂源县| 如东县| 绥芬河市| 佛山市| 安仁县| 应用必备| 七台河市| 嘉祥县| 乾安县| 海城市| 安阳县| 郴州市| 东明县| 图们市| 新余市| 呼伦贝尔市| 治县。| 高碑店市| 凤阳县| 南充市| 龙胜| 大关县| 浦北县| 甘泉县| 碌曲县| 剑河县| 蓝山县| 隆昌县|