㈠ 數控車床上編碼器的作用是什麼
是一種將旋轉位移轉換成一串數字脈沖信號的旋轉式感測器,這些脈沖能用來控制角位移,如果編碼器與齒輪條或螺旋絲杠結合在一起,也可用於測量直線位移。
光電編碼器是一種通過光電轉換將輸出軸上的機械幾何位移量轉換成脈沖或數字量的感測器,由光柵盤和光電檢測裝置組成。光柵盤是在一定直徑的圓板上等分地開通若干個長方形孔。
由於光電碼盤與電動機同軸,電動機旋轉時,光柵盤與電動 機同速旋轉,經發光二極體等電子元件組成的檢測裝置檢測輸出若干脈沖信號,通過計算每秒光電編碼器輸出脈沖的個數就能反映當前電動機的轉速。
此外,為判斷旋轉方向,碼盤還可提供相位相差90º的兩路脈沖信號。根據檢測原理,編碼器可分為光學式、磁式、感應式和電容式。根據其刻度方法及信號輸出形式,可分為增量式、絕對式以及混合式三種。
(1)源碼編碼器兩個造型數據怎麼比較擴展閱讀
對於編碼器來說,「解析度」除了與刻線數有關外,還會因電氣信號方面的影響而改變,它是可調的,可控的,它可以隨著對信號的細分而改變,細分倍數越高,解析度越小,但是細分倍數越高,引入加大的誤差就越大。
而精度,更多的偏向於機械方面,一個產品生產出來後,他的精度基本已經固定(有些高精度的產品可以對信號進行補償等來提高精度),這個數值是通過檢測出來的。
它與產品的做工,材料等綜合性能息息相關,難以通過計算來得出一個具體的數值作為精度的依據,大多隻能在使用的過程當中判斷出精度的好壞來。
㈡ C++輸入兩個數據有大到小排列
這種題主要是比較它們的ascll編碼值大小,比較容易!源代碼如下:
#include
<stdio.h>
int
compare(char
*s1,char
*s2);
void
main(){
char
s1[200];
char
s2[200];
printf("請輸入第一個數據:");
gets(s1);
printf("請輸入第二個數據:");
gets(s2);
int
n
=
compare(s1,s2);
if(n
>
0){
printf("第一個數據大於第二個!\n%s\n%s\n",s1,s2);
}
else
if(n
<
0){
printf("第二個數據大於第一個!\n%s\n%s\n",s2,s1);
}
else
{
printf("一樣大!\n%s\n%s\n",s1,s2);
}
}
int
compare(char
*s1,char
*s2){
for(int
i
=
0;s1[i]
!=
'\0'
||
s2[i]
!=
'\0';i++){
if(s1[i]
>
s2[i]){
i
=
1;
break;
}
else
if(s1[i]
<
s2[i]){
i
=
-1;
break;
}
}
if(i
==
1||
i
==
-1){
return
i;
}
else{
return
0;
}
}
㈢ 源碼編碼器調節作業上下的地方怎麼不能操作
可能是編碼器出現了問題,編碼器比較容易出問題,建議深度檢查。
編碼器是把角位移或直線位移轉換成電信號的一種裝置。
前者稱為碼盤,後者稱碼尺。按照讀出方式編碼器可以分為接觸式和非接觸式兩種。
接觸式採用電刷輸出,電刷接觸導電區或絕緣區來表示代碼的狀態是「1」還是「0」;非接觸式的接受敏感元件是光敏元件或磁敏元件,採用光敏元件時以透光區和不透光區來表示代碼的狀態是「1」還是「0」。
㈣ 相對於原碼和反碼,補碼表示法有什麼優點和缺點
正數:原碼,補碼,反碼一致
負數:
原碼: -(絕對值原碼)
反碼: 原碼除符號位外取反
補碼: 反碼+1
1.
原碼表示方法的優點,是在數的真值和它的原碼表示之間的對應關系簡單,相互轉換容易,用原碼實現乘除運算的規則簡單.缺點是用原碼實現加減運算很不方便.要比較參與加減運算兩個數的符號,要比較兩個數的絕對值的大小,還要確定運算結果的正確的符號等,因此在計算機中經常用後面介紹的補碼實現加減運算.
2. 補碼的設計目的是: ⑴使符號位能與有效值部分一起參加運算,從而簡化運算規則.⑵使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計.
3.用反碼實現算術運算不方便,0值又有兩個編碼,用得不很普遍.
㈤ 請問什麼叫硬編碼,它和普通編碼有什麼區別
硬編碼是將數據直接嵌入到程序或其他可執行對象的源代碼中的軟體開發實踐,與從外部獲取數據或在運行時生成數據不同。
硬編碼數據通常只能通過編輯源代碼和重新編譯可執行文件來修改,盡管可以使用調試器或十六進制編輯器在內存或磁碟上進行更改。
硬編碼的數據通常表示不變的信息,例如物理常量,版本號和靜態文本元素。 另一方面,軟編碼數據對用戶輸入,HTTP伺服器響應或配置文件等任意信息進行編碼,並在運行時確定。
它和普通編碼的區別是:
1、編碼方式不同:
普通編碼:使用CPU進行編碼。
硬編碼:使用非CPU進行編碼,如顯卡GPU、專用的DSP、FPGA、ASIC晶元等。
2、使用方式不同:
普通編碼:實現直接、簡單,參數調整方便,升級易,但CPU負載重,性能較硬編碼低,低碼率下質量通常比硬編碼要好一點
硬編碼:性能高,低碼率下通常質量低於軟編碼器,但部分產品在GPU硬體平台移植了優秀的軟編碼演算法(如X264)的,質量基本等同於軟編碼
3、復雜程度不同:
普通編碼比硬編碼要復雜一些,對以後的考慮要周到一些。普通編碼是一種設計,而硬編碼不過是一種具體的實現。軟體開發不只是需要一個軟體的實現,更需要軟體能夠很好的修改,方便得擴展,所以需要一些設計技巧在裡面。
(5)源碼編碼器兩個造型數據怎麼比較擴展閱讀:
在許多情況下,單個硬編碼值(例如數組大小)可能會在程序的源代碼中出現多次。這將是一個神奇的數字。如果值的某些外觀被修改,這可能通常會導致程序錯誤,但不是全部。這樣的錯誤很難找到,並且可能會長時間保留在程序中。
如果相同的硬編碼值用於多於一個參數值,例如,可能會出現類似的問題。一個由6個元素組成的數組,最小輸入字元串長度為6。
程序員可能會錯誤地更改值的所有實例(通常使用編輯器的搜索和替換工具),而無需檢查代碼以查看每個實例的使用方式。通過定義將名稱與值相關聯的常量並在代碼中使用每個外觀的常量名稱,可以避免這兩種情況。
㈥ 怎麼修改eclipse上編碼器的編碼格式
Eclipse編碼器的編碼格式有三個地方可以修改,如下:
一:修改工作空間默認編碼
在菜單導航欄上Window-->Preferences 打開"首選項"對話框,左側導航樹,導航到 General-->Workspace
Windows 7平台默認為GBK,簡體中文操作系統Windows XP、Windows 2000簡體中文的預設編碼是GB18030,Linux平台默認為UTF-8
那麼在此工作空間中建立的工程編碼是GBK,工程中建立的java文件也是GBK。
可以看到默認的是GBK編碼格式,修改為UTF-8編碼格式或者是需要的編碼格式 點擊Apply,點擊OK.
二:修改文件的編碼
在Eclipse項目文件上右鍵,選擇Properties,在Resource選擇修改編碼格式
三:修改某文件類型的編碼
導航欄window-->preferences
打開"首選項"對話框,左側導航樹,導航到 Genera-->Content Types
右邊找到要修改的文件的類型,在下面的Default encoding,輸入框中輸入UTF-8->Update->OK 。
㈦ java中怎麼把兩個中文字元串拿來比較 如: String a=「李陽"; String b="護駕"; if(a.equals(b))
Stringa="李陽";
Stringb="李陽";
if(a.equals(b)){
System.out.print("相同");
}else{
System.out.print("不同");
}
哥們我運行提示是相同你jdk是什麼版本的?
㈧ 請高手詳細解釋一下
首先,傳輸數字圖像所需的帶寬遠窄於未壓縮圖像。例如,ntsc圖像以大約640 x 480的解析度,24bits/象素,每秒30幀的質量傳輸時,其數據率達28m位元組/秒或221m位/秒。此外,ntsc聲音信號還要使未壓縮圖像的比特率再增加一些。然而單速cd-rom(1x)驅動器只能以1.2m位/秒的速率傳輸數據。
第二個原因是以28m位元組/秒的速率,15秒的未壓縮圖像將佔用420m位元組的內存空間,這對於大多數只能處理小圖像片斷的台式計算機來說都是不可接受的。
當今把圖像加入電子信號的關鍵問題是壓縮方式。有幾種不同的壓縮方式,但mpeg是最有市場潛力的壓縮方式
mpeg的歷史和優點
mpeg(即moving picture experts group運動圖像專家小組)是個國際標准,即所謂iso11172。它的兩個標准—mpeg-1和mpeg-2特別重要。mpeg-1於 1991年引入,用於加速cd-rom中圖像的傳輸。它的目的是把221mbit/秒的ntsc圖像壓縮到1.2mbit/秒,壓縮率為200:1。這是圖像壓縮的工業認可標准。
mpeg-2用於寬頻傳輸的圖像,圖像質量達到電視廣播甚至hdtv的標准。和mpeg-1相比,mpeg-2支持更廣的解析度和比特率范圍,將成為數字圖像盤(dvd)和數字廣播電視的壓縮方式。這些市場將和計算機市場交織在一起,從而使mpeg-2成為計算機的一種重要的圖像壓縮標准。這一點非常重要,因為將mpeg-1的比特流解壓縮時需要用到mpeg-2的解壓縮器。另一標准——mpeg-4——正在發展中,它將支持非常低的比特率的數據流的應用,如電視電話,視頻郵件和電子報刊等。
對mpeg的廣泛接受意味著對它的使用者的投資保護。許多零售商出售mpeg的軟體或硬體播放器,這種競爭造成了價格的下降和質量的上升。mpeg-1可以和mpeg-2兼容,因此它是一種尚有發展餘地的標准。
MPEG視頻壓縮演算法的基本原理
一般說來,在幀內以及幀與幀之間,眾多的視頻序列均包含很 大的統計冗餘度和主觀冗餘度。視頻源碼的最終目標是:通過挖掘 統計冗餘度和主觀冗餘度,來降低存儲和傳送視頻信息所需的比特 率;並採用嫡編碼技術,以便編制出「最小信息組」一個實用的 編碼方案,是在編碼特性(具有足夠質量的高壓縮)與實施復雜性 之間的一種折衷。對於MPEG壓縮演算法的開發來講,計及到這些標 準的壽命周期應考慮到現代超大規模集成電路技術的能力,這一點 是最重要的。 根據應用的要求,我們也許會想到視頻數據的「無損失」編碼 和「有損失」編碼「無損失」編碼的目的在於:在保持原圖像質 量(即解碼後的圖像質量等同於編碼前的圖像質量)情況下,來減 少需要存儲和傳送的圖像或視頻數據。與此相反,「有損失」編碼 技術(該技術跟MPEG—l和MPEG2視頻標准未來的應用有關) 的目的是,去符合給定的存儲和傳送比特串。重要的一些應用包 括;利用限定的帶寬或很窄的帶寬,通過通信頻道采傳送視頻信 息;有效地存儲視頻信息。在這些應用中,高的視頻壓縮是以降低 視頻質量的辦法來實施的,即跟編碼以前的原始圖像相比,解碼後 的圖像「客觀」質量有所降低(也就是取原始圖像和再現圖像之間 的均方差,作為評定客觀圖像質量的標准)頻道的目標比特率越低;那麼視頻所必須進行的壓縮率就越大,通常可察覺的編碼人工 產物也越多。有損失編碼技術的最終目的是:在指定的目標比特串 條件下,獲取最佳的圖像標准。這里應服從「客觀」或「主觀」上 的最佳標准。這里應該指出,圖像的降級程度(指客觀降低以及可 察覺到的人工產物的數量)取決於壓縮技術的復雜性——對於結構 簡單的畫面和視頻活動少的圖像來講,就是採用簡單的壓縮技術, 也許能獲得根本不帶可察覺人工產物的良好的再現圖像
(A)MPEG視頻編碼器源模式
MPEG數字視頻編碼技術實質上是一種統計方法。在時間和空 間方向上,視頻列通常包含統計冗餘度。MPEG壓縮技術所依賴的 基本統計特性為像素之間(interpel)的相關性,這里包含這樣一個 設想:即在各連續幀之間存在簡單的相關性平移運動。這里假定: 一個特殊畫面上的像素量值,可以(採用幀內編碼技術)根據同幀 附近像素來加以預測,或者可以(採用幀間技術)根據附件幀中的 像素來加以預測。直覺告訴我們:在某些場合,如一個視頻序列鏡 頭變化時,各附近幀中像素之間的時間相關性就很小,甚至消失 —這時,該視頻鏡頭就成為一組無相關牲的靜止畫面的組合。在 這種情況下,可採用幀內編碼技術來開發空間相關性,來實現有效 的數據壓縮,MPEG壓縮演算法採用離散餘弦變換(DCT)編碼技 術,以8×8像素的畫面塊為單位,有效地開發同一面面各附近像 索之間的空間相關性。然而,若附近幀中各像素間具有較大的相關 性時,也就是說兩個連續幀的內容很相似或相同時,就可以採用應 用時間預測(幀間的運動補償預測)的幀間DPCM編碼技術。在多 種MPEG視頻編碼方案中,若將時間運動補償預測路剩餘空間信息 的變換碼自適應地結合起來,就能實現數據的高壓縮(視頻的 DPCM/DCT混合編碼) 圖1給出了一個畫面的帕內像素問相關性特性的舉例,這里采 用了一個非常簡單,但很有價值的統計模式。這個假設的簡單模式已包括了許多「典型」畫面的一些基本的相關特性,也就是指相鄰 像素間的高度相關性,以及隨著像素間距的增大相關性的單值衰減 特性。我們以後將利用這一模式來展示變換區域編碼的一些特性。 圖1一些「典型」畫面的像素間的空間相關性,是應用具有 高度像素間相關性的AR(1)GaussMarkov畫面模式來加以計算 的。變數X和Y分別表示像素之間在畫面水平和垂直方向上的距 離
(B)二次取樣和內插法
幾乎所有本論文中所敘述的視頻編碼技術,在編碼之前,均大 量地進行了二次取樣和量化工序。二次取樣的基本概念是想減少輸 入視頻的Dimension 水平Dimension和或垂直Dimension),並在進 行編碼處理之前先對像素進行編號。值得注意的是:在有些應用場 合,在時間方向上也對視頻進行二次取樣,以便在編碼之前降低幀 頻。在接收機端,已解碼圖像是通過內插法來加以顯示的。這一方 法可以認為是一種最簡單的壓縮技術,這種壓縮技術利用了人眼特 有的生理特姓,因而去除了視頻數據中的含有的主觀冗餘度—即 與色度信號的變化相比,人眼對亮度信號的變化更靈敏。故眾多 MPEG編碼方案首先將畫面分成YUV與量信號(一個亮度分量和 二個色度分量)接著,相對於亮度分量,對色度分量進行二次取 樣,對於一些特殊應用,有一個Y:U:V比率(即對於MPEG—2 標准,採用4:1:1或4:2:2.
(C)運動補償預測
運動補償預測是一個有力的工具,以便減小幀間的時間冗餘 度;並作為用於時間DPCM編碼的預測技術,這一工具在MPEGl 和MPEG2視頻編碼標准中得到廣泛應用。運動補償概念是以對視 頻幀間運動的估算為基礎的,也就是說,若視頻鏡頭中所有物體均在空間上有一位移,那麼用有限的運動參數(如對於像素的平移運 動,可用運動矢量來描述)來對幀間的運動加以描述。在這一簡單 例子中,一個來自前編碼幀的運動補償預測像素,就能給出一個有 效像素的最佳預測。通常,預測誤差和運動矢量均傳送至接收機。 然而,將一個運動信息對每一個編碼畫面像素進行編碼,這既不值 得也沒有這個必要。由於一些運動矢量之間的空間相關性通常較 高,有時可以這樣認為:一個運動矢量代表一個相鄰像素塊的運 動。為了做到這一點,畫面一般劃分成一些不連接的像素塊(在 MPEGl和MPEG2標准中一個像素塊為16×16像素),對於每一個 這樣的像素塊,只對一個運動矢量進行估算、編碼和傳送(圖2)。 在MPEG壓縮演算法中,運動補償預測技術用來減少幀間的時間 冗餘度,只對預測誤差畫面(原始畫面與運動補償預測畫面之間的 差別)加以編碼。總的來說,由於採用依據於前編碼幀的預測,與 圖l中所示的幀內相關性相比較,待編碼的運動補償幀間誤差圖像 中像素之間的相關性就差了。 圖2用於運動補償的塊匹配法:在待編碼的第N有效幀中,為 每一個畫面塊估算一個運動矢量(mv)該運動矢量針對前已編碼 的第N—l幀中同樣大小的一個參照畫面塊。運動補償預測誤差是 這樣計算的:在帶有前幀參照塊中運動飄移對應物的面面塊中,減 去一個像素。
(D)變換或編碼
二十年來,人們已對變換編碼進行了大量的研究,它已成為用 於靜止畫面編碼和視頻編碼的一種非常流行的壓縮方法。變換編碼 的目的在於去掉幀內或幀間誤差圖像內容的相關性,對變換系數進 行編碼,不是對畫面的原始像素進行編碼。為此,輸入畫面被分成 不連接的b像素的畫面塊(即N×N像素)。以一個線性、可分離的 和單元前向變換為基礎,本變換可表示為一個矩陣操作,採用一個N×N變換矩陣A,采獲取N×N變換系數C。 C=AbAt 這里AT表示變換矩陣A的一種移項式。注意:這種變換是可逆的, 原因是,採用線性和可分離的反向變換,可以再現原始的N×N個 b像素的畫面塊. b=AtCa 利用許多可能的方法,應用於較小的由8×8像素組成的畫面 塊的離散餘弦變換(DCT)已成為一種最佳的變換,用於靜止畫面 和視頻編碼。事實上,由於基於DCT的方法具有較高的抗相關性 能,並能獲得快速DCT演算法,適用於實時應用,已在大多數畫面 和視頻編碼標准中加以使用。VLSI技術的運行速率適合較廣泛的 視頻應用范圍,故已商業化。 變換編碼的主要目的是使盡量多的變換系數足夠的小,使它仍 無效(從統計和主觀測量角度來看)。同時,應盡量減小系數之間 的統計相關性,目的在於減少對剩餘系數進行編碼所需的比特數 量。 圖3示出了幀內DCT系數8×8像素塊的方差(能量),這里是 以圖1中已討論過的簡單的統計模式設想為基礎的。此處,每一個 系數的方差,表示了系數(大量幀的乎均值)的可變性。與方差大 的系數相比,方差小的系數在畫面像素塊再現時意義就不大了。如 圖3中所示,一般來說,為了獲得畫面像素塊的有用的近似再現, 只要將少量DCT系數傳送給接收機就行。然而,那些最高有效位 DCT系數集中在左上角(低DCT系數),面隨著距離的增加,系數 的有效牲就逐步下降。這意味著:與較低位的系數相比,較高位的 DCT系數在畫面像素塊再現時的重要性就差一些。採用運動補償預測,DCT變換的結果是,使DCT定義域中的時間DPCM信號實現 筒單的再現—這實質上繼承了這種相似的統計相關性,如以DCT 定義域中的這個DPCM信號來再現圖2中的幀內信號(雖然能量有 所減少)—這就是為什麼為了使幀間壓縮獲得成功MPEG演算法要採用DCT編碼的原因 圖3圖示了DCT系數的方差分布情況,典型地計算了大量的畫 面塊而獲得的平均值。DCT系數方差計算是以圖1中的統計模式為 基礎的。U和V分別該8×8塊中水平和垂直畫面變換域變數。大 多數總方差集中在DCDC了系數周圍(U=0,v=0) DCT跟離散傅里葉變換很接近,而認識到以下這點是重要的, 即可以對DCT系數加以頻率說明,使其更接近於DFTo在畫面塊 內,低位的Dcr系數與較低的空間頻率有關而高位的DCT系數 與較高的頻率有關。這一特性在MPEG編碼方案中被加以應用,以 便去除畫面數據中所包含的主觀冗餘度,這一切是以人類視覺系統 標准為基礎的。由於跟較高空間頻率有關的再現誤差比較,觀眾對 較低空間頻率的再現誤差更加敏感,故在給定比特率情況後,為了 要改進解碼畫面的視覺質量往往根據視覺(感覺量化)對系數進 行頻率自適應加權(量化) 上述兩種技術—時間運動補償預測和變換域編碼—的結 合,被認為是MPEG編碼標準的關鍵點 MPEG演算法的第三個特 點是這兩種技術的處理是較小的畫面塊(典型情況是:在16×16 像素上進行運動補償,在8×8像素上進行DCT編碼)。由於這個原 因,MPEG編碼演算法通常又叫作基於畫面塊的DPCM/DCT混合演算法.
MPEG-1:一個通用標准-一個應用於數字存儲媒體
(最高速率達1.5Mb/s)的活動圖像和伴音的編碼標准
由MPEG—1開發出來的視頻壓縮技術的應用范圍很廣,包 括從CD—ROM上的交互系統,到電信網路上的視頻傳送 MPEG1視頻編碼標准被認為是一個通用標准。為了支持多種應用, 可有用戶來規定多種多樣的輸人參數,包括靈活的圖像尺寸和幀 頻。MPEG推薦了一組系統規定的參數:每一個MPEG—l兼容解碼器至少必須能夠支持視頻源參數,最佳可達電視標准:包括每行 最小應有720個像素,每個圖像起碼應有576行,每秒最少不低於 30幀,及最低比特率為1.86Mb/s,標准視頻輸入應包括非隔行掃 描視頻圖像格式。應該指出:但並不是說,MPEGl的應用就限制 於這一系統規定的參數組。 根據JPiG和H。261活動,已開發出MPEG—l視頻演算法。當 時的想法是:盡量保持與CCITT H.261標準的共同性,這樣,支 持兩個標準的做法就似乎可能。當然,MPEGl主要目標在於多媒 體CD—ROM的應用,這里需要由編碼器和解碼器支持的附加函數 牲。由MPEGl提供的重要特性包括:基於幀的視頻隨機存取,通 過壓縮比特流的快進/快退搜索,視頻的反向重放,及壓縮比特流 的編輯能力。
(A)基本的MPEG—1幀間編碼方案
基本MPEGl(及MPEG2)視頻壓縮技術的基礎為:宏模塊結 構、運動補償及宏模塊的有條件再補給。如圖49所示,MPEG—1 編碼演算法以幀內編碼模式(I圖像)對視頻序列的第一幀進行編碼。 每一個下一幀採用幀間預測法(P圖像)進行編碼——僅僅採用來 自前面最近的已編碼I或P幀的數據,來進行預測,MPEG—l算 法對基於畫面塊視頻序列的幀加以處理。視頻序列中的每一個彩色 輸入幀被分割成多個非重迭的「宏模塊」,如圖4b所示。每一個宏 模塊包含4個亮度塊(Y1,Y2,Y3,Y4)及兩個色度塊(U,V), 每個宏模塊的尺寸為8*8像素,這些數據塊來自於亮度帶和共址 的色度帶。在Y:U:V亮度與色度像素之間的取樣比為4:1:1 以最近的前幀為基礎,採用運動補償預測法來對P圖像加以編 碼。每一幀被分割成不連接的「宏模塊」(MB)。 圖4b對於每一個宏模塊,對有關4個亮度塊(Y 3,Y2,Y3, Y4)和兩個彩色決(U,V)的信總均加以編碼。每個包含8×8個 像素。 基本的混合型DPCM/DCT MPEGl編碼器和解碼器結構的方 塊圖示於圖5之中。視頻序列第1幀(I圖像)以幀內(INTRA) 模式加以編碼不參照任何一個過去幀或未來幀。在編碼器處,DCT 被加到每一個8×8亮度塊和色度塊上,在DC了輸出之後,該64個 DCT系數中的每一個系數被均勻量化(Q),在宏模塊中被用來對 DCT系數進行量化的量化器步長,傳送給接收機。『量化之後,最低 位DO系數(DC系數)的處理方法跟保留(remaining)系數 (AC系數)的處理方法是不一樣的,DC系數表示分量模塊的平均 亮度,可用微分DC預測法對DC系數加以編碼。保留DCT系數及 它們位置的非零量化器值被Z字形掃描,並採用可變長度編碼 (VLC)表對其進行掃描寬度嫡編碼。 圖5一個基本混合型DC了/DPCM 編碼器和解碼器結構的方決圖 圖6中表示出了系數Z字形掃描的概念。因為要利用系數將這 個兩維的畫面信號變換成一個單維的比特流,故在量化DCT域二 維信號掃描之後,進行的是可變長度碼—字分配工序。並沿著掃描 行和兩個連續非零系數之間的距離(行程),對這些非零AC系數量 化器值(長度)加以檢測。採用僅傳送—個VLC碼字的方法,對 每一個連續(行程、長度)對進行編碼,Z字形掃描的目的在於: 在跟蹤高頻系數之前先去跟蹤低頻DCT系數(包含最大的能量) 圖6在8×8塊內,已量化DCT系數的Z字形掃描。僅僅對非 零量化DCT系數加以編碼。圖中指出了非零DCT系數可能的位置 Z字形掃描的做法要想做到按系數的有效性去跟蹤DCT系數 參看圖3,最低位的DCT系數(0,0)包含了這些決中的最大部分 的能量,這些能量集中在較低位的DCT系數周圍 解碼器執行反向操作,首先從比特流中提取可變長度編碼字 (VLD)並加以解碼,以便為每一個畫面塊獲取非零DCT系數的位 置和量化器值。隨著一個畫面塊所有非零DCT系數的再現(Q) 及隨後獲得的反DCT(DCT—1),就得到量化塊像素值。通過對整 個比特流的處理,就對所有的畫面塊進行了解碼,並加以了再現。 為了對P圖像進行編碼,前面的I圖像的第N—l幀,存儲在 設置在編碼器和解碼器內的幀存儲器中。在宏模塊中執行運動補償 (MC)—對於即將進行編碼的那個宏模塊,在第N幀與第N—1 幀之間,僅對一個運動矢量進行估算。這些運動矢量被編碼及傳送 至接收機。運動補償預測誤差是這樣計算的:即在帶有前幀運動飄 移對應物的宏模塊中減去一個像素。然後是將8×8DCT加入到包 含在該宏模塊內的每一個8×8塊中,接著是對DCT系數進行量化 (Q),並進行掃描寬度編碼和炳編碼(VLC)o這里需用一個視頻緩 沖器;以確保編碼器能產生一個常量的目標比特率輸出。對於幀內 每一個宏模塊來講,量化步進(SZ)是可以調整的,以便獲得給定 的目標比特率,並避免緩沖器出現溢流和下溢現象。 解碼器採用反向處理,以便在接收機中再生第N幀的一個宏模 塊。對包含在視頻解碼器緩沖器(VB)中的可變長度字(VLD) 進行解碼之後,就能再現(Q和DCT—1操作)預測誤差像素值。 來自包含在幀存儲器(FS)中的前第N—1曲的運動補償像素,被 加入到預測誤差之中,以恢復第N幀的那一宏模塊。 在圖7a一圖7d中9採用了一個典型的測試序列,描述了採用 運動補償預測編碼視頻的好處,而該預測是以MPEG編碼器中的前 第N—1再現幀為依據的。用7a示出在N時間上將要進行編碼的一 個幀,圖7b示出了在N—1時間上的再現幀,其存儲在設置在編碼器和解碼器中的幀存儲器(FS)內。採用編碼器運動估算方法已對 圖7b中所示的塊運動矢量(mv,參照圖2)加以估算,並能預測第 N幀中每個宏模塊的平移運動的位移(參照第N—1幀)。圖7b出 示了這個純幀差信號(第N幀減去第N—1幀),若在編碼過程根本 不採用運動補償預測,那麼就能獲得這個幀差信號——即假定所有 運動矢量為零。圖7d出示了:當採用圖7b的運動矢量來進行預測 時的運動補償幀差信號。很明顯,跟圖7c中的純幀差編碼相比,采 用運動補償,大大減縮了這個將要被編碼的殘差信號。 圖7:(a)在N時間上將要被編碼的幀:(b)在P4—1時間上 的幀,用來預測第N幀的內容(注意:四面中所示的運動矢量,並 不是存儲在編碼器和解碼器內的再現畫面的一部分;(c)沒採用運 動補償所獲取的預測誤差畫面——假設所有的運動矢量均為零; (d)若採用運動補償預測,將要進行編碼的預測誤差畫面.
mpeg如何工作
mpeg-1的特點是它是一種有損的,非平衡編碼。有損意味著為達到低比特率,一些圖像和伴音信息將丟失。通常這些信息是人眼和人耳最不敏感的信息,因此即使以1x cd-rom的速率壓縮也能達到vhs的圖像質量和高保真立體聲的效果。mpeg採用非平衡編碼意味著壓縮一幅圖像比解壓縮慢的多。
mpeg-1的數據流包含3種成分:圖像流,伴音流和系統流。圖像流僅僅包含畫面信息,伴音流包含聲音信息,系統流實現圖像和伴音的同步。所有播放mpeg圖像和伴音數據所需的時鍾信息都包含在系統流中。
mpeg用復雜的數學和心理學技術達到它的壓縮結果。mpeg伴音壓縮編碼利用了人耳靈敏度的研究結果,圖像編碼利用人眼對亮度,顏色,運動的靈敏度的一些有利結果。
mpeg伴音
cd伴音兩個通道共包含1.4mbit/秒的數據流。聽覺心理學研究表明,採用適當的壓縮技術,此數據流可以壓縮到256kbit/秒而不會感覺到任何失真。mpeg伴音利用這個結果,盡管一些mpeg壓縮器不支持高質量圖像。
mpeg伴音編碼可以實現3種壓縮等級。等級i是簡單壓縮,它是一種聽覺心理學模型下的亞抽樣編碼。等級ii加入了更高的精度,等級iii加入了非線性量化,huffman編碼和其他實現低速率高保真圖像的先進技術。依次下去的等級提供了高質量和越來越高的壓縮率,但要求計算機有越來越強的壓縮能力。mpeg等級ii可以把一個1.4mbit/秒的立體聲數據流壓縮到32kbit/秒-384kbit/秒而保持高保真的聲音。典型數據為,等級i的目標是每個通道192kbit/秒,等級ii的目標是每個通道128kbit/秒,等級iii的目標是每個通道64kbit/秒。目標ii要達到64kbit/通道時不如等級iii效果好,而在128kbit/通道,等級ii和等級iii的效果一樣,而且都比等級i效果好。正如上面所說的,每通道128kbit/秒或者說兩通道256kbit/秒可以達到很好的保真度。因此,等級ii對於高保真立體聲音響是必要的,但也已足夠了。
mpeg-1支持設置為單聲道,雙聲道,立體聲或聯合立體聲的兩個聲音通道,等級ii的聯合立體聲把聲音信號的高頻部分(高於2khz)結合起來,立體圖像整個保存下來,但僅傳輸瞬時包絡。等級i不支持兩和立體聲。有些mpeg壓縮器不能產生等時ii的伴音流,從而聲音保真度較低而且沒有聯合立體聲功能。
mpeg圖像
mpeg圖像編碼包含3個成分:i幀,p幀和b幀。mpeg編碼過程中,一些圖像壓縮成i幀,一些壓縮成p幀,另一些壓縮成b幀。i幀壓縮可以得到6;1的壓縮比而不產生任何可覺察的模糊現象。i幀壓縮的同時使用p幀壓縮,可以達到更高的壓縮比而無可覺察的模糊現象。b幀壓縮可以達到200:1的壓縮比,其文件尺寸一般為i幀壓縮尺寸的15%,不到p幀壓縮尺寸的一半。i幀壓縮去掉圖像的空間冗餘度,p幀和b幀去掉時間冗餘度,下文將進一步解釋。
i幀壓縮採用基準幀模式,只提供幀內壓縮,即把幀圖像壓縮到i幀時,僅僅考慮了幀內的圖像。i幀壓縮不能除去幀間冗餘度。幀內壓縮基於離散餘弦變換(dct),類似於jpeg和h.261圖像中使用dct的壓縮標准。
p幀採用預測編碼,利用相鄰幀的一般統計信息進行預測。也就是說,它考慮運動特性,提供幀間編碼。p幀預測當前幀與前面最近的i幀或p幀的差別。
b幀為雙向幀間編碼。它從前面和後面的i幀或p幀中提取數據。b幀基於當前幀與前一幀和後一幀圖像之間的差別進行壓縮。
mepg數據流開始時對ccir-601規定的sif解析度的未壓縮數字圖像進行抽樣。sif解析度,對於ntsc制,就是亮度信號為352*240各像素,每個色度信號都為176*120個象素。各信號都是每秒30幀。mpeg壓縮器決定了當前幀以i幀,p幀還是b幀。幀確定之後就採用dct變換,對結果進行量化,舍入,行程編碼即變長編碼。編碼後的典型圖像幀序為:ibbpbbpbbpbbibbpbbpbbpbbi…
b幀和p幀要求計算機有更強的功能。有些壓縮器不能產生b幀或者連p幀也不能產生,則圖像的壓縮結果將有很明顯的間斷。
其他形式的圖像壓縮
當然,mpeg不是僅有的圖像壓縮標准。h.261,運動jpeg,cinepak和indeo是最優的替代標准。
h.261和motion-jpeg與mepg採用相似的技術,即都採用離散餘弦變換(dct)。然而,jpeg就象mpeg i幀壓縮一樣,是一種幀內壓縮,而且要想不產生可覺察的模糊現象,壓縮比不能超過10。因此,要用cd-rom或internet傳輸圖像,jpeg不是一種好的選擇,因為它們的壓縮比要求達到200:1。h.261可以提供很高的壓縮比,然而它不太適用於有大量運動的圖像,而最適用於有靜態背景的談話圖像。盡管h.261支持通過p幀的幀間壓縮,但它不支持b幀壓縮。因此,高壓縮率的獲得是以部分犧牲圖像質量為代價的。當圖像質量和運動很重要時,h.261將不再是好的選擇。
indeo3.2和4.0是專賣的,採用不同的壓縮技術。indeo 4.0壓縮是兩者中較復雜的一種,允許雙向預測(b幀)和縮放。一般,indeo4.0壓縮用軟體實現,速度很慢,尤其是使用b幀編碼時尤其如此。indeo的b幀壓縮還會造成幀丟失。縮放功能還會造成突變邊緣有可覺察的象素化現象及幀的丟失。不用b幀壓縮和縮放功能時,320x240解析度,每秒15幀的圖像可以壓縮到每秒200kbytes。相比之下,mpeg提供了更高的壓縮率,即將352x240解析度,每秒30幀的圖像壓縮到每秒150kbyte。
cinepak是由radius公司發展的一種壓縮技術,它也是專賣的,壓縮速度很慢。一般它提供每秒15幀的cd而不象mpeg為每秒30幀。
㈨ 編程貓源碼編輯器如何創建一個排行榜
1/7 分步閱讀
打開編程貓界面,首先我們可以選擇主界面上的事件選項,選擇事件中的當按下A按鈕,如圖所示,選中之後積木模塊就出現在編程界面上,選中之後按住滑鼠左鍵拖到相應的位置。
查看剩餘2張圖
2/7
保險期間我們最好把按下切換成放開,因為按鍵有抖動現象,如果選擇放開可能放置物品時會出錯。然後把後面的字母改成L。點擊a後面的三角,選擇彈出界面的l字母。
查看剩餘2張圖
3/7
再選中建造選項,選擇建造中的在焦點上放置方塊。拖動到編碼位置。可以就將內部的定義方塊拖出來,到最左側的回收站刪除,選擇物品中的字母方塊來代替原來默認的方塊。
查看剩餘2張圖
4/7
選擇字母方塊後邊的倒三角可以選擇顯示的字母A_-Z,選擇好之後將第一個模塊和第二個模塊連接,實現第一個效果,當放下按鍵L的時候,就會在你定位的焦點上建造一個字母L的模型。可以自己試一下效果。
查看剩餘2張圖
5/7
然後繼續進行第二個字母的編程,我們需要實現love單詞的擺放,右鍵點擊剛才製作好的編碼,選擇復制並粘貼,粘貼的積木塊,更改控制的按鍵和顯示的字母,完成第二個字母的擺放,同理可以完成V,E字母的擺放。
查看剩餘2張圖
6/7
全部完成之後,點擊運行,定位焦點按下按鍵L,然後將焦點定位到L右側,按下按鍵O,同理移動焦點位置分別按下V,E。就會出現如圖所示效果,建造了一個LOVE顯示。也可以設置成一鍵完成整個操作。
查看剩餘1張圖
7/7
修改一下對應的代碼,使用定位點,將定位點設置為焦點位置,然後將定位點一直往右移一位,這樣只要點擊按鍵L,就會一次生成love圖案。還是比較方便的。這樣生成的圖案在平面上,沒有凸出來,可以再加上一句將定位點上移一個單位。這樣就實現了一開始想要達到的效果。
㈩ 用verilog實現的8-3優先編碼器,為什麼模擬的數據跟我寫的測試數據不同,謝謝,在線等
testbench中
未加`timescale 1ns / 1ps
而且a = 00000001;也不對,沒指示位寬
應該是 a = 8『b00000001; 其他賦值類同;
還有個問題就是後面的#200,沒有在#200後加分號