-2048 から 2048 の間の強度値を制限する必要がある約 200 の CT スキャンがあります。histeq と imadjust を試しましたが、うまくいきませんでした。imshow(image, [-2048,2048]) を使用すると、最良の結果が得られます。しかし、これの結果データを保存する必要がありますimshow
。
imshow の出力画像を表示範囲で取得して保存できるようにしたいですか?
一番
-2048 から 2048 の間の強度値を制限する必要がある約 200 の CT スキャンがあります。histeq と imadjust を試しましたが、うまくいきませんでした。imshow(image, [-2048,2048]) を使用すると、最良の結果が得られます。しかし、これの結果データを保存する必要がありますimshow
。
imshow の出力画像を表示範囲で取得して保存できるようにしたいですか?
一番
同じ方法で値の範囲を制限するだけの場合はimshow
、次のように記述できます。
limits = [-2048 2048];
limitedImage = min(max(originalImage, limits(1)), limits(2));
これにより、すべての強度が-2048〜-2048未満に設定され、すべての強度が2048〜2048に設定されます。
@Jonasが提案したように、極端な値を切り捨てることができます。または、色を再スケーリングして、スペクトル全体を常に最大限に活用できるようにすることもできます(最大のコントラストで)。
scaledImage = zeros(size(originalImage)) % Just for initialization
desiredRange = 2*2048;
currentRange = max(originalImage(:)) - min(originalImage(:)); % You will want to remove NaNs first if they occur
currentMean = mean(originalImage(:))
scaledImage(:) = currentMean + (originalImage(:) - currentMean) * desiredRange /currentRange
これにより、すべての強度が-2048〜-2048未満に設定され、すべての強度が2048〜2048に設定されます。
限定的で単調な機能を使用することもできます。
例えば。私は次のようなものを使用しますlimitedImage = 2048*tanh(originalImage/2048)
これを使用すると、元の画像を復元でき、2048 を超える値の情報が失われることはありません。