I am trying to calculate normalized root square error (NRMSE) between my optical flow estimation and the provided ground truth I think I calculated the RMSE correctly, However, the normalized always INF values !
Here is part of my code:
% u , v ==> estimated flow
% cu , cv ==> ground truth flow
du=abs(u-cu);
dv=abs(v-cv);
% To compute Absulet error
AE= sqrt(du.^2+dv.^2);
AE_aver= mean (AE(:));
% To compute End Point Error
EPE=mean(AE(:));
% To Compute Root Mean Square Error
X=AE.^2;
RMSE=sqrt(mean(X(:)));
% To Compute Normalized Root Mean Square Error
Vg=cu.^2+cv.^2;
xx=max(Vg(:));
nn=min(Vg(:));
NRMSE=RMSE./( xx - nn );
Could you please show me where is my mistake? thank you
The only way that NRSME
can be Inf
is if either RMSE
is Inf
or (xx-nn) = 0
.
So, you need to check your data. Either cu
and cv
are both constant (either scalar constants, or vectors with the same value in every element), which would lead to (xx-nn) = 0
, or at least one of u
, v
, cu
or cv
has at least one entry that is Inf
, which would lead to RMSE
being Inf
.