細化演算法matlab
㈠ 基於MATLAB的畢業設計有哪些
基於MATLAB的畢業設計有:
1、基於MATLAB的視圖技術分析。
2、二值圖像細化演算法研究與實現。
3、基於MATLAB下的信號分析與處理。
4、基於matlab的偽彩色處理與研究。
5、matlab進行小波分析。
matlab將數值分析、矩陣計算、科學數據可視化以及非線性動態系統的建模和模擬等諸多強大功能集成在一個易於使用的視窗環境中,為科學研究、工程設計以及必須進行有效數值計算的眾多科學領域提供了一種全面的解決方案。
(1)細化演算法matlab擴展閱讀
MATLAB特點
1、高效的數值計算及符號計算功能,能使用戶從繁雜的數學運算分析中解脫出來;
2、具有完備的圖形處理功能,實現計算結果和編程的可視化;
3、友好的用戶界面及接近數學表達式的自然化語言,使學者易於學習和掌握;
4、功能豐富的應用工具箱(如信號處理工具箱、通信工具箱等) ,為用戶提供了大量方便實用的處理工具。
㈡ 什麼樣的圖像可以進行細化
二值的當然不行。
快速zhang並行演算法,很好的一種常用方法
具體細化方法:
滿足下列四個條件的點可以刪除
p3 p2 p9
p4 p1 p8
p5 p6 p7
細化刪除條件為: (1)、2 < Nz(p1) <= 6 Nz為八鄰域中黑點的數目
(2)、Zo(p1)=1,指中心為黑點
(3)、p2*p4*p8=0 or Zo(p1)!=1 避免黑線被打斷
(4)、p2*p4*p6=0 or Zo(p4)!=1
細化演算法的分類:
依據是否使用迭代運算可以分為兩類:第一類是非迭代演算法,一次即產生骨架,如基於距離變換的方法。遊程長度編碼細化等。第二類是迭代演算法,即重復刪除圖像邊緣滿足一定條件的像素,最終得到單像素寬頻骨架。迭代方法依據其檢查像素的方法又可以再分成串列演算法和並行演算法,在串列演算法中,是否刪除像素在每次迭代的執行中是固定順序的,它不僅取決於前次迭代的結果,也取決於本次迭代中已處理過像素點分布情況,而在並行演算法中,像素點刪除與否與像素值圖像中的順序無關,僅取決於前次迭代的結果。在經典細化演算法發展的同時,起源於圖像集合運算的形態學細化演算法也得到了快速的發展。
Hilditch、Pavlidis、Rosenfeld細化演算法:這類演算法則是在程序中直接運算,根據運算結果來判定是否可以刪除點的演算法,差別在於不同演算法的判定條件不同。
其中Hilditch演算法使用於二值圖像,比較普通,是一般的演算法; Pavlidis演算法通過並行和串列混合處理來實現,用位運算進行特定模式的匹配,所得的骨架是8連接的,使用於0-1二值圖像 ;Rosenfeld演算法是一種並行細化演算法,所得的骨架形態是8-連接的,使用於0-1二值圖像 。 後兩種演算法的效果要更好一些,但是處理某些圖像時效果一般,第一種演算法使用性強些。
索引表細化演算法:經過預處理後得到待細化的圖像是0、1二值圖像。像素值為1的是需要細化的部分,像素值為0的是背景區域。基於索引表的演算法就是依據一定的判斷依據,所做出的一張表,然後根據魔鬼要細化的點的八個鄰域的情況查詢,若表中元素是1,若表中元素是1,則刪除該點(改為背景),若是0則保留。因為一個像素的8個鄰域共有256中可能情況,因此,索引表的大小一般為256。
㈢ MATLAB的圖像細化演算法求助。applylutc.c
%%%%%%%%%%%%%%%模糊聚類%%%%%%%%%%%%%%%%%%%%%%%
clear;
load F:\從0開始\數據\data.txt;
INPUTDATA=data;
%--------原始數據標准化-------%
disp('請選擇原始數據標准化方式: ');
disp('<1-總和標准化|2-標准差標准化|3-極大值標准化|4-極差標准化>');
wayforstand=input('請輸入: ');
switch wayforstand
case 1,
DATAFORCLUS=standard_use_sum(INPUTDATA);
case 2,
DATAFORCLUS=standard_use_std(INPUTDATA);
case 3,
DATAFORCLUS=standard_use_max(INPUTDATA);
case 4,
DATAFORCLUS=standard_use_jc(INPUTDATA);
otherwise
error('您的輸入不符合要求->執行結束!!!');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%基於模糊等價關系的模糊聚類%%%%%%%%%%%%%%%%%%%%%%
%----------構造相似關系-----------%
numrows=size(DATAFORCLUS,1);
numcols=size(DATAFORCLUS,2);
disp('請選擇對象之間相似性統計量的方式: ');
disp('<1-相關系數法|2-夾角餘弦法|3-指數相似系數法|4-絕對值指數法|5-算術平均最小法|6-最大最小值法|7-絕對值差數法|8-數量積法>');
wayforr_ij=input('請輸入: ');
switch wayforr_ij
case 1, %-----------------------------------相關系數法
for i=1:numrows,
for j=1:numrows,
meani=mean(DATAFORCLUS(i,:));meanj=mean(DATAFORCLUS(j,:));
simiR(i,j)=sum((DATAFORCLUS(i,:)-meani).*(DATAFORCLUS(j,:)-meanj))/...
(sqrt(sum((DATAFORCLUS(i,:)-meani).^2))*sqrt(sum((DATAFORCLUS(j,:)-meanj).^2)));
end
end
case 2, %-----------------------------------夾角餘弦法
for i=1:numrows,
for j=1:numrows,
simiR(i,j)=sum(DATAFORCLUS(i,:).*DATAFORCLUS(j,:))/...
(sqrt(sum(DATAFORCLUS(i,:).*DATAFORCLUS(i,:)))*sqrt(sum(DATAFORCLUS(j,:).*DATAFORCLUS(j,:))));
end
end
case 3, %-----------------------------------指數相似系數法
case 4, %-----------------------------------絕對值指數法
case 5, %-----------------------------------算術平均最小法
case 6, %-----------------------------------最大最小值法
case 7, %-----------------------------------絕對值差數法
case 8, %-----------------------------------數量積法
otherwise
error('您的輸入不符合要求->執行結束!!!');
end
%-------改造成等價關系----------%
sign=0;
numselfmul=1;
simiRk=eye(numrows);
equi_tem=simiR;
while sign==0,
for i=1:numrows,
for j=1:numrows,
for c=1:numrows,
rij_temp(c)=min([equi_tem(i,c) equi_tem(c,j)]);
end
simiRk(i,j)=max(rij_temp);
end
end
%--------------%
if sum(sum(simiRk-equi_tem,1))~=0,
numselfmul=numselfmul+1;
equi_tem=simiRk;
else
sign=1;
break
end
%--------------%
end
if sign==1,
disp('從相似矩陣到等價矩陣改造成功!!!');
else
disp('從相似矩陣到等價矩陣改造失敗!!!');
end
equiR=simiRk;
numclass=input('請輸入聚類數: ');
%---------在不同的截集水平進行聚類--------------%
clasc=0;
comp_vec(1,1:numrows)=0;
index=0;
clasc=0;
tip=0;
alpha=0;
temnumeachclass=0;
while (tip==0),
%alpha=input('請輸入進行分類的截集水平λ: ');
%alpha=0.5; %調試
if (alpha<0 || alpha>1),
error('您輸入的截集水平λ不符合分類要求->執行結束!!!');
end
comp_arr=ones(numrows)*alpha;
result_arr=(equiR>=comp_arr); %--------------------result_arr判斷矩陣
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%撿菜演算法
for i=1:numrows,
if sum(comp_vec(1,:)==result_arr(i,:))<numrows, %-----------說明沒有歸類
temnumeachclass=0;
%numeachclass(clasc)=index-temnumeachclass;
temsave=result_arr(i,:);
for j=1:numrows,
if sum(result_arr(j,:)==temsave)==numrows,
index=index+1;
class(index)=j;
result_arr(j,:)=0; %--------------------說明已經被歸類
temnumeachclass=temnumeachclass+1;
end
end
clasc=clasc+1;
nec(clasc)=temnumeachclass;
else
continue;
end
end
if clasc>=numclass,
tip=1; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%當模糊分類的數目小於等於所給出的類數時退出循環體
disp('成功!!!');
else
clear class;
clear numeachclass;
clear nec;
clasc=0;
index=0;
temnumeachclass=0;
alpha=alpha+0.01;
end
end
%----取聚類結果----%
num=0;
n=0;
for i=1:clasc,
for j=1:nec(i),
num=num+1;
n=n+1;
CLUS(n,:)=INPUTDATA(class(num),:);
end
n=n+1;
CLUS(n,:)=inf;
end
%format single(CLUS)
lenexport=size(CLUS,1);
for i=1:lenexport,
RESULT(i,:)=sprintf('%15.2f',CLUS(i,:));
end
RESULT
㈣ Matlab中的細化函數是怎樣的
前幾天剛做的指紋識別演算法,細化部分,以指紋識別為例:getminu.m
%%%%%%%%%%%%%%%%%%%%%%%%%提取指紋細節點演算法,P為細化後圖像
function minu=getminu(P,smooth)
[height,width]=size(P);
minu=P;
cn_coding=zeros(height,width);%連接數編碼初始化
for i=2:height-1
for j=2:width-1
if P(i,j)==1
cn_coding(i,j)=0.5*(abs(P(i,j+1)-P(i-1,j+1))+abs(P(i-1,j+1)-P(i-1,j))+abs(P(i-1,j)-P(i-1,j-1))+abs(P(i-1,j-1)-P(i,j-1))+abs(P(i,j-1)-P(i+1,j-1))+abs(P(i+1,j-1)-P(i+1,j))+abs(P(i+1,j)-P(i+1,j+1))+abs(P(i+1,j+1)-P(i,j+1)));
if cn_coding(i,j)==1%端點
minu(i-1,j)=1;
minu(i+1,j)=1;
minu(i,j-1)=1;
minu(i,j+1)=1;
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉點
minu(i-1,j-1)=1;
minu(i-1,j+1)=1;
minu(i+1,j-1)=1;
minu(i+1,j+1)=1;
end
end
end
end
figure,imshow(1-minu);
%%%%消除偽細節點%%%%%%%%%%%%%
detail=P;%%初始化
mark=smooth;
for i=1:height
for j=1:width
if smooth(i,j)==8
mark(i,j)=0;
else mark(i,j)=1;
end
end
end
%figure,imshow(mark)%背景與前景標志
for i=2:height-1
for j=2:width-1
%%%%注意這塊的邏輯關系,括弧的作用很關鍵的
if (cn_coding(i,j)==1||cn_coding(i,j)==3)&&mark(i,j)==1&&mark(i,j+5)*mark(i-5,j)*mark(i,j-5)*mark(i+5,j)==0
cn_coding(i,j)=0;%置為偽細節點
end
if cn_coding(i,j)==1%端點
detail(i-1,j)=1;
detail(i+1,j)=1;
detail(i,j-1)=1;
detail(i,j+1)=1;
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
elseif cn_coding(i,j)==3%交叉點
detail(i-1,j-1)=1;
detail(i-1,j+1)=1;
detail(i+1,j-1)=1;
detail(i+1,j+1)=1;
end
end
end
figure,imshow(1-detail);
㈤ 求數字信號處理有關車牌識別的MATLAB代碼
雖然我未必能幫助你解決這個問題,但是還是想說幾句來幫助你。
(1)車牌照識別是屬於圖像處理裡面的內容,MATLAB裡面有圖像處理工具箱可以幫助你,但是不能幫你徹底解決問題。
(2)能否無錯識別肯定和圖片的清晰度有關,沒有任何一個軟體或者代碼可以保證完全識別出來,當然,在僅僅考慮圖片清晰的前提下(即肉眼可以很輕松識別),還是可以保證比較高的識別率。
(3)這個問題涉及到圖片的方位判斷,邊界提取,字元匹配 等演算法,本質上不是一個代碼問題,而是一個演算法問題。也不局限於MATLAB來解決,GIS,C++,等軟體都可以用來做。但是演算法才是關鍵。
(4)給你一些參考文獻,希望能對你有啟發。
[1] 劉峽壁,賈雲得. 一種字元圖像線段提取及細化演算法[J]. 中國圖象圖形學報. 2005(01): 48-53.
[2] 李文舉,梁德群,崔連延,等. 一種新的面向字元分割的車牌圖像預處理方法[J]. 計算機應用研究. 2004(07): 258-260.
[3] 曹建海,路長厚. 基於小波變換和DCT的字元圖像特徵抽取新方法[J]. 光電子•激光. 2004(04): 477-482.
[4] 付仲良,陳江平,黃書強,等. 貨車圖像車牌區快速定位及字元切割演算法[J]. 計算機工程與設計. 2003(01): 77-79.
[5] 王建平,盛軍,朱程輝. 基於小波分析的視頻圖像字元特徵提取方法研究[J]. 微電子學與計算機. 2002(05): 51-53.
[6] 吳大勇,魏平,侯朝楨,等. 一種車牌圖像中的字元快速分割與識別方法[J]. 計算機工程與應用. 2002(03): 232-233.
[7] 陳鍛生,謝志鵬,劉政凱. 復雜背景下彩色圖像車牌提取與字元分割技術[J]. 小型微型計算機系統. 2002(09): 1144-1148.
[8] 顧暉,程晨,梁惺彥. 利用模糊邊界提取演算法實現醫學圖像邊界提取[J]. 現代計算機(專業版). 2008(01): 38-40.
[9] 羅詩途,王艷玲,羅飛路,等. 基於分形幾何邊界提取的圖像跟蹤方法[J]. 應用光學. 2006(01): 19-22.
[10] 王少霞,顏鋼峰. 基於張弛法的圖像邊界提取演算法[J]. 江南大學學報. 2005(05): 53-55.
[11] 王艷玲,張玘,羅詩途. 基於分形幾何邊界提取的圖像跟蹤方法[J]. 光電子技術與信息. 2005(06): 49-52.
[12] 付青青,馮桂. 雜訊圖像中邊界提取方法的研究[J]. 電腦與信息技術. 2003(01): 22-25.
[13] 王暉,張基宏. 多尺度圖像邊界提取的小波演算法與最優准則[J]. 深圳大學學報. 1997(Z1): 21-25.
㈥ MATLAB--數字圖像處理 頻域圖像分析
頻域圖像分析
1.熟悉MATLAB軟體的使用。
2.掌握頻域圖像分析的原理及數學運算。
1.自選一幅圖像,並對其分別添加一定強度的周期雜訊和高斯雜訊,然後分別採用高斯模板、中值濾波的時域方法以及傅里葉變換和小波變換的頻率濾波方法對該含噪圖像進行去噪處理,並基於PSNR值和視覺效果這兩個指標來比較這四種濾波方法對兩種不同雜訊的去噪能力。
2.編寫一個程序,要求實現下列演算法:首先將閣像分割為8x8的子圖像,對每個予圖像進行FFT.對每個了圖像中的64個系數。按照每個系數的方差來排序後,捨去小的變換系數,只保留16個系數,實現4: I的圖像壓縮。
3.給定一幅行和列都為2的整數次幕圖像,用Haar小波基函數對其進行二維小波變換,試著將最低尺度近似分量置零再反變換,結果是什麼?如果把垂直方向的細節分量置零,反變換後結果又是什麼呢?試解釋一下原因。
4.基於小波變換對圖像進行不同壓縮比的壓縮。在同壓縮比情況下,對於基於小波變換和基於傅里葉變換的壓縮結果,比較=二者保留原圖像能里百分比情況。
Win10 64位電腦
MATLAB R2017a
1.傅里葉變換
從純粹的數學意義上看,傅里葉變換是將一個函數轉換為一系列周期函數來處理的。從物理效果看,傅里葉變換是將圖像從空間域轉換到頻率域,其逆變換是將圖像從頻率域轉換到空間域。換句話說,傅里葉變換的物理意義是將圖像的灰度分布函數變換為圖像的頻率分布函數。
傅里葉逆變換是將圖像的頻率分布函數變換為灰度分布函數傅里葉變換以前,圖像(未壓縮的點陣圖)是由對在連續空間(現實空間)上的采樣得到一系列點的集合,通常用一個二維矩陣表示空間上各點,記為z=f(x,y)。又因空間是三維的,圖像是二維的,因此空間中物體在另一個維度上的關系就必須由梯度來表示,這樣我們才能通過觀察圖像得知物體在三維空間中的對應關系。
2.小波變換
小波變換是時間(空間)頻率的局部化分析,它通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節帶雜訊信號經過預處理,然後利用小波變換把信號分解到各尺度中,在每一尺度下把屬於雜訊的小波系數去掉,保留並增強屬於信號的小波系數,最後再經過小波逆變換回復檢測信號。
小波變換在去除雜訊時可提取並保存對視覺起主要作用的邊緣信息,而傳統的基於傅里葉變換去除雜訊的方法在去除雜訊和邊沿保持上存在著矛盾,因為傅里葉變換方法在時域不能局部化,難以檢測到局域突變信號,在去除雜訊的同時,也損失了圖像邊沿信息。由此可知,與傅里葉變換去除雜訊的方法相比較,小波變換法去除雜訊具有明顯的性能優勢。
3.PSNR演算法
peak的中文意思是頂點。而ratio的意思是比率或比列的。整個意思就是到達噪音比率的頂點信號,psnr一般是用於最大值信號和背景噪音之間的一個工程項目。通常在經過影像壓縮之後,輸出的影像都會在某種程度與原始影像不同。為了衡量經過處理後的影像品質,我們通常會參考PSNR值來衡量某個處理程序能否令人滿意。它是原圖像與被處理圖像之間的均方誤差相對於(2 n-1) 2的對數值(信號最大值的平方,n是每個采樣值的比特數),它的單位是dB。
SNRP演算法
haar基函數進行小波變換
七、實驗結果與分析
圖 1原圖
1.加入周期雜訊、高斯雜訊
2.對添加了高斯雜訊和周期雜訊的圖像進行高斯濾波
PSNR值
1.對高斯雜訊進行高斯濾波後 23.0287
2.對周期雜訊進行高斯濾波後 23.4837
2.中值濾波
PSNR值:
1.對高斯雜訊進行中值濾波 23.9931
2.對周期雜訊進行中值濾波 24.3134
3.傅里葉變換濾波
PSNR值:
1.對添加了高斯雜訊的圖像進行傅里葉變換濾波 20.4922
2.對添加了周期雜訊的圖像進行傅里葉變換濾波 18.9736
4.小波變換濾波
PSNR值:
1.對添加了高斯雜訊的圖像進行小波變換濾波 23.4712
2.對添加了周期雜訊的圖像進行小波變換濾波 24.4525
分析:
對於高斯雜訊,高斯濾波和傅里葉變換濾波聲的除噪效果較好,中值濾波效果較差,小波變換濾波的處理效果也比較好
對於周期雜訊,中值濾波和高斯濾波效果不是很好,傅里葉變換變換濾波對雜訊的去處效果比較好,對於原圖像損壞不大,小波變換對原圖的損壞較大,但是圖片可以看出雜訊也去除的比較好。
5.圖像壓縮(4:1壓縮) 原圖-左 壓縮後-右
分析:
圖像壓縮演算法就是先將一副圖像分成很多小塊,然後分別對這些小塊進行變換,這里採用的是傅里葉變換,然後過濾掉冗餘的像素點,然後再利用反變換得到壓縮後的圖像即可。
小波變換
1.定義
小波變換是時間(空間)頻率的局部化分析,它通過伸縮平移運算對信號(函數)逐步進行多尺度細化,最終達到高頻處時間細分,低頻處頻率細分,能自動適應時頻信號分析的要求,從而可聚焦到信號的任意細節帶雜訊信號經過預處理,然後利用小波變換把信號分解到各尺度中,在每一尺度下把屬於雜訊的小波系數去掉,保留並增強屬於信號的小波系數,最後再經過小波逆變換回復檢測信號。
2.優點
小波變換在去除雜訊時可提取並保存對視覺起主要作用的邊緣信息,而傳統的基於傅里葉變換去除雜訊的方法在去除雜訊和邊沿保持上存在著矛盾,因為傅里葉變換方法在時域不能局部化,難以檢測到局域突變信號,在去除雜訊的同時,也損失了圖像邊沿信息。由此可知,與傅里葉變換去除雜訊的方法相比較,小波變換法去除雜訊具有明顯的性能優勢。
Haar基函數進行小波變換
圖 2原圖
圖 3 haar變換
圖 4 haar反變換後
圖 5 最低分量近似置零
圖 6 垂直分量置零
小波變換進行圖像壓縮與傅里葉變換壓縮對比
1.壓縮比 1:2(左-小波壓縮 右-傅里葉壓縮)
2.壓縮比 1:4(左-小波壓縮 右-傅里葉壓縮)
通過這次實驗,學到了很多。特別是在傅里葉變換和小波變換等方面,開始的時候連傅里葉變換的基礎基礎也不懂,後來在csdn上看了一篇講解傅里葉變換的文章,豁然開朗,傅里葉變換居然可以將一個時域信號轉化到頻域,而且自己還對與i有了更加深刻的理解。雖然傅里葉變換可以把信號從時域轉換到頻域,但是頻域與時域的對應關系卻無法一一對應,所以誕生了小波變換。小波變換的特別之處就是可以把一個時域上的信息轉換為時域-頻域一一對應,這對應特殊信號的提取是有很好的效果,在一定程度上比傅里葉變換更厲害。但是在傅里葉、小波等基礎概念知識方面,自己還是涉獵的比較少,原理的論證公式太復雜了。