周克娟
(常州開放大學 理工學院,江蘇 常州 213000)
矩陣(Matrix)的概念及運算規律是由英國數學家阿瑟·凱利和詹姆斯·約瑟夫·西爾維斯特于19世紀50年代提出的,最早來自于方程組的系數及常數所構成的方陣。“矩陣”是線性代數初步的內容,它是在系統學習了行列式的定義、性質基礎上,進一步研究矩陣理論,并在后續線性方程組求解的課程中發揮著重要的作用,因此掌握好矩陣的學習對工科數學課程的學習有重要意義。
隨著計算機技術的快速發展,計算機輔助課堂教學亦得到廣泛的應用,計算機的發展助力了數學軟件的深入研發,這為數學課程的教學拓寬了思路。矩陣的相關理論及其算法在數字圖像的分析和處理中應用廣泛,如指紋自動識別技術、人臉自動識別技術、車牌識別系統中圖像的讀取、圖像預處理、邊緣檢測、車牌定位等功能的實現。考慮到矩陣的概念及其運算的教學內容極具抽象性,傳統講練結合的教學方式不能生動地呈現出教學內容,難以激發學生的學習興趣。在工科專業的矩陣的概念及其運算的教學過程中,潛移默化地加強思想政治教育,并與數字圖像處理的相關實驗相融合[1],借助于數學軟件Matlab將矩陣的知識加以拓展和可視化[2]。引導學生注重理論和實踐相結合。突出跨學科整合科學、技術和工程、數學等核心特征,符合以產出(學習成果)為目標導向,以學生為主體地位的OBE(Outcome basededucation)教育理念。
當前,大學生通過使用美圖秀秀、醒圖、黃油相機等手機修圖軟件處理圖片并發布到社交軟件、媒體平臺,可見學生接受這種具體化、形象化的方式,而矩陣的概念以及運算這部分的知識較為抽象,難以充分調動學生學習的積極性。因此,本文對這部分的教學設計進行探索與實踐,引入圖像處理實例來可視化矩陣的相關知識,將抽象的理論知識變得更直觀形象。
Matlab(matrix&laboratory)即矩陣實驗室,軟件一經研發就在眾多領域應用,是進行數據分析、圖像處理、信號處理的三大數學軟件之一,其強大的圖形處理系統能夠快捷地圖形化顯示矩陣,并自帶了二維三維圖形函數、圖像處理和動畫顯示等函數。它可以實現給圖像添加濾鏡效果,如浮雕、懷舊色、連環畫、羽化、素描、強光等,還可以實現圖像拼接、圖像融合、圖像分割、校正等功能[3][4]。本研究基于Matlab數字圖像處理的矩陣的概念及其加法、減法、數乘、乘法基本運算的教學應用。
為提高課堂教學實效,突出“以教師為主導,以學生為主體”的教學理念,基于“課前——課中——課后”一體化教學模式設計教學環節。課前,教師線上發布課件、Matlab編程的主要代碼等教學資源,發揮混合式課堂的教學優勢;課中,教師講授理論知識并演示對應的Matlab圖像處理可視化操作程序,引導學生實踐操作;課后,教師布置研究型的任務供學生挑戰與探索。三個環節環環相扣,層層遞進,使得學生課前有抓手、課中有目標、課后有任務,在提高學生自主學習能力的同時加深對重難點知識的理解與實際運用。
從現實中獲取數字圖像的方法很多,如數碼相機、掃描儀、CT或者磁共振成像。在課堂實際教學過程中,教師在介紹數字圖像時可以導入圖畫,使用Photoshop等圖像編輯器打開圖像,當用放大鏡放大查看時,還可以看到很多的小方格。這每一個方格代表的就是圖像的一個像素,所謂像素是整個圖像中不可分割的元素。一張圖像是由像素點排列成正方形或者長方形。事實上,數字圖像的數據可以用矩陣的形式來表示,一張尺寸為16×16的二值圖像就對應一個16×16的矩陣,矩陣的行對應圖像的高(單位為像素),矩陣的列對應圖像的寬(單位為像素),矩陣的每個元素值對應圖像的每個像素值,所以對數字圖像的處理實際上就是通過操控矩陣來實現的。
在Matlab中調用“A=imread(filename)”函數讀取灰度圖像的數據后保存的數據是uint8類型,也就是每一個像素值都是由0~255之間的數字量化的,這256個數字衡量著圖像灰度的深淺,值越大,代表越亮,值越小,代表越灰,0代表黑色,255代表白色。而將uint8類型轉換為double類型后像素值的范圍變成了0~1之間,也就是說0代表黑色,1代表白色,中間各數值則代表不同的灰度等級狀態。
在掌握了矩陣的概念后學生還要了解零矩陣、單位矩陣、對角矩陣、上(下)三角矩陣的定義。在Matlab中調用顯示圖像函數“imshow(A)”將抽象的概念形象化、可視化,觸發學生的聯想和想象的能力,讓學生輕松、高效地學習和理解概念。從二值圖像(黑白圖像)的角度解讀特殊矩陣,如圖1所示,調用“zeros(m,n)”函數構造了三個不同階數的零矩陣,這三個零矩陣可視化圖像顯然不同,這表明不同階數的零矩陣是不相等的。如圖2所示,利用“eye(m,n)”函數直觀顯示單位矩陣的圖像。在理解了由0和1兩個數據構成的特殊矩陣與其所對應的圖像之間的關系后,教師可以布置學生課后嘗試利用矩陣構造顯示特殊的日期、標語口號等,這與設計大學生軍訓、運動會匯演的方陣有異曲同工之妙,促進學生所學知識的靈活運用。

圖1 不同階數的零矩陣圖像圖

圖2 四階單位矩陣圖像圖
教師演示兩張256像素*256像素的圖像與另一張567像素*390像素的圖像,通過類比圖片的尺寸屬性概括出同型矩陣的概念:兩個矩陣的行數相等、列數也相等的矩陣稱為同型矩陣。如果兩個矩陣是同型矩陣,且它們的對應元素相等,那么就稱這兩個矩陣相等,這就好像是一幅圖像復制生成另一幅圖像,其圖像的屬性也是相同的。調用“rand(1,5)”或“rand(5,1)”函數生成元素在(0,1)的隨機行矩陣和列矩陣并直觀顯示如圖3所示。在Matlab中調用“A=rand(1,n)”函數生成元素在(0,1)內的1×n隨機行矩陣A,再調用“B=diag(A,0)”函數構造以矩陣A的所有元素為主對角元素的對角矩陣,“imshow(B)”函數顯示所形成對角矩陣的圖像,如圖4所示,一整個黑方塊的主對角線上分布著不同級別的黑白灰小色塊。

圖3 行矩陣與列矩陣的圖像圖

圖4 對角矩陣的圖像圖
Matlab中提供了許多對矩陣操作的函數,例如調用“triu(A)”和“tril(A)”函數可以實現矩陣的上三角矩陣和下三角矩陣的提取,運行后對比效果圖如圖5所示。通過運行后圖像的直觀性能夠加深學生對定義的理解,初步感受矩陣與圖像之間的關聯性,上(下)三角矩陣是主對角線以下(上)都是零的方陣,因而圖像對應位置會呈現出黑色三角形區域,這也有利于后續上(下)三角矩陣之間的加法、減法、乘法運算及性質的理解。

圖5 上三角矩陣和下三角矩陣的圖像圖
矩陣的加法、減法、數乘、乘法運算都是矩陣的基本運算。在教材中往往從“矩陣的本質就是線性方程式”的角度出發理解矩陣的計算規則,這使得教學具有局限性,只能幫助學生將矩陣與線性方程式一一對應理解,不能幫助學生將矩陣的知識與生產實際、科學工程等應用相聯系。因此,既要考慮到矩陣計算規則的含義很難理解,又要考慮知識與實踐應用的整合,本文研究從數字圖像的角度進一步理解矩陣的運算規則、運算性質。
需要與矩陣的運算進行區分的是,在進行圖像的像素值相加、相減、相乘等運算時,有可能會出現像素之和大于255的情況,即超出數據類型所允許的最大像素值255,這種情況叫做像素值溢出,一般有歸一化和截斷兩種方法可以解決像素值的溢出問題。歸一化是對所有像素值進行統一的放縮,也就是將0~255的范圍歸一化到0~1的范圍。常用的歸一化公式是:其中xi和xi*分別表示像素值歸一化前和歸一化后的值,xmin與xmax分別對應采樣數據的最小值和最大值,Pmax是最大可能的像素值,如數據類型是uint8,則Pmax取255,若數據類型為double,則Pmax取1,在Matlab中也可以調用“Y=mapminmax(X,YMIN,YMAX)”函數進行歸一化處理。截斷是直截了當得將運算后所有溢出的像素值設為該數據類型的最大值。
1.從數字圖像的角度感受矩陣的加法
(1)可視水印效果與矩陣的加法
不同圖像相加,效果不同,為了防止圖片被盜用,一般會在圖片上添加水印,來保護圖片的版權,通過讀取待嵌入水印的圖像和水印圖像并將兩幅圖像的大小預處理后進行疊加,實現添加可視水印的效果如下頁圖6所示,教師在教學過程中還能夠潛移默化地開展知識產權教育。

圖6 可視水印效果圖 圖7 二次曝光效果圖
(2)二次曝光效果與矩陣的加法
兩個矩陣的和即這兩個矩陣的對應元素相加。圖像相加的原理實際就是結合兩幅圖像的像素內容,即對應像素位置的亮度值矩陣的相加,圖像的相加可用于將一幅圖像的內容疊加到另一幅圖像上去,以達到二次曝光的效果,從而實現增加圖片虛幻效果的目的,如圖7所示。通過調用Matlab中的“C=imadd(A,B)”函數對兩幅圖像進行疊加處理,使用的就是截斷的方法處理像素值的溢出。選擇其中一幅作為前景需要提取主干信息,另一幅則作為背景圖將第一幅中提取出的主干信息疊加到第二幅圖像中,我們可以發現加法合成之后的畫面如圖8所示,比之前圖像的畫面更加明亮。

圖8 多重曝光效果圖
類比兩幅圖像相加,讀取圖像數據后,需要調用“B=imresize(A,[numrowsnumcols])”函數修改圖像,使得它們的大小和尺寸相同,得出只有同型矩陣才能相加的前提條件,更換讀取圖片的先后順序,運行結果不變,得出矩陣的加法運算符合交換律的結論。多重曝光效果是指多張照片疊加后的效果,如圖9所示,調整三張圖像疊加的先后順序,運行結果保持一致性,可以直觀驗證矩陣加法的結合律(A+B)C+=A+(B+C),加深學生對矩陣加法運算及運算律的理解。
(3)圖像亮度調節與矩陣的加法
圖像亮度的調節可以通過矩陣的加法運算實現,將一個正數值(標量)加到一幅圖像上,可以增加圖像的亮度,調用“B=imadd(A,50)”和“C=imadd(A,100)”函數,使得原圖像得每個像素都增加了亮度,運行效果如圖9所示。反之,加上一個負數(標量),就會使得圖像的亮度降低,效果如圖10所示,此時可以類比拋出矩陣的減法運算。

圖9 亮度提升效果圖

圖10 亮度降低效果圖
(4)圖像的加噪與矩陣的加法
以人臉識別、車牌識別系統為例,受圖像采集設備、自然環境等諸多因素的影響,所處理的圖像和“本真”圖像會產生一定的差異性,這一部分差異就是噪聲。因此,要測試算法的穩健性就需要對圖像進行加噪處理。實現給圖像添加噪聲的效果也是通過矩陣的加法實現的,即對各個像素值加上隨機量,這是一種常見的加噪方法。調用“B=imnoise(A,” speckle” ,0.03)”函數實現斑點噪聲效果如圖11所示,其中0.03為可調節的參數,是指均值為0,方差為0.03的均勻分布的隨機噪聲。

圖11 斑點噪聲效果圖
2.從數字圖像的角度感受矩陣的減法
(1)摳除固定背景的底片效果與矩陣的減法
圖像的相減常常用于去除一幅圖像中諸如背景陰影、周期性的噪聲、已知的附加污染等所不需要的加性圖案,Matlab中調用“C=imsubtract(A,B)”函數實現從圖像中減去另一幅圖像的效果,運行后得到摳除固定背景的底片效果如圖12所示。類比圖像矩陣的加法,圖像矩陣的減法也要求同型矩陣才能相減。

圖12 摳除固定背景的底片效果圖
(2)圖像求反與矩陣的減法
調用“D=imcomplement(C)”函數,對圖12的運行效果圖像的數據進行取反運算,相當于是用一張純白色的圖像與底片效果圖做差,從而實現底片反轉的效果如圖13所示。

圖13 圖像求反圖
(3)目標邊緣效果與矩陣的減法
在一些系統設計過程中常常需要計算并確定物體邊界位置的信息,可以用圖像的減運算實現。以車牌識別系統為例,電子設備在采集圖像時,連續拍攝兩幅含有車牌的圖像,這兩幅圖像信息不完全對準,也就是在行與列方向上的信息會稍有偏移,這兩幅圖像之間的減法運算可以得到圖像不同方向的相減圖像,從而突出圖像上定位目標的邊緣信息,運行效果如圖14所示。

圖14 目標邊緣效果圖
3.從數字圖像的角度感受矩陣的數乘
還有一種常見的圖像處理操作是一幅圖像與一個常數的乘法運算,實質上就是矩陣的數乘運算,矩陣的數乘運算是矩陣中的每一個元素都乘以常數,這個常數被稱為縮放因子。運算過程中,調用“B=immultiply(A,k)”函數實現,如果使用的縮放因子k大于1,灰度值會增加,那么圖像的對比度和亮度將提升,這里分別展示了乘以縮放因子2和4以后的圖像,運行結果如圖15所示,反之,如果使用的縮放因子k小于1則灰度值會降低,使得圖像的對比度和亮度降低,這里分別乘以縮放因子0.8和0.2以后的圖像如圖16所示。通常,通過縮放處理產生的圖像亮度的調節效果比直接添加像素偏移值更為自然,既能夠呈現圖像的拍攝主體,圖像又不會失真,這主要取決于其處理時能夠較好地維持圖像的相關對比度。

圖15 圖像的對比度和亮度的提高圖

圖16 圖像的對比度和亮度的降低圖
4.從數字圖像的角度感受矩陣的乘法
矩陣乘法的計算規則比較復雜,前一個矩陣的第i行中的元素分別與后一個矩陣的第j列中的元素相乘再求和,得到的結果就是新矩陣的第i行第j列的值,簡稱“前行后列”。
調用“P=mtimes(A,B)”函數實現矩陣的乘法運算,根據圖17矩陣A乘以矩陣B和圖18矩陣B乘以矩陣A的運行結果的條紋格式與方向,不僅可以證明乘法運算中前一個矩陣的行與后一個矩陣的列相匹配,還可以直觀證明矩陣的乘法運算不符合交換律,這樣能夠有效鞏固學生對乘法運算規則的解讀。

圖17 矩陣A乘以矩陣B效果圖

圖18 矩陣B乘以矩陣A效果圖
本文將Matlab數字圖像處理的常見操作與矩陣的概念及其基本運算這一教學內容相融合,達到了知識點可視化的教學目的,在一定程度上可以幫助學生快捷理解掌握知識內容。
教師在合理利用教材的同時,要創造性地發揮引導作用,為學生提供豐富多彩的感性材料,將數學與生活緊密聯系,有效地激發學生的興趣,降低學生對抽象概念的理解難度,同時鍛煉學生動手解決問題的能力,讓學生對理論知識的實際應用價值有直觀、具體的認識,更好地鞏固知識。