[解決済み] imnoiseを使って画像にガウシアンノイズを加える
2022-02-07 01:10:42
質問
SNR=5dBの白色ガウスノイズを画像に加えるには、次のようにします。
imnoise
?
構文があることは知っています。
J = imnoise(I,type,parameters)
とします。
SNR = 10log10[var(image)/var(error image)]
このSNR値を使って、画像にノイズを加えるにはどうすればよいのでしょうか?
どのように解決するのですか?
まず、SNRとノイズの関係から見ていきましょう。誤差画像は元画像とノイズ画像の差分であり、誤差画像はノイズそのものということになります。したがって、SNRは実際には
<ブロッククオート
SNR = 10log10[var(image)/var(noise)]
ある画像でSNR=5dbの場合、ノイズの分散は次のようになる。
var(noise) = var(image)/10SNR/10 = var(image)/sqrt(10)
では、これらをすべてMATLABのコードに置き換えてみましょう。ある画像に白色ガウスノイズを加えるには(これを
I
を使用しています。
imnoise
コマンドを使用すると、構文は次のようになります。
I_noisy = imnoise(I, 'gaussian', m, v)
ここで
m
は平均ノイズであり
v
はその分散である。また、重要なのは
imnoise
は、画像中の強度が
I
は0から1までの範囲である。
この例では、ゼロ平均のノイズを加え、その分散は
v = var(I(:))/sqrt(10)
. 完全なコードは
%// Adjust intensities in image I to range from 0 to 1
I = I - min(I(:));
I = I / max(I(:));
%// Add noise to image
v = var(I(:)) / sqrt(10);
I_noisy = imnoise(I, 'gaussian', 0, v);
明確な説明:私たちは
var(I(:))
に含まれるすべてのサンプルの分散を計算するように処理します.
I
(代わりに
var(I)
これは列に沿って分散を計算します)。
お役に立てれば幸いです。
使用例
I = imread('eight.tif');
I = double(I);
%// Adjust intensities in image I to range from 0 to 1
I = I - min(I(:));
I = I / max(I(:));
%// Add noise to image
v = var(I(:)) / sqrt(10);
I_noisy = imnoise(I, 'gaussian', 0, v);
%// Show images
figure
subplot(1, 2, 1), imshow(I), title('Original image')
subplot(1, 2, 2), imshow(I_noisy), title('Noisy image, SNR=5db')
その結果がこちらです。
関連
-
[解決済み】MATLABの&と&&の違いは何ですか?
-
[解決済み] セルコンテンツから非セル配列オブジェクトへの代入
-
[解決済み] 部分ピボットによるガウス消去の実装【終了しました
-
[解決済み] Matlabのstrcat関数が空白を含んでいる場合のトラブル
-
[解決済み] 単純論理条件フラグ MATLAB
-
[解決済み] MATLAB のエラーです。関数 'subsindex' はクラス 'struct' の値に対して定義されていません。
-
[解決済み] MATLABでマシンイプシロンを計算する方法は?
-
[解決済み] MatlabのA=[x; y']は何を意味するのですか?
-
[解決済み] Ax = B の形の行列を解く ==> エラー。行列が特異に近い、またはスケールが悪い
-
[解決済み] matlabでchi2gof関数を理解する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] matlabで補強行列を作成し、縮小行エシュロン形式を作成する。
-
[解決済み] Matlabでシンプソンの1-3 (h / 3)メソッド
-
[解決済み] matlabでrandnを持つ確率変数の範囲はどうなっていますか?
-
[解決済み] ベクトルにおける四分位値の0.25から0.75までの数値 MATLAB
-
[解決済み] matlab、デフォルトの図サイズを設定するが、位置は気にしない?
-
[解決済み] なぜSIFTはMatlabで利用できないのですか?
-
[解決済み] MATLABで分数を10進数に変換する【重複】。
-
[解決済み] Matlabでファイル名を変更する - movefileがファイルの代わりにフォルダを作成する
-
[解決済み] 指定された矩形に含まれる配列中の点を見つける( matlab )
-
[解決済み] Matlabでのリッジ回帰とOLS回帰