【正文】
end end s=zeros(1,256)。t=zeros(1,256)。%分別建立1*256的零矩陣賦給s,t for i=1:256 s(i)=H(i)/(m*n)。 for j=1:i t(i)=t(i)+s(j)。 end end t1=round(t*(2561)+)。 H1=zeros(1,256)。 for i=1:256 H1(t1(i))=H1(t1(i))+s(i)。 end axes()。 %將結果顯示在axes4中 bar(H1)。title(39。均衡化后直方圖39。)。 I2=t1(I+1)1。 axes()。 imshow(uint8(I2))。title(39。均衡化后圖像39。)。%計算原圖像與目標圖像累計直方圖數(shù)值的差的絕對值 double ScMin=zeros(256,256)。 for Y=1:L for X=1:L ScMin(X,Y)=abs(Rk(Y)39。Rk2(X)39。)。 end end%建立映射 HisM=zeros(L:1)。 for P=1:L min = 0。 minV=ScMin(1,P)。 for Q=1:L if(minVScMin(Q,P)) minV=ScMin(Q,P)。 min = Q。 end end HisM(P)= min。 end%將原圖像的每個像素灰度轉換為直方圖均衡化后的灰度 for x = 1:row for y = 1:col Num = double( I(x,y))+1。 if Num==i New(x,y)=HisM(i)。 end end end運行結果如圖425所示:圖425(2)規(guī)定化處理程序設計: case 2 f=rgb2gray(T)。 I=f。 J=I。 New=I。 L=256。 %灰度級 Ps=zeros(L,1)。 % 存儲原圖像直方圖概率數(shù)據(jù) nk=zeros(L,1)。 % 存儲原圖像直方圖數(shù)據(jù) nk2=zeros(L,1)。 % 存儲直方圖規(guī)定化后的圖像的直方圖 Rk=zeros(L,1)。 % 存儲原圖像累積直方圖數(shù)據(jù) Ps2=zeros(L,1)。 Rk2=zeros(L,1)。 [row,col]=size(I)。 % 計算圖像數(shù)據(jù)矩陣的行列數(shù) n=row*col。 %總像素個數(shù) for i = 1:row for j = 1:col num = double( I(i,j))+1。 %獲取像素灰度級 nk(num) = nk(num)+1。 %統(tǒng)計nk end end %計算直方圖概率估計 for i=1:L Ps(i)=nk(i)/n。 %計算累積直方圖 if i==1 Rk(i)=Ps(i)。 else 1=256 Rk(i)=Rk(i1)+Ps(i)。 end %規(guī)定化直方圖 Ps2Temp=[,zeros(1,9),zeros(1,9),zeros(1,9),zeros(1, 9),zeros(1,9),zeros(1,9),zeros(1,39),zeros(1,19),zeros(1,19),zeros(1,19),ones(1,80).*,ones(1,16).*]。 Ps2=Ps2Temp39。 %計算規(guī)定化累積直方圖 for c=1:L if c==1 Rk2(c)=Ps2(c)。 else Rk2(c)=Rk2(c1)+Ps2(c)。 end end %計算原圖像與目標圖像累計直方圖數(shù)值的差的絕對值 double ScMin=zeros(256,256)。 for Y=1:L for X=1:L ScMin(X,Y)=abs(Rk(Y)39。Rk2(X)39。)。 end end %建立映射 HisM=zeros(L:1)。 for P=1:L min = 0。 minV=ScMin(1,P)。 for Q=1:L if(minVScMin(Q,P)) minV=ScMin(Q,P)。 min = Q。 end end HisM(P)= min。 %將原圖像的每個像素灰度轉換為直方圖均衡化后的灰度 for x = 1:row for y = 1:col Num = double( I(x,y))+1。 if Num==i New(x,y)=HisM(i)。 end end end %計算直方圖規(guī)定化后的直方圖 for p = 1:row for q = 1:col NN = double( New(p,q))+1。 nk2(NN) = nk2(NN)+1。 end end axes()。 imshow(New),title(39。規(guī)定化后圖像39。)。 axes()。 bar(Ps2),title(39。規(guī)定化后直方圖39。)。end程序運行結果如圖426所示:圖426對比直方圖均衡化和規(guī)定化的方法,可以得出以下結論:均衡化之后的結果是擴展了像元取值的動態(tài)范圍,從而達到增強圖像整體對比度的效果。其優(yōu)點是能自動增強整個圖像的對比度,但它的具體增強效果不易控制,處理的結果總是得到全局的均衡化的直方圖。實際工作中,有時需要變換直方圖使之成為某個特定的形狀,從而有選擇地增強某個灰度值范圍內的對比度,這時可采用比較靈活的直方圖規(guī)定化方法。5 系統(tǒng)調試與故障分析 系統(tǒng)調試結果將各模塊的程序加入到設計的界面系統(tǒng)中,運行結果如下圖51所示:圖51結論:程序運行基本正常,各功能都能實現(xiàn),從總的界面系統(tǒng)中來看,各模塊都建立了連接,可以相互調用原圖像,只是有時某一個模塊運行完之后,再調用下一個模塊,需要一定的時間處理。 故障分析圖像處理軟件測試基本成功,課題所要求的功能均能較好實現(xiàn),也額外添加了一些功能,如常用操作處理,偽彩色處理,規(guī)定化處理,小波變換等。但一些功能只支持灰度圖像的處理,例如進行中值濾波時,需要將真彩色圖像先轉換為灰色圖像。原因是彩色圖像屬于RGB三維圖像,而進行中值濾波前需要將三維圖像轉化為二維灰色圖像,建立一個二維向量矩陣,再進行濾波處理,這是值得注意的地方。6 實驗心得體會經過為期一周的matlab軟件課程設計實踐,使我對matlab的使用有了進一步的了解和熟悉,尤其是對GUI界面的設計,之前只是把程序寫進里面命令窗口中直接運行,現(xiàn)在需要設計界面,加一些控件來操作,把功能函數(shù)代碼寫入對應的funtion下,再進行調試。這大大提高了我的應用軟件設計的能力,對優(yōu)化界面設計也有了一定的進步。 當然,在實踐的過程中我也遇到了不少問題。比如說,模塊功能的代碼怎樣把它整合到一塊,有些代碼放到一起就不能工作了,但是分開來就可以運行,實現(xiàn)它的功能。對句柄使用以及一些函數(shù)使用的不恰當。 為此,在實踐中,我利用課余時間,翻看了以前的matlab教材,專門借閱了利用matlab進行圖像處理的相關教程,通過索引網(wǎng)絡上的相關資料,為課設做了較為充分的準備。在參考了相關材料及源程序,我對自己要做的課設內容有了進一步的了解,并對matlab的函數(shù)語句的使用有了更深的體會。 隨著設計的進行,對matlab的的熟悉度逐步加深。在基本功不斷扎實的基礎上,我開始進行一些擴張功能的嘗試,比如還原操作、實現(xiàn)撤銷多次前操作等 。其中有些實驗任務較為成功的完成,但在某些個功能上出現(xiàn)了些問題,由于對matlab中數(shù)組結構體與循環(huán)套用使用的不當,到實踐結束之際也未實現(xiàn)所犯的錯誤,只能退而求次,實現(xiàn)執(zhí)行撤銷功能(恢復到上次操作)。總體來說,對本次的課程設計還是滿意的。在學習的過程中,使我鞏固了matlab的基礎理論知識,還提高了我對matlab的實際操作運用能力,使得理論與實踐相結合,為進一步學習專業(yè)知識打下堅實的基礎。同時,在實踐的過程中,也讓我感覺到“一分耕耘,一分收獲”,這種感覺,著實不錯。第一次拿給老師檢查時,雖然能基本實現(xiàn)實驗所要求的功能,但是對一些功能的實現(xiàn)不夠全面,界面設計也沒有整合到一塊。經過老師細心地指導,我利用了一天加一個晚上的時間,終于在檢查的最后一天基本完成改進。期間,在整合函數(shù)時,調試的比較久,代碼語法本身沒有錯誤,就是出不來結果。經過不斷地調試,找出了一些問題,對全局變量和局部變量的設置出現(xiàn)了問題,經過修改代碼,最終調試出結果。參考文獻[1] 劉衛(wèi)國.MATLAB實用教程.北京:高等教育出版社,2007.[2]飛思科技產品研發(fā)中心..北京:電子工業(yè)出版社,2003.[3]布挺,董紅政.MATLAB在數(shù)字圖像處理教學中的應用.哈爾濱職業(yè)技術學院學報,2010,(2):87~88.[4]周偉.基于MATLAB的數(shù)字圖像處理技術概述.信息與電腦,2005,(5):28.[5]鄭繼剛.MATLAB在數(shù)字圖像處理中的應用.保山師專學報,2009,05(1):18~28.[6]王付軍.基于數(shù)字圖像處理的大米質量檢測.安徽農業(yè)科學,2010,38(22):11998~11999 .[7]晏暉,姜鵬,陳貝.基于MATLAB 工具箱的數(shù)字圖像處理技術.微計算機信息,2010,26(9):214~216.[8]關雪梅.MATLAB處理數(shù)字圖像的方法研究.硅谷,2009,20(2):58~59. 35