SNR for image (No-Reference)
15 ビュー (過去 30 日間)
古いコメントを表示
I have a .bin file (a 12 bit image). How should I caculate the SNR of this? I am aware that SNR computation needs one clean and one noisy image. But without any reference, this is how I am doing it. Is it right?
I am reading it as a 16 bit image using fread.
fileID = fopen('29.bin');
A = fread(fileID,'uint16');
A1 = reshape(A, [480 640]);
img = A1;
signal = max(img(:));
noise = std(img(:));
SNR = 20*log10(signal/noise);
the SNR I get is: 14.683817721282823
When I open this .bin using Irfan View (Open as > RAW file) these are the parameters I set:
The image is:
This does not appear to have such a less SNR.
Is the way I am computing SNR for a single image (No Reference) correct? I have attached the .bin file here .
0 件のコメント
回答 (2 件)
Image Analyst
2015 年 3 月 10 日
The standard deviation of the image is not noise. You could have a perfectly good noise-free image, and if it has any structure in it, it will have a standard deviation. But you're calling it noise, which it is not, at least not necessarily unless you have a perfectly uniform image.
There are tons of denoising methods. I suggest you look at section 5.8 here: http://www.visionbib.com/bibliography/contentsimage-proc.html#Image%20Processing,%20Restoration,%20Enhancement,%20Filters,%20Image%20and%20Video%20Coding
Also look at Professor Milanfar's page https://users.soe.ucsc.edu/~milanfar/talks/ He has done a lot of work in state of the art noise removal.
AJ
2020 年 7 月 21 日
編集済み: AJ
2020 年 7 月 21 日
If you can identify the background (noise) vs the foreground/details (signal) in the image, then you can compute SNR by taking the Mean of the signal/mean of the noise
This is how the following example has done for MRI images: https://mrimaster.com/technique%20SNR.html
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Image Processing Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!