How to calculate the dynamic range of an RGB image
9 ビュー (過去 30 日間)
表示 古いコメント
This is the code I am using to cal. the DR of an RGB image, I divide the n*m*3 image into R,G,B components and go from there. I understand that the min value could be zero and I can set it take all the values >=2 (or 2 in case of a lower value).
But the code is doing something unexpected and I am not sure where I am going wrong.
Thank you
Avi
% Cal. the luminance value of the frame
I4 = 0.2126*R(:,:)+ 0.7152*G(:,:)+ 0.0722*B(:,:);
% Find the max and min value
Max = max(I4,[],'all');
Min = min(I4,[],'all');
% Cal the log2() values
LogMax = log2(Max);
LogMin = log2(Min);
DR = LogMax - LogMin;
0 件のコメント
回答 (1 件)
DGM
2022 年 11 月 27 日
The error occurs because you're trying to do everything with integer data.
% read an image
inpict = imread('peppers.png');
inpict = im2double(inpict); % cast to a non-integer class
% split channels
[R G B] = imsplit(inpict);
% Cal. the BT709 luma value of the frame
Y = 0.2126*R + 0.7152*G + 0.0722*B;
% Find the max and min value
ymax = max(Y,[],'all');
ymin = min(Y,[],'all');
% Cal the log2() values
LogMax = log2(ymax);
LogMin = log2(ymin);
% dynamic range of luma
DRy = LogMax - LogMin
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!