public void LoadCalibrationParameters(string parametersPath, List <Tuple <int, int> > badPixels = null) { CalibrationParameters calibrationParameters = new CalibrationParameters(); /*string parametersFile = Path.Combine(parametersPath, "Parameters.xml"); * string parametersString = ""; * if (File.Exists(parametersFile)) * { * parametersString = File.ReadAllText(parametersFile); * } * if (!string.IsNullOrEmpty(parametersString)) * { * calibrationParameters = XmlSerializationUtil.FromXml<CalibrationParameters>(parametersString); * } * else * { * //System.Windows.MessageBox.Show( * // string.Format("Could not load calibration for device serial number {0}", _Camera.SerialNumber)); * }*/ calibrationParameters.badPixels = new List <Tuple <int, int> >(); string badPixelsFile = Path.Combine(parametersPath, "BadPixels.csv"); if (File.Exists(badPixelsFile)) { var badPixelsStrings = File.ReadAllLines(badPixelsFile); foreach (var badPixelsString in badPixelsStrings) { var values = badPixelsString.Split(new char[] { ';' }); if (values.GetLength(0) > 1) { int item1 = int.Parse(values[0], System.Globalization.CultureInfo.InvariantCulture); int item2 = int.Parse(values[1], System.Globalization.CultureInfo.InvariantCulture); calibrationParameters.badPixels.Add(new Tuple <int, int>(item1, item2)); } } } /*string exposuresFile = Path.Combine(parametersPath, "ExpusBadPixelsuresDark.csv"); * if (File.Exists(exposuresFile)) * { * var exposuresStrings = File.ReadAllLines(exposuresFile); * * foreach (var exposuresString in exposuresStrings) * { * var values = exposuresString.Split(new char[] { ';' }); * if (values.GetLength(0) > 2) * { * double exposure = double.Parse(values[0], System.Globalization.CultureInfo.InvariantCulture); * double temperature = double.Parse(values[1], System.Globalization.CultureInfo.InvariantCulture); * double imageAvg = double.Parse(values[2], System.Globalization.CultureInfo.InvariantCulture); * DateTimeOffset datetime = DateTimeOffset.Parse(values[3], System.Globalization.CultureInfo.InvariantCulture); * * calibrationParameters.AddTemp(exposure, temperature, imageAvg, datetime); * } * } * }*/ { //string fileName = "008000-440-009"; // "004000-440-008"; //calibrationParameters.badPixels = LoadCalibrationBadPixels(logDirectory, fileName, 16700); /*fileName = "000250-470-004";// "004000-440-008"; * var image = LoadDoubleArrToBinary(Path.Combine( * Path.GetDirectoryName(logDirectory), "CalibrationParameters", * "Bin", fileName + ".bin")); * image = ImageMedianFilterPoints(image, calibrationParameters.badPixels); * //image = ImageRollingBallFilter(400, image); * Imaging.Png16SaveImageData(image, * Path.Combine( * Path.GetDirectoryName(logDirectory), "CalibrationParameters", * "Png"), fileName + "-f.png");*/ } var binDirectory = Path.Combine(parametersPath, "Bin"); if (Directory.Exists(binDirectory)) { var imagesFileNames = Directory.EnumerateFiles( binDirectory, "*.bin", SearchOption.TopDirectoryOnly); foreach (var imagesFileName in imagesFileNames) { var image = LoadDoubleArrToBinary(imagesFileName, badPixels); //TODO should be uncommented //image = Centice.Util.ImageUtils.ImageMedianFilterPoints(image, calibrationParameters.badPixels); var values = Path.GetFileNameWithoutExtension(imagesFileName).Split(new char[] { '-' }); double exposure = int.Parse(values[0]) / 1000d; double temperature = int.Parse(values[1]) / 10d; int weight = int.Parse(values[2]); calibrationParameters.AddImage(exposure, temperature, image, weight); } } //return calibrationParameters; }
public static void SaveCalibrationParameters(string parametersPath, CalibrationParameters calibrationParameters) { string parametersFile = Path.Combine(parametersPath, "Parameters.xml"); //string parametersString = ""; //parametersString = XmlSerializationUtil.ToXml(calibrationParameters); ///File.WriteAllText(parametersFile, parametersString); string badPixelsFile = Path.Combine(parametersPath, "BadPixels.csv"); string badPixelsString = ""; foreach (var p in calibrationParameters.badPixels) { badPixelsString += string.Format( System.Globalization.CultureInfo.InvariantCulture, "{0};{1}", // exposure, temperature, avg, date p.Item1.ToString(System.Globalization.CultureInfo.InvariantCulture), p.Item2.ToString(System.Globalization.CultureInfo.InvariantCulture) ) + Environment.NewLine; } File.WriteAllText(badPixelsFile, badPixelsString); if (calibrationParameters.tempCalib != null) { string exposuresFile = Path.Combine(parametersPath, "ExpusuresDark.csv"); string exposuresString = ""; foreach (var p in calibrationParameters.tempCalib) { foreach (var q in p.Value) { foreach (var r in q.Value) { exposuresString += string.Format( System.Globalization.CultureInfo.InvariantCulture, "{0};{1};{2};{3}", // exposure, temperature, avg, date p.Key.ToString(System.Globalization.CultureInfo.InvariantCulture), q.Key.ToString(System.Globalization.CultureInfo.InvariantCulture), r.Item1.ToString(System.Globalization.CultureInfo.InvariantCulture), r.Item2.ToString("o", System.Globalization.CultureInfo.InvariantCulture) ) + Environment.NewLine; } } } File.WriteAllText(exposuresFile, exposuresString); } var pngDirectory = Path.Combine(parametersPath, "Png"); var binDirectory = Path.Combine(parametersPath, "Bin"); if (Directory.Exists(pngDirectory)) { Directory.Delete(pngDirectory, true); } if (Directory.Exists(binDirectory)) { Directory.Delete(binDirectory, true); } foreach (var dic in calibrationParameters.tempImages) { foreach (var img in dic.Value) { var exposure = dic.Key; var temperature = img.Key; var image = img.Value.Item1; var weight = img.Value.Item2; string exposureStr = exposure.ToString("000.000", System.Globalization.CultureInfo.InvariantCulture).Replace(".", ""); string temperatureStr = temperature.ToString("00.0", System.Globalization.CultureInfo.InvariantCulture).Replace(".", ""); string weightStr = weight.ToString("000", System.Globalization.CultureInfo.InvariantCulture).Replace(".", ""); var fileNameWithoutExtension = exposureStr + "-" + temperatureStr + "-" + weightStr; //TODO should be uncommented //Imaging.Png16SaveImageData(image, // pngDirectory, // fileNameWithoutExtension + ".png" //); SaveDoubleArrToBinary( Path.Combine(binDirectory, fileNameWithoutExtension + ".bin"), image); } } }
public System.Collections.Generic.List <Tuple <int, int> > GetBadPixels() { var calibrationParameters = new CalibrationParameters(); return(calibrationParameters.badPixels); }