Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

isequal

(削除予定) 2 つの bigimage オブジェクトの等価性の比較

R2019b 以降

bigimage オブジェクトの関数 isequal は将来のリリースで削除される予定です。代わりに、blockedImage オブジェクトを使用してください。詳細については、互換性の考慮事項を参照してください。

説明

大きなイメージ bigimg1bigimg2 で空間参照、基となるデータ型、およびブロック サイズが同じ場合、tf = isequal(bigimg1,bigimg2)true を返します。メタデータが等しい場合のみピクセル値が比較され、異なるピクセル値が見つかると比較は途中で終了します。isequal は、ファイル名、マスク、その他のクラス プロパティを考慮しません。

入力引数

すべて折りたたむ

最初の大きなイメージ。bigimage オブジェクトとして指定します。

2 番目の大きなイメージ。bigimage オブジェクトとして指定します。

出力引数

すべて折りたたむ

大きなイメージ bigimg1bigimg2 が同等。logical スカラーとして返されます。

データ型: logical

バージョン履歴

R2019b で導入

すべて展開する

R2023b: isequal は削除予定

bigimage オブジェクトとこの関数は将来のリリースで削除される予定です。代わりに、blockedImage オブジェクトを使用してください。MATLAB® に付属している関数 isequal を使用して、2 つの blockedImage オブジェクトの等価性を比較することができます。

この関数は、オブジェクトに関するさまざまなプロパティを比較するため、異なる結果を返す場合があります。bigimage の関数 isequal は、2 つの bigimage オブジェクトの等価性を評価する際、ファイル名、マスク、およびその他のクラス プロパティを考慮しません。一方、MATLAB の関数 isequal は、オブジェクトの等価性を評価する際、イメージのファイル名など、すべてのオブジェクト プロパティを考慮します。そのため、MATLAB の関数 isequal は、bigimage の関数 isequal よりも多くの状況において blockedImage オブジェクトが等しくないと判定します。

コードを更新するには、まず、イメージ データを読み取るための 2 つの blockedImage オブジェクトを作成します。bigimage オブジェクトの動作を再現する場合は、次の手順に従います。

  • Channels プロパティ、ClassUnderlying プロパティ、BlockSize プロパティなどの関連プロパティの等価性を比較します。blockedImage オブジェクトには SpatialReferencing プロパティがありませんが、WorldStartWorldEnd などの関連プロパティを比較できます。

  • 2 つのオブジェクト間でそれらのプロパティのいずれかが等しくない場合、それらのオブジェクトは等しくありません。

  • 2 つのオブジェクト間でそれらのプロパティがすべて等しい場合、各解像度レベルでデータを比較できます。blockedImageDatastore オブジェクトを使用してデータを読み取り、MATLAB の関数 isequal を使用してデータの等価性を判定します。効率よく比較を行うには、最も粗い解像度レベルからデータの比較を開始し、その後、解像度を徐々に細かくしながらデータを比較します。

  • 2 つのオブジェクト間で、読み取ったデータ ブロックのいずれかが等しくない場合、それらのオブジェクトは等しくありません。そうでない場合、それらのオブジェクトは等価です。

非推奨の使用方法推奨される代替案

この例では、関数 isequal を使用して bigimage オブジェクトの等価性を比較します。

filename = "tumor_091R.tif";
bim1 = bigimage(filename,BlockSize=[100 100]);
bim2 = bigimage(filename,BlockSize=[200 200]);
tf = isequal(bim1,bim2);

以下は、2 つの blockedImage オブジェクトを比較するほぼ等価なコードです。MATLAB の関数 isequal で十分な場合、この代替コードを使用してください。

filename = "tumor_091R.tif";
bim1 = blockedImage(filename,BlockSize=[100 100]);
bim2 = blockedImage(filename,BlockSize=[200 200]);
tf = isequal(bim1,bim2);

以下は、2 つの blockedImage オブジェクトを比較するほぼ等価なコードです。bigimage の関数 isequal の動作をより忠実に再現する必要がある場合は、この代替コードを使用してください。

まず、blockedImage オブジェクトのプロパティを比較します。

filename = "tumor_091R.tif";
bim1 = blockedImage(filename,BlockSize=[100 100]);
bim2 = blockedImage(filename,BlockSize=[200 200]);
tf = isequal(bim1.WorldStart,bim2.WorldStart) ...
      && isequal(bim1.WorldEnd,bim2.WorldEnd) ...
      && isequal(bim1.Size,bim2.Size) ... 
      && isequal(bim1.NumLevels,bim2.NumLevels) ...
      && isequal(bim1.Channels,bim2.Channels) ...
      && isequal(bim1.ClassUnderlying,bim2.ClassUnderlying) ...
      && isequal(bim1.BlockSize,bim2.BlockSize);

これらのプロパティが等しい場合、各解像度レベルでデータを比較できます。

for lvl = bim1.NumLevels:-1:1
    ds1 = blockedImageDatastore(bim1,lvl); 
    ds2 = blockedImageDatastore(bim2,lvl);
    while tf && hasdata(ds1) && hasdata(ds2)
        tf = isequal(read(ds1),read(ds2));
    end
end

tftrue の場合、これらのオブジェクトは等価です。そうでない場合、これらのオブジェクトは等しくありません。