0

img1、img2、および img1 と img2 の比較値のすべての値を格納するために 2D 配列を使用したいのですが、次のようなアルゴリズムを達成したいと考えています。

% read in the images from a folder one by one:
    somefolder = 'folder';
    filelist = dir([somefolder '/*.jpg']);
    s=numel(filelist);
    C = cell(length(filelist), 1);
    for k=1:s
       C{k}=imread([somefolder filelist(k).name]); 
    end
%choose any of the two images to compare
    for t=1:(s-1)
        for r=(t+1):s
           img1=C{r};
           img2=C{t};
           ssim_value[num][1]=img1;   % first img
           ssim_value[num][2]=img2;   % second img
           ssim_value[num][3]=mssim;  % ssim value of these two images

        end 
    end

したがって、使用した 2D 配列 (ssim_value) の使用、それを初期化する正しい方法、および保存したい値を保存する目的を達成する方法についてエラーがあります。

誰かが私を助けてくれませんか。前もって感謝します。

4

1 に答える 1

1

「num」は、5 などのように指定する数値であると想定しています。Python のように、配列内で型を混在させることはできません。また、@Schorsch が指摘したように、括弧を使用して Matlab の配列にインデックスを付けます。

形成しようとしている 2 次元配列は、2 次元セル配列である必要があります。例えば:

a = {{"a",3},{"two",[1,2,3]};

この場合、a{1,2} = 3、a{2,1} = "2" です。

ディレクトリ内のファイル数が事前にわからない場合があるため、セル配列を事前に初期化できない場合があります。いずれにせよ、Matlab 配列はパフォーマンス上の理由から事前に初期化する必要があるだけであり、Matlab での配列の初期化に関する情報を簡単に見つけることができます。

これに照らして、あなたが達成しようとしていることは次のとおりであると確信しています。

%choose any of the two images to compare
    ssim_value = {};
    for t=1:(s-1)
        for r=(t+1):s
           img1=C{r};
           img2=C{t};
           ssim_value{num,1}=img1;   % first img
           ssim_value{num,2}=img2;   % second img
           ssim_value{num,3}=mssim;  % ssim value of these two images

        end 
    end
于 2013-09-23T09:36:58.963 に答える