2017-02-12 3 views
-1

LBPを使用して抽出されたすべての画像の特徴を行列に格納しようとしています。
しかし、それは私にこのエラーを与えている。ここで行列内に特徴抽出データを格納する際に寸法不一致エラーが発生する

Subscripted assignment dimension mismatch.

Error in fe1 (line 10) A(i, :) = LBP(img);

は私のコードは次のとおりです。

fe.m

clc; 
clear all; 

pat = 'D:/modified database'; 
Angry = dir([pat '/anger']); 
Andry = Angry(3:end); 
A = zeros(255, length(Andry)); 

for i = 1:length(Andry) 
    img = imread(Andry(i).name); 
    A(:, i) = LBP(img); 
end 

display(A); 

LBP.m

function LBP0 = LBP(I) 
    I = imresize(I, [256,256]); 
    I = rgb2gray(I); 
    m = size(I,1); 
    n = size(I,2); 
    for i = 2:m-1 
     for j = 2:n-1 
      J0 = I(i,j); 
      I3(i-1,j-1) = I(i-1,j-1)>J0; 
      I3(i-1,j) = I(i-1,j)>J0; 
      I3(i-1,j+1) = I(i-1,j+1)>J0; 
      I3(i,j+1) = I(i,j+1)>J0; 
      I3(i+1,j+1) = I(i+1,j+1)>J0; 
      I3(i+1,j) = I(i+1,j)>J0; 
      I3(i+1,j-1) = I(i+1,j-1)>J0; 
      I3(i,j-1) = I(i,j-1)>J0; 
      LBP0(i,j) = I3(i-1,j-1)*2^7 + I3(i-1,j)*2^6 + I3(i-1,j+1)*2^5 + I3(i,j+1)*2^4 + I3(i+1,j+1)*2^3+I3(i+1,j)*2^2 + I3(i+1,j-1)*2^1 + I3(i,j-1)*2^0; 
     end 
    end 
end 

私はといくつかの問題があると思います行列Aの次元 コードを教えてください。
ありがとうございます。 :) A = zeros(255, 255, length(Andry));

  • 答えて

    0

    A 2D行列、そうAニーズが3Dマトリックスであることが、いくつかのhols ...

    1. 修正A = zeros(255, length(Andry));修正A(:, i) = LBP(img);​​

    にI次のコードがうまくいかなければならないと考えてください:

    0123症例画像で

    fe.m

    clc; 
    clear all; 
    
    pat = 'D:/modified database'; 
    Angry = dir([pat '/anger']); 
    Andry = Angry(3:end); 
    A = zeros(255, 255, length(Andry)); 
    
    for i = 1:length(Andry) 
        img = imread(Andry(i).name); 
        A(:, :, i) = LBP(img); 
    end 
    
    display(A); 
    

    あなたの代わりに、3Dマトリックスのcell arrayを使用することができ、異なる寸法を有する:

    fe.m

    clc; 
    clear all; 
    
    pat = 'D:/modified database'; 
    Angry = dir([pat '/anger']); 
    Andry = Angry(3:end); 
    A = cell(1, length(Andry)); %Allocate cell array 
    
    for i = 1:length(Andry) 
        img = imread(Andry(i).name); 
        A{i} = LBP(img); %Store LBP(img) in index i of cell array A 
    end 
    
    %Use loop to display cell array elements. 
    for i = 1:length(A) 
        display(A{i}); 
    end 
    
    +0

    私はまだ線A(=、:、i)= LBP(img)で同じエラーが発生しています。 – Tejashree

    +0

    LBP出力のサイズはすべての画像で同じにする必要がありますか? – Tejashree

    +0

    サイズが異なる場合、3D行列の代わりにセル配列を使用できます。 – Rotem

    0

    LBP機能は、255×255マトリックス中を返しますAは255 *(Angry dirの画像数/ファイル数)の行列です。すべての画像に対してLBP結果を保存する場合は、行列Aの寸法を変更する必要があります。

    関連する問題