//--------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------- public InterferogramDecodingResult DecodeInterferogram( BitMask2D bitMask, params RealMatrix[] interferograms ) { //Выбранные точки изображения Point[] selectedImagePoints = bitMask.GetTruePoints(); double[] phaseShifts = this.GetRandomPhaseShifts(interferograms.Length); GenericInterferogramDecoder genericInterferogramDecoder = new GenericInterferogramDecoder(); double[] numerators = genericInterferogramDecoder.GetDecodingFormulaNumerators (interferograms, phaseShifts, bitMask); double[] denominators = genericInterferogramDecoder.GetDecodingFormulaDenominators (interferograms, phaseShifts, bitMask); Point2D[] points2D = PlaneManager.CreatePoints2D(numerators, denominators); if (this.ExecutePointsCorrecting) { points2D = this.GetTransformedPoints(points2D); } int sizeX = interferograms[0].ColumnCount; int sizeY = interferograms[0].RowCount; RealMatrix resultMatrix = this.CalculatePhaseMatrix(points2D, selectedImagePoints, sizeX, sizeY); InterferogramDecodingResult decodingResult = new InterferogramDecodingResult(resultMatrix); return(decodingResult); }