0

次のコードではエラーが発生します。

警告: AlphaData の次元は 1x1 であるか、CData と一致する必要があります。

問題は、CData がカラー画像であるため 3 次元であり、alphadata が透明データのマトリックスであり、したがって 2 次元であるということです。

red = cat(3, ones(512), zeros(512), zeros(512));
mask = [];
bounds = data(currow,1:6);
if slice >= bounds(5) && slice <= bounds(6)
    mask = zeros(size(segmask,1),size(segmask,2));
    mask(bounds(1)-4:bounds(2)+4,bounds(4)+4:bounds(4)+5) = 1;
    mask(bounds(2)+4:bounds(2)+5,bounds(3)-4:bounds(4)+4) = 1;
end
imshow(low(:,:,slice),[WL-WW/2 WL+WW/2])
hold on
h = imshow(red);
set(h, 'AlphaData', 0.3*mask);
hold off

Matlab ドキュメントの AlphaData と CData に関する情報は次のとおりです。


double または uint8 の AlphaData m 行 n 列の行列

透明度データ。オブジェクトの各面または頂点の透明度を指定する非 NaN 値の行列。AlphaData のクラスは double または uint8 です。

MATLAB ソフトウェアは、次のいずれかの方法で透明度を決定します。

AlphaData の要素を透明度の値として使用する (AlphaDataMapping を none に設定)

AlphaData の要素を現在の alphamap へのインデックスとして使用する (AlphaDataMapping を direct に設定)

AlphaData の要素を軸の ALim プロパティの最小値と最大値の間の範囲にスケーリングします (AlphaDataMapping をスケーリング済みに設定、デフォルト)。


CData 行列 | m x n x 3 の配列

画像データです。イメージを定義する各四角形領域の色を指定する値の行列または 3 次元配列。image(C) は C の値を CData に代入します。MATLAB は、次の 3 つの方法のいずれかでイメージの色を決定します。

CData の要素を現在のカラーマップへのインデックスとして使用する (デフォルト) (CDataMapping を direct に設定)

CData の要素を値 min(get(gca,'CLim')) と max(get(gca,'CLim')) の間の範囲にスケーリングする (CDataMapping をスケーリング済みに設定)

CData の要素を RGB 値として直接解釈する (トゥルー カラー仕様)

イメージ CData 内の NaN の動作は定義されていないことに注意してください。画像で透明度を使用する方法については、画像の AlphaData プロパティを参照してください。


AlphaData と CData はどのようにして smae 次元を持つことができますか?

赤が 512x512x3 でマスクが 512x512 の場合、警告以外にコードは期待どおりに機能するようです。

4

1 に答える 1

0

私は自分の問題を理解しました。If ステートメントのため、変数maskは作成されませんでした。

于 2012-07-13T20:45:46.427 に答える