摘要:“信息論與編碼”之所以讓教與學都很難,一個重要的原因是缺少一套適用的配套實驗。本文給出了實驗內容的安排原則,涉及實驗內容、類型、難度、實驗環(huán)境、實驗分級等方面,并給出了一個有關限失真信源編碼的實例,希望能起到拋磚引玉的作用。
關鍵詞:信息論與編碼;實驗;課程建設;信息安全
中圖分類號:G642
文獻標識碼:B
1 “信息論與編碼”課程中引入實驗的必要性
“信息論與編碼”課程是信息安全專業(yè)的學科基礎必修課,然而與信息論課程的重要性相比,它的課程建設和教學效果卻相對落后。筆者在參考文獻[1]中深入分析了該課程目前存在的問題,包括教學內容過于抽象、脫離學生的實踐經驗,教學方法以課堂理論教學為主,缺少實踐和啟發(fā)互動環(huán)節(jié)等等。從這些問題能夠看出,產生這些問題的根本原因是理論知識與學生的生活工作實踐脫節(jié)。這給本科教學帶來了很大的困難,學生普遍反映“信息論與編碼”課程內容理論性太強、難以理解,失去了學習興趣,這樣既不利于對課程內容的深入理解,也不利于形成理論聯系實際的學風,更不利于發(fā)現問題、解決問題能力的培養(yǎng)。
因此非常有必要從學生的認知能力出發(fā),結合信息安全專業(yè)特點,設計一套適用的配套實驗,把理論知識和學生實踐之間那個脫了的節(jié)連接起來。這套實驗要達到以下三個目的:
(1) 將課堂講授內容運用于實驗,學以致用,幫助學生理解課程內容;
(2) 實驗內容貼近學生生活實踐,提高學生學習興趣;
(3) 實驗內容與學生專業(yè)掛鉤,讓學生明確“信息論與編碼”課程在信息安全專業(yè)中的重要地位,提高學生學習的自覺性。
2實驗內容的安排原則
在實驗內容的安排上,要注意以下幾個原則:
(1) 實驗內容既要扣住課堂知識,又不要簡單重復課堂知識,要用學生熟悉的內容或者與專業(yè)掛鉤的內容將知識點串起來。設計時要從大學本科學生的認知能力和信息安全專業(yè)特點入手,在整個課程體系中系統(tǒng)考慮,即一個實驗不要只扣住所在章節(jié)的一個知識點,可以將已經講過的知識點盡量多地貫通。
(2) 盡量不設計驗證性實驗,多設計一些綜合性實驗。這是因為“信息論與編碼”課程一般是在三年級開設,此時學生已經具備了一定的動手能力和分析問題、解決問題的能力,多安排一些綜合性實驗更能為畢業(yè)設計以及將來的工作和深造做好準備。
(3) 難度要適中,既要有拔高,又要使學生付出一定的努力能夠實現。太簡單,起不到實驗的目的;太難,學生總是不能獨立完成,慢慢就會失去學習興趣。
(4) 為了便于實驗在各種條件下都能開展,實驗環(huán)境限制于未聯網的計算機。實驗方法要考慮學生的理解能力和動手能力,以計算機仿真為主。
(5) 實驗可以分級,培養(yǎng)學生獨立思考能力,鼓勵學生之間或者學生與外界之間的有效合作。根據實驗的難易程度和復雜程度,可以將實驗分為表1所示的4個級別。
選作題既滿足了不同能力學生的不同需求,也為教師根據課時布置實驗帶來了靈活性。
需要學生獨立完成的實驗,可以培養(yǎng)學生獨立思考的能力。對于允許學生合作完成的實驗,并不是讓大家互相抄襲,而是學生之間或者學生與外界之間可以討論問題及其解答方法,但是每個學生必須自主完成實驗,而且必須在實驗報告中標出“***時間,***地點,就***與***進行了探討,得到了***結論。”,這一方面培養(yǎng)了學生的團隊合作精神和能力以及溝通能力,另一方面有利于建立良好的學習氛圍,能夠讓學生初步了解如何做科研,并培養(yǎng)學術道德。
3一個實例
筆者已經在實際教學過程中設計了多個實驗,下面就給出一個實例,并對其進行分析。該實驗的部分內容參考自文獻[2]。
3.1題目
限失真信源編碼是多媒體數據壓縮的主要方法,為這一部分設計的實驗名稱是“實現一個簡化的JPEG編碼器”。題目如下:
JPEG是目前主流的圖像壓縮標準,試用計算機仿真(推薦使用MATLAB)一個簡化的JPEG編碼器(即JPEG壓縮器)。該編碼器的壓縮過程如圖1所示。
其中的“量化”與JPEG壓縮標準中的量化不完全一樣,本仿真程序中的量化過程為將絕對值小于某一給定數值的所有系數置零。
仿真程序需要具備以下功能:
(1) 完成圖1中出現的所有步驟;
(2) 量化過程放在一個循環(huán)中,循環(huán)變量為cutoff,依次取值0, 10, 20, …,100,每循環(huán)一次,把絕對值小于cutoff的所有DCT系數置零,被置零就意味著該數據被壓縮掉了;
(3) 對每塊量化后的8*8的DCT系數執(zhí)行一次逆DCT運算,重構圖像并顯示;
(4) 確定初始圖像和重構圖像之間的均方誤差,并比較cutoff取不同值時均方誤差與圖像尺寸的關系。
該實驗級別為合作選作。
3.2參考答案
MATLAB程序代碼和每行代碼的作用如下:
load imdemos flower;%載入一幅灰度圖像“flower”
flower=double(flower);%為進行后面的運算,將整數數據變?yōu)殡p精度浮點數據
set(gcf,'NumberTitle','off','Name','Flower');%打開一個圖像顯示窗口,該窗口無需順序編號,窗口標題為“Flower”
imshow(flower,[0 255]);%顯示打開的圖像,如圖2的(a)所示
x=[];%變量x用來記錄圖像尺寸
y=[];%變量y用來記錄均方誤差
encoded=blkproc(flower,[8 8],'dct2');%對圖像的每一個8*8分塊執(zhí)行二維DCT運算,系數記錄在變量encoded中
for cutoff=0:10:100,% cutoff的取值為0, 10, 20,…,100,每取一次值,執(zhí)行下面的操作
encoded(abs(encoded) decoded=round(blkproc(encoded,[8 8],'idct2'));%對系數的每個8*8分塊執(zhí)行二維逆DCT運算并取整,這實質就是一個圖像重構過程,重構后的圖像記錄在變量decoded中 x=[x,nnz(encoded)];%計算圖像尺寸,即非零系數的個數,每次計算出的圖像尺寸組成一個向量 y=[y,mean2((flower-decoded).^2)];%計算初始圖像flower和重構圖像decoded之間的均方誤差,每次計算出的均方誤差組成一個向量 figure;%打開一個新的圖像顯示窗口 set(gcf,'NumberTitle','off','Name', sprintf('cutoff=%d',cutoff));%該窗口無需順序編號,窗口標題為“cutoff=***” imshow(decoded,[0 255]);%顯示重構后的圖像,如圖2的(b)-(l)所示 end figure;%打開一個新的圖像顯示窗口 set(gcf,'NumberTitle','off','Name','Comparison');%該窗口無需編號,窗口標題為“Comparison” plot(x,y,'s-');%以圖像尺寸x為橫坐標,以均方誤差y為縱坐標,作圖,如圖3所示 title('Comparison of File Size and Image Error');%該圖的標題 xlabel('Non-zero matrix values(number of bytes to store)');%該圖的橫坐標標題 ylabel('Mean squared error');%該圖的縱坐標標題 可以看到,在MATLAB中僅用22行代碼就實現了JPEG壓縮標準的仿真和分析,這得益于MATLAB強大的數值計算功能,例如可以進行塊操作,而無須每個分塊分別處理;DCT和逆DCT都有現成的函數等等。如果需要用某種語言(C、Java、匯編等)實現JPEG的編解碼,DCT和逆DCT的代碼很多網站都有,可以從網上很方便地查找到。 從圖2能夠看出,隨著越來越多的數據被壓縮掉,圖像質量越來越差。當cutoff比較大的時候,甚至能看出8*8分塊。圖3清楚地表明圖像尺寸與均方誤差之間呈反比關系。均方誤差越大,表明圖像質量越差。因此曲線中最左上角的點代表了圖2中的(l),最右下角的點代表了圖2中的(b)。 3.3分析 這是一個綜合性實驗,實驗內容涉及限失真信源編碼中的DCT、量化、誤差等多個知識點。無論學生選用什么語言,均可以在單機上仿真完成。難度中等偏上,如果多個學生互相合作,經過商量討論是可以完成的。筆者的實踐證明了這一點,雖然是選作題,但還是有不少同學自由組合完成了題目的要求。 4結束語 對于本次“信息論與編碼”課程的實驗教學探索,我院在信息安全專業(yè)05級1、2班中進行了實踐,收到了很好的效果,激發(fā)了學生的學習興趣和鉆研精神,學生的完成情況比教師的預計要好得多,而且學生普遍感覺收獲很大。 這次“信息論與編碼”課程的實驗教學探索才剛剛開始,在今后的教學過程中還需要不斷實踐,設計出更多更好的實驗。希望同行們能夠互相交流,集思廣益。 參考文獻: [1] 姜楠. “信息論”課程本科教學探索與實踐[J]. 計算機教育,2007,(24): 52-54. [2] 麻省理工學院信息論開放課程[OL]. http://www.core.org.cn.