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!