[問題]對大量圖片的處理

看板MATLAB作者 (幫幫)時間12年前 (2011/10/30 23:42), 編輯推噓1(102)
留言3則, 3人參與, 最新討論串1/1
目前有47張影像 每張影像都要擷取七個特徵 也就是用GLCM,然後求出特徵 小弟,目前只能一張一張影像求出特徵 不知道要如何用for迴圈, 還是其他方式可以一次求出這47張影像分別七個特徵值(ENT,ASM,CON,HOM,COR,CLU,DIS) 麻煩版友們幫忙了~感恩 以下是我的程式碼,只能求單張影像的特徵值 close all clear all X=imread('1.jpg'); %讀入影像 c=colormap(gray(256)); nbcol = size(c,1); I=X; [cA1,cH1,cV1,cD1] = dwt2(X,'db1'); cod_X = wcodemat(X,nbcol); cod_cA1 = wcodemat(cA1,nbcol); cod_cH1 = wcodemat(cH1,nbcol); cod_cV1 = wcodemat(cV1,nbcol); cod_cD1 = wcodemat(cD1,nbcol); dec2d = [cod_cA1,cod_cH1;cod_cV1,cod_cD1]; imshow(double(dec2d)/256) p2=double(cod_cH1)/256; p3=double(cod_cV1)/256; p4=double(cod_cD1)/256; p2_gray=rgb2gray(p2); p3_gray=rgb2gray(p3); p4_gray=rgb2gray(p4); glcm2 = graycomatrix(p2_gray); glcm3 = graycomatrix(p3_gray); glcm4 = graycomatrix(p4_gray); %pij P=glcm2/(sum(sum(glcm2))); %ux for i=1:8 for j=1:8 U1(i,j)=i*P(i,j); end end Ux=sum(sum(U1)); %uy for i=1:8 for j=1:8 U2(i,j)=j*P(i,j); end end Uy=sum(sum(U2)); %sigma_x for i=1:8 for j=1:8 s1(i,j)=sqrt(((i-Ux)^2)*P(i,j)); end end sigma_x=sum(sum(s1)); %sigma_y for i=1:8 for j=1:8 s2(i,j)=sqrt(((i-Ux)^2)*P(i,j)); end end sigma_y=sum(sum(s2)); %ENT E=P.*log(P); E1=~isnan(E); E2=E(E1); ENT=sum(sum(E2)); %ASM for i=1:8 for j=1:8 A(i,j)=P(i,j)^2; end end ASM=sum(sum(A)); %CON for i=1:8 for j=1:8 C(i,j)=((i-j)^2)*P(i,j); end end CON=sum(sum(C)); %HOM for i=1:8 for j=1:8 H(i,j)=(1/(1+(i-j)^2))*P(i,j); end end HOM=sum(sum(H)); %COR for i=1:8 for j=1:8 C(i,j)=((i*j)*P(i,j)-Ux*Uy)/(sigma_x*sigma_y); end end COR=sum(sum(C)); %CLU for i=1:8 for j=1:8 C1(i,j)=((i-Ux+j-Uy)^2)*P(i,j); end end CLU=sum(sum(C1)); %DIS for i=1:8 for j=1:8 D(i,j)=abs(i-j)*P(i,j); end end DIS=sum(sum(D)); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.171.51.7

10/31 06:58, , 1F
最外面加個迴圈就好了吧?
10/31 06:58, 1F

10/31 13:38, , 2F
我覺得 你需要 eval + num2str() 然後附上一個迴圈
10/31 13:38, 2F

11/01 08:44, , 3F
寫成function 在另一個.m檔寫個迴圈呼叫
11/01 08:44, 3F
文章代碼(AID): #1EhN1maV (MATLAB)