質問: subtract関数の処理について subtractという関数を使い、画像同士の減算を行っています。 私が行っている処理は、画像から取り出したい信号だけが見えるように、信号のある画像から信号のない画像を減算することで処理を行っています。 その際に使っているsubtract関数の処理についてお聞きしたいのですが、この関数は減算をしたあとの限界値?はどのようになっているのでしょうか? 例えば、8bitの画像同士を引き算するとき、強度の最大値が256になると思うのですが、差し引かれる画像より差し引く画像の強度値が大きい場合はどのようになりますか? 128-256=-128とならず、0になりますか? また、-128となるような処理の仕方を知っている方がいましたら教えて頂けると助かります。 減算後のマイナス値を二乗してsn比の高い画像を得られれば良いなと考えております。 とても困っています。よろしくお願いします。
回答: imsubtract関数のことでしょうか?それともsubtractという自前の関数をお使いなのでしょうか。 imsubtract関数であれば負の数はゼロに丸められると記載があります。 https://jp.mathworks.com/help/images/ref/imsubtract.html 負の数を出したいのでしたらsingleかdoubleに変換してから計算するのが一番間違いないかと思います。もし元の画像がuint8に固定の場合でしたら計算結果の取りうる範囲は-255~255となるのでint16型でも大丈夫です。 a = rand(3,3)*100; b = rand(3,3)*100; imsubtract(a,b)% マイナスが出るのを確認 class(a) % a(bも同じ)の型を確認