如何用matlab實現用小波變換對影象的紋理特徵進行抽取

2021-04-19 22:28:20 字數 3175 閱讀 6010

1樓:匿名使用者

舉個例子,希望有所幫助。clc; clear all; close all;

while j0 & coef3(i,j+1)<0) | (coef3(i,j)<0 & coef3(i,j+1)>0 )%找到左位置j

for k=j+1:column-1

if coef3(i,k)*coef3(i,j)>=0%找到右位置k

for m=j:k

if abs(coef3(i,m))>max

max=abs(coef3(i,m));

max_loc=m;

endend

if max>max_num

form(i,max_loc)=1;

endj=k;

max=0;

break;

endend%for k

if k==column-1

j=column-1;

endelse

j=j+1;

end%if

end%while

end%對列作小波變換

x=x';

for i=1:line

coef1(i,:)=cwt(x(i,:),1,'bior4.4');

coef2(i,:)=cwt(x(i,:),2,'bior4.4');

coef3(i,:)=cwt(x(i,:),j,'bior4.4');

end%正值1,負值0的矩陣temp表示(突變點左位置)

max=0;

max_loc=0;

for i=1:line

j=1;

while j0 & coef3(i,j+1)<0) | (coef3(i,j)<0 & coef3(i,j+1)>0 )%找到左位置j

for k=j+1:column-1

if coef3(i,k)*coef3(i,j)>=0%找到右位置k

for m=j:k

if abs(coef3(i,m))>max

max=abs(coef3(i,m));

max_loc=m;

endend

if max>max_num

form(max_loc,i)=1;

endj=k;

max=0;

break;

endend%for k

if k==column-1

j=column-1;

endelse

j=j+1;

end%if

end%while

endfor i=2:line-2

for j=2:column-2

%鏈長為1

if form(i,j-1)==0 & form(i,j+1)==0 & form(i-1,j-1)==0 & form(i-1,j)==0 & form(i-1,j+1)==0 & form(i+1,j-1)==0 & form(i+1,j)==0 & form(i+1,j+1)==0

form(i,j)=0;%

endif form(i,j)==1 & form(i,j+1)==1 & sum(sum(form(i-1:i+1,j-1:j+2)))==2

form(i,j)=0;

form(i,j+1)=0;

end if form(i,j)==1 & form(i+1,j)==1 & sum(sum(form(i-1:i+2,j-1:j+1)))==2

form(i,j)=0;

form(i+1,j)=0;

end if form(i,j)==1 & form(i+1,j+1)==1 & sum(sum(form(i:i+1,j:j+1)))==2

if sum(sum(form(i-1:i+2,j-1:j+2)))==3 & ( form(i-1,j+2)==1 | form(i+2,j-1)==1)

form(i,j)=0;

form(i+1,j+1)=0;

endif sum(sum(form(i-1:i+2,j-1:j+2)))==4 & form(i-1,j+2)==1 & form(i+2,j-1)==1

form(i,j)=0;

form(i+1,j+1)=0;

endend if form(i,j+1)==1 & form(i+1,j)==1 & sum(sum(form(i:i+1,j:j+1)))==2

if sum(sum(form(i-1:i+2,j-1:j+2)))==3 & ( form(i-1,j-1)==1 | form(i+2,j+2)==1)

form(i,j+1)=0;

form(i+1,j)=0;

endif sum(sum(form(i-1:i+2,j-1:j+2)))==4 & form(i-1,j-1)==1 & form(i+2,j+2)==1

form(i,j+1)=0;

form(i+1,j)=0;

endend

endendmax=0;

for i=3:line-3

for j=3:column-3

s=sum(sum(form(i-2:i+2,j-2:j+2)));

for m=i-2:i+2

for n=j-2:j+2

if s>=7 & abs(coef3(m,n))<=s*3

form(m,n)=0;

endend

endend

endfigure;

imshow(form, );

matlab如何用inpolygon函式判斷點是否在園內

如果說是範圍的話應該是滿足與三角形三條邊直線方程有關的不等式組但是如果你有三版點a x1,y1 b x2,y2 c x3,y3 組成三角形權想知道某點 x,y 是否在三角型裡面可以用matlab函式 in on inpolygon x,y,x1 x2 x3 y1 y2 y3 返回的in和on都是邏輯...

如何用MATLAB畫周期函式,如何用MATLAB畫周期函式?

n0 1 n1 200 取最左邊的一個週期的邊界t0 200 週期for i 0 4 5個週期t n0 0.1 n1 y 0.002 1.0191 t t0 i 表示式 plot t,y hold on n0 n0 t0 左邊界右移一個週期n1 n1 t0 右邊界右移一個週期end 第6個週期 t ...

如何用matlab中subplot的使用

subplot就是將figure中的影象劃分為幾塊,每塊當中顯示各自的影象,有利於進行比較。比如example裡面有這樣的例子 in e 3.2 4.1 5.0 5.6 outgo 2.5 4.0 3.35 4.9 subplot 2,1,1 plot in e subplot 2,1,2 plot...