① 用matlab 通過模板匹配的方式,對text.png圖像中的字母『a』進行定位,給出定位結果以及位置坐標。
逐句 可能沒法呢 寡人已經在論壇解釋過了 有問題呼我把
首先
1、定位部分 [temp MaxY]=max(white_y); %temp為向量white_y的元素中的最大值,MaxY為該值的索引(在向量中的位置),也就是說temp為車牌矩陣每一列求和的最大值,即車牌x方向最多像素的地方,(姑且叫他像素中線)那麼
while ((Blue_y(PY1,1)>=5)&&(PY1>1)) PY1=PY1-1; 就可以確實車牌上邊緣,同理
while ((Blue_y(PY2,1)>=5)&&(PY2<y)) PY2=PY2+1;確定下邊緣 。為什麼是大於5呢,剛才已經知道是車牌x方向所有列的和,也就是寬,車牌單個字元,那麼范圍為0-128px,如果值越大,則上下邊緣就像素中線就近了,那麼車牌車牌橫向就短了嘛
,同理。while ((Blue_y(1,PX1)<3)&&(PX1<x)) PX1=PX1+1;
為什麼是3呢。,車牌單個字元的,值確定,那麼車牌車牌縱向區域就窄了
2、分割:
首先對車牌圖像自左向右逐列掃描,尋找連續有文字的區間塊,將該區間塊的有效寬度與某一固定閾值(本文設定的閾值為10,可更改)進行比較,若小於該設定閾值,則認為是左側干擾,裁剪干擾區域;反之,分割出該模糊
字元塊。
3)判斷該字元區域是否為有效區域。首先建立矩陣,依據車牌先驗知識,分析該字元區域的有效寬度及寬高比(1:2),即可判斷是否為干擾區域,若為字元區域,進一步去除偽字元區域,則分割出第一個字元;反之,認為是左側干擾區域進行裁剪。
解釋:本程序對於定位部分比較理想的情況下 分割率為50%+,但對川字車牌沒有魯棒性,由於川字未連通,所以會被當作背景而切除,其他省份,暫時沒有遇到過。當然如果定位後的車牌傾角大於20度這樣,那麼必須校正,否則會出錯
3、分割:這部分就悲劇了,採用的是單純的模板相減,並且程序沒有標准模板
建議計算相關系數,用距離變換進行匹配把
② 急求matlab處理模糊車牌具體步驟
基於圖像處理的汽車牌照的識別
作者:陳秋菊
指導老師:李方洲
(溫州師范學院 物理與電子信息學院 325027)
摘要:以一幅汽車牌照的識別為例,具體介紹了車牌自動識別的原理。整個處理過程分為預處理、邊緣提取、車牌定位、字元分割、字元識別五大模塊,用MATLAB軟體編程來實現每一個部分,最後識別出汽車牌照。在研究的同時對其中出現的問題進行了具體分析,處理。尋找出對於具體的汽車牌照識別過程的最好的方法。
關鍵詞:汽車牌照 車牌提取 字元分割 字元識別
The vehicle license recognition based on the image processing
Author:Chen Qiuju
Tutor:Li Fangzhou
(School of Physics and Electronic Information Wen Zhou Normal College 325027)
Abstract: With one vehicle license recognition, the principle of the automobile License recognition is introced .This process was divided into pre-process, edge extraction, vehicle license location, character division and character recognition, which is implemented separated by using MATLAB. The license is recognized at last. At the same time, the problems are also analyzed
And solved in the process. The best method of recognition to the very vehicle license is found.
Keywords: vehicle license vehicle license location character segmentation
Character recognition
1. 引言
1.1 選題意義
汽車牌照自動識別系統是以汽車牌照為特定目標的專用計算機視覺系統,是計算機視覺和模式識別技術在智能交通領域應用的重要研究課題之一,是實現交通管理智能化的重要環節,它可廣泛應用於交通流量檢測,交通控制與誘導,機場、港口、小區的車輛管理,不停車自動收費,闖紅燈等違章車輛監控以及車輛安全防盜等領域,具有廣闊的應用前景。目前,發達國家LPR(汽車牌照識別技術License Plate Recognition, LPR,簡稱「車牌通」)系統在實際交通系統中已成功應用,而我國的開發應用進展緩慢,車牌識別系統基本上還停留在實驗室階段。基於這種現狀還有它廣闊的應用前景,目前對汽車車牌的識別研究就有了深遠的意義。
課題組成
汽車車牌的識別過程主要包括車牌定位、字元車牌分割和車牌字元識別三個關鍵環節。其識別流程如下:
原始圖像 :由數碼相機或其它掃描裝置拍攝到的圖像
圖像預處理:對動態採集到的圖像進行濾波,邊界增強等處理以克服圖像干擾
邊緣提取 :通過微分運算,2值化處理,得到圖像的邊緣
車牌定位 :計算邊緣圖像的投影面積,尋找峰谷點,大致確定車牌位置,再計算此連通域內的寬高比,剔除不在域值范圍內的連通域。最後得到的便為車牌區域。
字元分割 :利用投影檢測的字元定位分割方法得到單個的字元
字元識別 :利用模板匹配的方法與資料庫中的字元進行匹配從而確認出字元,得到最後的汽車牌照,包括英文字母和數字。
本文以一幅汽車圖像為例,結合圖像處理各方面的知識,利用MATLAB編程,實現了從
車牌的預處理到字元識別的完整過程。各部分的處理情況如下:
2.預處理及邊緣提取
圖1 汽車原圖
圖像在形成、傳輸或變換過程中,受多種因素的影響,如:光學系統失真、系統雜訊、暴光不足或過量、相對運動等,往往會與原始景物之間或圖像與原始圖像之間產生了某種差異,這種差異稱為降質或退化。這種降質或退化對我們的處理往往會造成影響。因此在圖像處理之前必須進行預處理,包括去除噪音,邊界增強,增加亮度等等。
因為雜訊主要是一些含高頻的突變成分,因此可以通過一個低通濾波器來消除圖像中包含的雜訊,並使低頻成分得到增強。濾波的方式有兩種,一種是空間域濾波,一種是頻率域濾波。在空間域,常見的濾波方式有兩種方式,均值濾波和中值濾波。空間域濾波主要有巴特沃斯濾波器。在車牌邊緣提取之前,兩種濾波方式均採用了。並與未進行濾波的邊緣進行比較。以下是經處理後的一些圖片。
圖2 經均值濾波後提取的邊緣圖像
圖3 經巴特沃斯低通濾波後提取的邊緣圖像
圖4 未濾波直接提取出的邊緣信息
圖5 經高通濾波器增強後得到的邊緣圖像
對比以上幾幅圖片,圖2的邊緣太粗,而圖3的邊緣已經模糊掉了。圖5中包含的雜訊太多,圖4未經濾波直接提取出的邊緣圖像最清晰,所包含的有用信息最多。分析這種情況產生的原因,歸納起來主要有以下方面:
1、原始圖像清晰度比較高,從而簡化了預處理
2、圖像的平滑處理會使圖像的邊緣信息受到損失,圖像變得模糊
3、圖像的銳化可以增強圖像中物體的邊緣輪廓,但同時也使一些雜訊得到了增強
綜上所述,結合MATLAB實驗過程,得出不是每一種圖像處理之初都適合濾波和邊界增強。本次汽車車牌的識別,為了保存更多的有用信息,經過多次比較,選擇圖4作為後期處理的依據。邊緣的提取採用的是梯度運算元,因為其實現過程比較簡單,所以在此不多加贅述了。
提取出的邊緣含有多個灰度值,要進行二值化處理,選擇一個合適的域值。經多次比較,選取域值T=70,對於灰度值大於T的賦值為255,小於T的賦值為0。經過處理後的圖像如下所示:
圖6 二值化後的邊緣圖像
結合後期分割得到的車牌圖7,二值化後的圖像在後期的識別中並不會提高車牌的識別率,因此不採用二值化的圖像來進行識別,因此後面的處理依然使用圖4。
3.車牌提取
經過邊緣提取得到的圖像,車牌區域在水平方向灰度面積值具有明顯頻繁的跳變,在垂直方向上的面積投影則出現峰-谷-峰的特性。根據這種峰谷特點,自動檢測車牌位置峰點檢測的車牌區域定位方法, 並對初步定位後的車牌進一步使用微定位技術。該方法包括三部分: (1) 車牌的橫向定位; (2)車牌的縱向定位; (3) 車牌的微定位。
汽車本身具有一定的特點,一般情況下,牌照都掛在緩沖器上或附近,處於車牌照圖像的下半部分,本次分割的主要意圖是縮小牌照搜索范圍,大致確定出牌照的位置。對如圖4所示的汽車邊緣圖像f ( x , y) ,我們首先進行水平方向一階差分運算,即
g ( i , j) = | f ( i , j) - f ( i , j + 1) |
其中i = 1 ,2 ,3 , ⋯,xw - 1 ,j = 0 ,1 ,2 ,3 , ⋯yw - 1 ,其中xw,yw分別為圖像的行數和列數。然後對水平差分圖像的像素沿水平方向累加產生一個投影表T( i) ,如圖7所示。
圖7 汽車邊緣圖像的水平面積投影圖
一般對應於車牌位置的投影值T( i) 較大,而在車牌上,下行附近的投影值較小,均有谷點存在。只要能找到這兩個谷點,就能大致確定出車牌照的位置,縮小車牌搜索范圍。由圖4可以看出,車牌下方的橫欄處的T(i)值應該是最大的,而車牌位置就在其附近。根據這些特定,可定出車牌位置大概在320~350行之間。
類似的方法得出汽車邊緣圖像的垂直面積投影圖
圖8 汽車邊緣圖像的垂直面積投影圖
同上可初步得到汽車牌照的列位置在120~210之間。大致確定的牌照位置如下圖。
圖9 粗略定位出的汽車牌照
對初步確定出來的牌照進行微定位,所謂微定位法, 就是對基本定位後的車牌圖像進
行局部分析, 以進一步確定字元范圍, 縮減車牌的左、右和上、下邊界, 這有利於後續的牌照字元處理。具體實現如下: (1) 由於車牌近似為一個矩形, 上下邊緣近似為一條直線, 通過簡單的灰度變化分析就可以再次定位車牌圖像的上下邊界, 這種情況適合於傾斜度較小的車牌; 對於傾斜程度較大的牌照來說, 在其橫向定位之前就應該利用相關的技術進行車牌的矯正(例如Hough 變換技術) 。(2)確定左邊界: 從左向右掃描 ,當遇到灰度值大於設定值60之後,停止掃描。上邊界也是利用這種方式得到。這樣就得到首字元的起始位置。再利用牌照的大小,寬高比一般都是固定的這些先驗知識,就可以確定出牌照的具體位置。本設計中採用的車牌,其寬高比為1:3。從而確定出汽車牌照的具體位置。最後提取出的汽車牌照如下圖:
圖10 二值化的汽車牌照
圖11 未進行二值化的汽車牌照
4.字元分割
在汽車牌照自動識別過程中,字元分割有承前啟後的作用。它在前期牌照定位的基礎
上進行字元的分割,然後再利用分割的結果進行字元識別。字元識別的演算法很多,常採用垂直面積投影法來實現。面積投影法的公式如下:
由於字元塊在豎直方向上的投影必然在字元間或字元內的間隙處取得局部最小值,並且這個位置應滿足車牌的字元書寫格式、字元尺寸和其他一些條件的限制。下圖是圖10在垂直方向上的面積投影圖。從圖形中我們很直觀的看出投影值中出現了8條間隙, 6個字母中間的間隙只有5個,還有三個間隙是字元間的。有字元的列其灰度值比較高,無字元的則相對比較低。依據這一點,再結合圖10的特徵,很容易得到每個字元的起始終止位置。第一個字元:1-10 第二個字元:10-18 第三個字元:28-41 第四個字元:42-48第五個字元:60-68 第六個字元:68-78
圖12 車牌垂直方向上的面積投影圖
將圖10按照上面的分析行數不變,列數分為六組,分別影射到六個不同的數組中。又因為在字元的模式識別中,其模板大小統一,因此得到的六個數組必須變換其大小,均統一成26×14的形式。分割出來的六個字元如下所示,分別命名為M1.jpg,M2.jpg,M3.jpg,M4.jpg,M5.jpg,M6jpg並用imwrite函數寫入圖像文件夾中,以便在後期處理中可以直接進行調用。
圖12 分割出來的六個字元圖像
一般分割出來的字元要進行進一步的處理,以滿足下一步字元識別的需要。因為圖像中含有許多燥聲,這在預處理的圖像中已經看出來了。因此必須進行濾波,然後歸一化,二值處理。使其最後得到的圖像與標准模板一樣。只含有兩種灰度值,黑與白。但是對於車牌的識別,並不需要這么多的處理就已經可以達到正確識別的目的。在此簡化了處理過程,未經濾波歸一化,直接進行後期處理。
5.字元識別
字元的識別目前用於車牌字元識別(OCR)中的演算法主要有基於模板匹配的OCR演算法以及基於人工神經網路的OCR演算法。基於模板匹配的OCR的基本過程是:首先對待識別字元進行二值化並將其尺寸大小縮放為字元資料庫中模板的大小,然後與所有的模板進行匹配,最後選最佳匹配作為結果。用人工神經網路進行字元識別主要有兩種方法:一種方法是先對待識別字元進行特徵提取,然後用所獲得的特徵來訓練神經網路分類器。識別效果與字元特徵的提取有關,而字元特徵提取往往比較耗時。因此,字元特徵的提取就成為研究的關鍵。另一種方法則充分利用神經網路的特點,直接把待處理圖像輸入網路,由網路自動實現特徵提取直至識別。模板匹配的主要特點是實現簡單,當字元較規整時對字元圖像的缺損、污跡干擾適應力強且識別率相當高。綜合模板匹配的這些優點我們將其用為車牌字元識別的主要方法。
字元識別的演算法如下:
因此在字元識別之前必須把模板庫設置好。汽車拍照的字元一般有七個,大部分車牌第一位是漢字,通常代表車輛所屬省份,或是軍種、警別等有特定含義的字元簡稱;緊接其後的為字母與數字。車牌字元識別與一般文字識別在於它的字元數有限,漢字共約50多個,大寫英文字母26個,數字10個。所以建立字元模板庫也極為方便。本次設計所識別的車牌只有字母與數字。為了實驗方便,結合本次設計所選汽車牌照的特點,只建立了3個字母與3個數字的模板。其他模板設計的方法與此相同。
5.1模板設計
分析字元分割得到的圖像以及其他車牌圖像中字元的特點,將模板大小定為26×14;
背景為黑色,代表灰度值 0,字元邊緣為白色。代表灰度值255。
設計過程如下:
1. 用畫圖工具先畫出P、F、M、1、0、3等幾個字元的圖像。並分別保存為m11.jpg,m12.jpg,
M1.jpg,m14.jpg,m15.jpg,m16.jpg。根據畫圖的經驗其大小應略大於26×14,以利於後面的處理。所得到的字元均為黑字白底。字體為方正姚體,大小16號。
所畫出的圖形如下:
2. 對1中獲得的粗略圖像用MATLAB進行處理。處理的方麵包括a.去除邊框,利用二維數組的映射關系實現,去掉開始行(列)與結束行(列)即所有外圍像素點b.提取模板的邊緣。其實現方法與前面的汽車邊緣提取的方法相同,也是利用梯度運算元。C.尺寸大小變換,切割為標準的26×14格式。
3. 整個處理過程結束後,再用imwrite 函數寫入圖像庫中,作為標准模板使用。
經過處理後的標准模板形式如下:
模板的設計過程,共進行了兩次。作為一幅jpg或者bmp形式的圖片,其中包含了許許
多多的像素點,各象素點的值也不一樣,到底如何來確定這些像素點的值呢?模板設置無疑成為一個難點。於是便投機取巧,將本身分割得到的字元保存起來直接作為模板使用。這種方法明顯不具有科學性。圖像識別中模板匹配法是將未知的東西與已知的東西來進行比較。因此模板庫中的字元應該是已知的,是預先設置好的是不可更改的,而不是在實驗過程中來得到。第二次便是用以上的畫圖工具來一步一步逼近實現模板設置。實驗結果顯示,這種方法簡單易行。
5.2識別過程
字元識別中模板匹配方法是實現離散輸入模式分類的有效途徑之一,其實質是度量輸入與樣本之間的某種相似性,取相似性最大者為輸入模式所屬類別,它根據字元的直觀形象抽取特徵,用相關匹配原理進行識別,即是將輸入字元與標准字元在一個分類器中進行匹配。車牌字元相關匹配演算法如下:
輸入字元用輸入函數X表示,標准模板用函數T表示,它們的大小均為26×14。將未知的模式逐個與模板匹配,求出其相似度。
其中,M=26,N=14。Ti 指第i個模板。X×Ti 是指矩陣對應元素相乘。如果把X與T都歸一化為」1」和」0」,則上式表示標准模板與待識圖像上對應點均為」1」的數目與標准模板上」1」點的數目之比。
如果 maxSi>λ 則判定X∈Ti,否則拒識,這里λ為拒識域值。本次實驗中直接取相關最大值為判定域值。
用MATLAB來實現字元的識別。其中有兩個很重要的函數可以直接調用:corr2 函數和max函數。
Corr2 函數直接用來計算圖像拒陣A與B的相關系數r。A與B的大小及數據類型必須相同,得到的結果r是雙精度標量。其調用方法如下:
r=corr2(A,B)
因此本設計中的字元識別只需調用此函數,即將分割出來的字元與設置好的模板一一進行相關運算,然後尋找出它們中的最大相關值。max函數就是用來選擇幾個數值的大小值。其調用方式如下:
[b,c]=max(a(:))
其中b返回的是比較後得到的最大值,c是最大值所對應的元素位置。
同時還自編了一個識別函數result.m用來返回識別結果。程序代碼如下:
function c=result(H);
M1=imread('M1.jpg');
M2=imread('M2.jpg');
M3=imread('M3.jpg');
M4=imread('M4.jpg');
M5=imread('M5.jpg');
M6=imread('M6.jpg');
M1=double(M1);
M2=double(M2);
M3=double(M3);
M4=double(M4);
M5=double(M5);
M6=double(M6);
d=zeros(6);
d(1)=corr2(H,M1);
d(2)=corr2(H,M2);
d(3)=corr2(H,M3);
d(4)=corr2(H,M4);
d(5)=corr2(H,M5);
d(6)=corr2(H,M6);
[D,e]=max(d(:));
switch e
case 1
c='P';
case 2
c='F';
case 3
c='M';
case 4
c=1;
case 5
c=0;
case 6
c=3;
otherwise
end
M1, M2, M3, M4, M5, M6為標准模板對應的二維數組。函數在開始運行時,從主函數里得到待識別的字元,此字元與模板進行相關運算,同時找出相關運算後的最大值及對應的函數位置。然後對最大位置進行判別,返回所對應的字元給主程序。並在MATLAB運行窗口顯示出來。
編寫result.m函數大大簡化了計算量,每個字元在識別的時候直接調用此函數,避免了重新編程浪費的時間及空間。這是本次車牌識別中的一大亮點
運行結果,MATLAB的運行窗口顯示出的車牌號碼為:P,F,M,1,0,3。完成了准確識別車牌的目的。
6.總結:
6.1 設計過程說明
在汽車車牌識別的整個過程中,查找了很多資料,綜合了各方面的信息。車牌實現的每一步都有許多的方法,各種方法都有其優劣,但是對於具體的圖像處理,並不是每一種理論在實踐中都可以實現,即使實現了也很難說哪一種方法最合適,還得在具體的實驗中比較選擇。以車牌預處理為例,經過濾波和邊界增強處理後提取出的車牌效果明顯沒有未處理的效果理想。第二點在程序調試的過程中要耐心的檢查每一個錯誤。測試結果表明,本設計有以下幾條優點:
1. 充分利用MATLAB中已有的函數庫。整個程序設計簡單易行
2. 識別准確率高
6.2設計工具說明:
車牌識別程序設計能夠得以順利完成。在很大程度上得利於MATLAB這套軟體, MATLAB功能強大,它包括數值計算和符號計算,並且計算結果和編程可視化。這為編程調試創造了一個便利的環境。作為圖像處理最適用的工具之一,其突出的特點是它包含一個圖像處理工具包,這個工具包由一系列支持圖像處理操作的函數組成。所支持的圖像處理操作有:圖像的幾何操作、鄰域和區域操作、圖像變換、圖像恢復與增強、線性濾波和濾波器設計、變換(DCT 變換等) 、圖像分析和統計、二值圖像操作等。在圖像的顯示方面,MATLAB 提供了圖像文件讀入函數imread ( ) ,用來讀取如: bmp 、tif 、jpg、pcx、tiff 、jpeg、hdf 、xwd 等格式圖像文件;圖像寫出函數imwrite () ,還有圖像顯示函數image ( ) 、imshow() 等等。這些,都使編程效率大為提高。
7.討論
本設計已成功達到了車牌識別的目的,而且准確率也很高。但是在整個設計過程中,發現了幾個值得參考的演算法,也試圖用這種演算法來實現車牌識別,但種種原因,而未採用。現在次簡單討論一下:
6.1.含8個方向的模板的邊緣提取演算法
本設計在邊緣提取之時,使用的是梯度運算元。這種演算法的優點是簡單易行,但是因為它不包含邊緣的方向,因此對雜訊不夠敏感。目前,在圖像處理方面使用得最多的是一種可抗雜訊的Sobel演算法。它定義了8個方向的模板。
通常物體的邊緣是連續且光滑的,而雜訊是隨機的。 在任一邊緣點附近沿邊緣的走向總能找到另一邊緣點,且這兩邊緣點之間的灰度差及方向差都不可能很大。但是雜訊則不同,一般情況下,沿任一雜訊點的方向(通過上述模板運算得到)不太可能找到與其灰度差及方向差都很小的雜訊點。正是利用這一基本思想,本演算法能將實際的邊緣點與雜訊點區分開來。
加權領域平均演算法來進行濾波處理
6.2 加權領域平均演算法來進行濾波處理
由實驗我們可以看出,一般的濾波器在對圖像進行雜訊濾除的同時對圖像中的細節部分有不同程度的破壞,都不能達到理想的效果。但是採用加權的鄰域平均演算法對圖像進行雜訊濾除, 不僅能夠有效地平滑雜訊, 還能夠銳化模糊圖像的邊緣。 加權的鄰域平均演算法的基本思想是: 在一個鄰域內, 除了可以利用灰度均值外, 灰度的上偏差和下偏差也能夠提供某些局部信息。演算法的計算公式描述如下, 用f (x ,y ) 表示原始圖像, g (x , y ) 為平滑後點(x , y ) 的灰度值,V x , y 表示以點(x , y ) 為中心的鄰域, 該鄰域包含N 個象素,m (x , y ) 表示鄰域V x , y 內的灰度均值。NI表示鄰域內大於平均值的像素個數,Ng表示小於平均值的像素個數,而N0表示等於平均值的像素個數。則修正的鄰域平均法由下式給出:
m - Aı m l; N l > max{N g ,N 0}
g(x,y)= m + Aı m g; N g > max{N l ,N 0} (1)
m ; else
(1)式(1) 中, A為修正系數, 取值范圍為0~ 1, 其大小反映V x , y 中的邊緣狀況。 以上是我認為在圖像處理中比較有價值的兩點,有興趣的可以上網查閱相關的資料。
【參考文獻】
[1] 霍宏濤.數字圖像處理.機械工業出版社,2003.5
[2] 陳桂明、張明照、戚紅雨.應用MATLAB語言處理數字信號與數字圖像。科學出版社,2000
[3] 郎銳.數字圖象處理學Visual C++實現.北京希望電子出版社,2002.12
[4] 劉露、強.汽車牌照自動識別技術初探,中國公路網,2003-09-26
[5] 周妮娜、王敏、黃心漢、呂雪峰、萬國紅.車牌字元識別的預處理演算法.計算機工程與應用,2003(15)
[6] 佘新平、朱 立.一種具有抗雜訊干擾的圖像邊緣提取演算法的研究,2001-6-4
[7] 苑瑋琦、傘曉鍾. 一種汽車牌照多層次分割定位方法 ,2004 Vol.9 No.4 P.239-243
[8] 許志影、李晉平.MATLAB極其在圖像處理中的應用.計算機與現代化,2004(4)
[9] 董慧穎、曹仁帥.汽車牌照自動識別系統中字元分割演算法研究.沈陽工業學院學報2003(12)Vol.22 No.4
[10] 崔 江、王友仁.車牌自動識別方法中的關鍵技術研究.計算機測量與控制,2003.11(4)
[11] 王年、李婕、任彬、汪炳權.多層次汽車車牌照定位分割方法. 安徽大學學報,1999(6)Vol.23.No.2
[12] 馬俊莉、莫玉龍、王明祥.一種基於改進模板匹配的車牌字元識別方法.小型微型計算機系統Vol.23.No.2
③ MATLAB數字圖像處理模板匹配問題
??s1=sum(sum(a.*p))-441*c*d;
用.*是兩個數組對應元素相乘,必須大小相同。a.*p大小不同,你的a應該不是21*21吧?