Matlab画像データ型変換プロンプトエラー:関数 '*'はクラス 'uint8'分析の値に対して定義されていません

MATLABで読み取られる画像のデータ型はuint8であり、行列で使用されるデータ型はdoubleであるためI2=im2double(I1)、画像配列I1を倍精度型に変換します。変換しない場合、uint8を加算および減算するとオーバーフローします。エラーのヒントFunction '*' is not defined for values of class 'uint8'

既定
では、matlabは画像にデータをdoubleタイプ、つまり64ビット浮動小数点数として保存します

Matlabは符号なし整数(uint8とuint16)もサポートしています。

uint型の利点はスペースを節約できることであり、計算が含まれる場合はdouble型に変換する必要があります。

  • im2double():画像配列を倍精度型に変換します
  • im2uint8():画像配列をunit8タイプに変換します
  • im2uint16():画像配列をunit16タイプに変換します

注:doubleタイプのイメージにはim2uint8()を使用してください。問題が発生します。
doubleのデフォルトは0-1の間の数値です。uint8は0-255の間の数値です。配列uint8がx1 = {0,1,2}型の場合、変換後、x2 = {0,0.5,1}となり
、配列の場合doubleタイプy1 = {0、1、2}、変換後、y2 = {0、255、255}になります

おすすめ

転載: blog.csdn.net/ywsydwsbn/article/details/108718823