private Object[] invWmSubBand(Image img,double[] wm,int n,double threshold){
  int m=0;
  double z=0.0;
  double v=0.0;
  for (int i=0; i < img.getWidth() * img.getHeight(); i++) {
    if (img.getData()[i] > threshold) {
      z+=(img.getData()[i] * wm[i % n]);
      v+=Math.abs(img.getData()[i]);
      m++;
    }
  }
  return new Object[]{m,z,v};
}

private Object [ ] invWmSubBand ( Image img , double [ ] wm , int n , double threshold ) { int m = 0 ; double z = 0.0 ; double v = 0.0 ; for ( int i = 0 ; i < img . getWidth ( ) * img . getHeight ( ) ; i ++ ) { if ( img . getData ( ) [ i ] > threshold ) { z += ( img . getData ( ) [ i ] * wm [ i % n ] ) ; v += Math . abs ( img . getData ( ) [ i ] ) ; m ++ ; } } return new Object [ ] { m , z , v } ; }
extracts the watermark data from subband
