負の値を持つノイズの作成
4 次查看(过去 30 天)
显示 更早的评论
以下のコードにて信号が0のみの画像(A)に平均0、分散Bのノイズを加えてノイズ画像の作成をしたいのですが、負の値が0になってしまいす。負の値を残すにはどのようにすればよいでしょうか?
imnoise(A,'gaussian',0,B)
0 个评论
采纳的回答
Atsushi Ueno
2022-10-27
编辑:Atsushi Ueno
2022-10-28
>負の値を残すにはどのようにすればよいでしょうか?
⇒ 整数型なら符号有整数型を用います。但しint16型に限られます。
% I — グレースケール イメージ:数値配列
% データ型: single | double | int16 | uint8 | uint16
% メモ:ポアソン ノイズでは、imnoise はデータ型 int16 のイメージをサポートしていません。
A = int16(zeros(100)); % 信号が 0 のみのイメージデータ (符号有整数 int16 型)
m = 0; B = 0.05; % m:平均、B:分散 (大き過ぎると -32768~32767 を超え飽和する)
C = imnoise(A,'gaussian',m,B);
surf(C)
0 个评论
更多回答(2 个)
Atsushi Ueno
2022-10-27
>負の値を残すにはどのようにすればよいでしょうか?
% imnoise では、データ型 double および single のピクセル値が [0, 1] の範囲内にあると想定しています。
% 関数 rescale を使用して、想定される範囲にピクセル値を調整できます。
% イメージが、[0,1] の範囲外の値をもつ double 型または single 型の場合、
% imnoise は、ノイズを追加する前に入力ピクセル値を [0, 1] の範囲にクリッピングします。
A = double(zeros(100)); % 信号が 0 のみのイメージデータ (浮動小数点数 double 型)
m = 0.5; B = 0.05; % m:平均、B:分散 (大き過ぎると 0~1 を超え飽和する)
C = imnoise(A,'gaussian',m,B) - m; % 結果から平均を引いてゼロ中心にする
surf(C)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 イメージ算術 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!