psnr
ピーク S/N 比 (PSNR)
構文
説明
は、書式化されていないイメージ データの次元ラベル peaksnr
= psnr(___,'DataFormat',dataFormat
)dataFormat
も指定します。バッチ次元の各要素の PSNR を個別に返すには、この構文を使用します。
例
元のイメージを参照してノイズを含むイメージの PSNR を計算
イメージを読み取り、ノイズを追加したコピーを作成します。元のイメージは参照イメージです。
ref = imread('pout.tif'); A = imnoise(ref,'salt & pepper', 0.02);
PSNR を計算します。
[peaksnr, snr] = psnr(A, ref);
fprintf('\n The Peak-SNR value is %0.4f', peaksnr);
The Peak-SNR value is 22.6437
fprintf('\n The SNR value is %0.4f \n', snr);
The SNR value is 15.5524
dlarray
入力の PSNR の計算
イメージをワークスペースに読み取った後、イメージ データを使用して書式化されていない dlarray
オブジェクトを作成します。
ref = imread("strawberries.jpg");
ref = im2single(ref);
dlref = dlarray(ref);
イメージにごま塩ノイズを加えた後、ノイズを含むイメージ データを使用して書式化されていない dlarray
オブジェクトを作成します。
noisy = imnoise(ref,'salt & pepper');
dlnoisy = dlarray(noisy);
元のデータに対するノイズを含むデータのピーク SNR および SNR を計算します。
[peaksnr,snr] = psnr(dlnoisy,dlref)
peaksnr = 1x1 single dlarray 17.5941
snr = 1x1 single dlarray 11.1265
イメージ シーケンスに含まれるイメージの PSNR の計算
参照イメージをワークスペースに読み取ります。
ref = imread("office_1.jpg");
参照イメージと同じサイズをもつ 6 個のイメージから成るシーケンスを格納するための 2 つの配列を事前に割り当てます。
numFrames = 6; imsOriginal = zeros([size(ref) numFrames],class(ref)); imsNoisy = zeros([size(ref) numFrames],class(ref));
イメージを読み取り、事前に割り当てた配列にそのイメージを追加します。1 つの配列には、元のイメージ データを格納します。2 番目の配列には、ごま塩ノイズが追加されたイメージ データを格納します。
for p = 1:numFrames filename = strcat("office_",num2str(p),".jpg"); im = imread(filename); imsOriginal(:,:,:,p) = im; imsNoisy(:,:,:,p) = imnoise(im,"salt & pepper"); end
イメージ シーケンスをモンタージュに表示します。最初の行には、元のイメージ データのシーケンスが表示されます。2 番目の行には、ノイズを含むイメージ データのシーケンスが表示されます。
montage(cat(4,imsOriginal,imsNoisy),"Size",[2 numFrames])
入力配列のデータ形式を "SSCB" (空間、空間、チャネル、バッチ) として指定し、ノイズを含む各イメージと対応する初期状態のイメージの PSNR を計算します。
peak_psnrs = psnr(imsNoisy,imsOriginal,"DataFormat","SSCB"); peak_psnrs = squeeze(peak_psnrs)
peak_psnrs = 6×1
16.3560
16.9698
17.8079
18.1843
18.0656
17.1682
入力引数
A
— 解析されるイメージ
数値配列 | dlarray
オブジェクト
解析されるイメージ。任意の次元の数値配列、または dlarray
(Deep Learning Toolbox) オブジェクトとして指定します。
データ型: single
| double
| int16
| uint8
| uint16
peakval
— ピーク信号レベル
非負の数値
dataFormat
— 次元ラベル
string スカラー | 文字ベクトル
入力イメージ A
および ref
の次元ラベル。string スカラーまたは文字ベクトルとして指定します。dataFormat
の各文字は次のラベルのいずれかでなければなりません。
S
— 空間C
— チャネルB
— バッチ観測値
この書式に、1 つより多いチャネル ラベルまたはバッチ ラベルを含めることはできません。入力イメージが書式化された dlarray
オブジェクトの場合は、引数 'dataFormat
' を指定しないでください。
例: 'SSC'
は、2 つの空間次元と 1 つのチャネル次元が配列にあることを示します。これは、2 次元 RGB イメージ データに適しています。
例: 'SSCB'
は、2 つの空間次元、1 つのチャネル次元、および 1 つのバッチ次元が配列にあることを示します。これは、2 次元 RGB イメージ データのシーケンスに適しています。
出力引数
peaksnr
— PSNR
数値スカラー | 数値配列 | dlarray
オブジェクト
デシベル単位で表された PSNR。次のいずれかの値として返されます。
入力イメージのタイプ | PSNR の値 |
---|---|
| 単一の PSNR 測定値をもつ数値スカラー。 |
| 単一の PSNR 測定値をもつ 1 行 1 列の dlarray オブジェクト。 |
| 入力イメージと同じ次元の数値配列。peaksnr の空間次元とチャネル次元は大きさが 1 の次元です。バッチ次元の各要素には 1 つの PSNR 測定値が存在します。 |
| 入力イメージと同じ次元の dlarray オブジェクト。peaksnr の空間次元とチャネル次元は大きさが 1 の次元です。バッチ次元の各要素には 1 つの PSNR 測定値が存在します。 |
A
および ref
のデータ型が single
である場合、peaksnr
のデータ型は single
になります。そうでない場合、peaksnr
のデータ型は double
になります。
snr
— S/N 比
数値スカラー | 数値配列 | dlarray
オブジェクト
デシベル単位で表された S/N 比。次のいずれかの値として返されます。
入力イメージのタイプ | PSNR の値 |
---|---|
| 単一の SNR 測定値をもつ数値スカラー。 |
| 単一の SNR 測定値をもつ 1 行 1 列の dlarray オブジェクト。 |
| 入力イメージと同じ次元の数値配列。snr の空間次元とチャネル次元は大きさが 1 の次元です。バッチ次元の各要素には 1 つの SNR 測定値が存在します。 |
| 入力イメージと同じ次元の dlarray オブジェクト。peaksnr の空間次元とチャネル次元は大きさが 1 の次元です。バッチ次元の各要素には 1 つの SNR 測定値が存在します。 |
A
および ref
のデータ型が single
である場合、snr
のデータ型は single
になります。そうでない場合、snr
のデータ型は double
になります。
アルゴリズム
関数 psnr
は次の等式を実装して PSNR を計算します。
peakval
は、ユーザーが指定するか、イメージのデータ型の範囲から取得されます。たとえば、データ型が uint8
であるイメージの場合、peakval
は 255
となります。MSE は、A
と ref
の間の平均二乗誤差です。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
psnr
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。詳細については、イメージ処理のコード生成を参照してください。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU でのイメージ処理を参照してください。
バージョン履歴
R2014a で導入R2021a: 深層学習配列のメトリクスの計算と計算の次元の指定
関数 psnr
は、深層学習アプリケーション用の dlarray
入力を受け入れるようになりました。
また、この関数は、'S'
(空間)、'C'
(チャネル)、および 'B'
(バッチ) の次元ラベルをもつ書式設定済みデータもサポートします。バッチ次元をもつデータの場合、この関数はバッチ次元のインデックスごとに異なる結果を返します。
R2021a: GPU による高速化のサポート
psnr
は、GPU による高速化をサポートするようになりました (Parallel Computing Toolbox™ が必要)。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)