matlabopticalflow

Calculating Normalized Root Mean Square Error


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


Solution

  • 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.