噪声估计信噪比矩阵

信息处理 matlab 矩阵
2022-02-04 04:29:49

我有一个 256\times 192 的信号矩阵,矩阵是矩阵的平均值,我想计算 SNR ,其中是帧数,重塑后,我得到了一个的矩阵。所以我的代码是:256×192259×192256×192×330330256×192

signal = 256x192x256;

signal_average = mean(signal,3);
noise_estimation = signal_average - repmat(mean(signal_average,2),1);
signal_power = mean(abs(signal_average).^2);
noise_power = mean(abs(noise_estimation).^2,2);
SNR = 10*log10(signal_power./noise_power);

使用这种方法来获得每帧具有不同 SNR 的矩阵是否正确?

1个回答

在您的情况下,您可能希望将 SNR 计算为标准偏差的平均值。

signal=rand([256,192,330]); %demo data
SNR = mean(signal,3)./std(signal,[],3);
SNRdb = 10*log10(SNR);

通过这种方式,您可以获得每个像素的不同 SNR 值。256x192 像素,330 帧。

要获取 330 帧中的每一帧的值,您必须首先重塑矩阵。

signal=reshape(signal,[],330);  %pixel values merged
SNR = mean(signal)./std(signal);
SNRdb = 10*log10(SNR);