public DemoImageFile(HSIImage image, Form1 form, string p_xi_devive_sn) { exp_time_image = form.exp_time; filterRangeStart = form.filterRangeStart; filterRangeEnd = form.filterRangeEnd; maximizeMode = form.maximizeMode; statusParallelProcessing = form.statusParallelProcessing; compareSpectraMode = form.compareSpectraMode; pictureStretchMode = form.pictureStretchMode; derivationMode = form.derivationMode; distanceMode = form.distanceMode; resolutionMode = form.resolutionMode; imageViewMode = form.imageViewMode; numFramesToAvg = form.numFramesToAvg; xi_devive_sn = p_xi_devive_sn; sensor_height = image.sensor_height; sensor_width = image.sensor_width; bands = image.bands; MAX_MATERIALS = image.MAX_MATERIALS; exp_time_white = image.exp_time_white; measured = image.measured; darkMeasured = image.darkMeasured; whiteMeasured = image.whiteMeasured; numMaterialsToUse = image.numMaterialsToUse; whiteImageRAW = new int[sensor_height, sensor_width]; darkImageRAW = new int[sensor_height, sensor_width]; spectrum = new double[MAX_MATERIALS + 1, bands]; for (int i = 0; i < sensor_height; i++) { for (int j = 0; j < sensor_width; j++) { int[,] array = darkImageRAW; int num = i; int num2 = j; int num3 = image.darkImageRAW[i, j]; array[num, num2] = num3; int[,] array2 = whiteImageRAW; int num4 = i; int num5 = j; int num6 = image.whiteImageRAW[i, j]; array2[num4, num5] = num6; } } for (int k = 0; k < MAX_MATERIALS + 1; k++) { for (int l = 0; l < bands; l++) { double[,] array3 = spectrum; int num7 = k; int num8 = l; double num9 = image.spectrum[k, l]; array3[num7, num8] = num9; } } modus = 1; dataSet = true; }
public bool setDemoSettings(HSIImage image, Form1 form) { if (modus != 0 || !dataSet) { return(false); } form.exp_time = exp_time_image; form.filterRangeStart = filterRangeStart; form.filterRangeEnd = filterRangeEnd; form.maximizeMode = maximizeMode; form.statusParallelProcessing = statusParallelProcessing; form.compareSpectraMode = compareSpectraMode; form.pictureStretchMode = pictureStretchMode; form.derivationMode = derivationMode; form.distanceMode = distanceMode; form.resolutionMode = resolutionMode; form.imageViewMode = imageViewMode; form.numMaterials = numMaterialsToUse; form.numFramesToAvg = numFramesToAvg; image.exp_time_white = exp_time_white; image.measured = measured; image.darkMeasured = darkMeasured; image.whiteMeasured = whiteMeasured; image.numMaterialsToUse = numMaterialsToUse; for (int i = 0; i < sensor_height; i++) { for (int j = 0; j < sensor_width; j++) { int[,] array = image.darkImageRAW; int num = i; int num2 = j; int num3 = darkImageRAW[i, j]; array[num, num2] = num3; int[,] array2 = image.whiteImageRAW; int num4 = i; int num5 = j; int num6 = whiteImageRAW[i, j]; array2[num4, num5] = num6; } } for (int k = 0; k < MAX_MATERIALS + 1; k++) { for (int l = 0; l < bands; l++) { double[,] array3 = image.spectrum; int num7 = k; int num8 = l; double num9 = spectrum[k, l]; array3[num7, num8] = num9; } } return(true); }
private bool saveHSIcube(HSIImage hsi_image, Bitmap newBitmap, bool useInterpolatedImage) { string arg = ""; string arg2 = ""; string arg3 = ""; int num = 0; int num2 = 0; NumberFormatInfo numberFormatInfo = new NumberFormatInfo(); numberFormatInfo.NumberDecimalSeparator = "."; numberFormatInfo.NumberGroupSeparator = ","; num = form.maximizeActive(); num2 = form.derivationActive(); if (num == 1) { arg2 = "values normalized"; } switch (num2) { case 1: arg3 = "1. derivation"; break; case 2: arg3 = "2. derivation"; break; } switch (xi_cameraModel) { case 308: arg = "LS100-NIR"; break; case 136: arg = "SSM4x4-VIS"; break; case 144: arg = "SSM5x5-NIR"; break; } string text = $"{DateTime.Now:yyyyMMddHHmmss}"; imageFileNameStart = $"{arg}_{xi_device_sn}_{text}"; imageFileName = $"{imageFileDirectory}{imageFileNameStart}.hdr"; try { TextWriter textWriter = new StreamWriter(imageFileName); textWriter.WriteLine("ENVI"); textWriter.WriteLine($"description = {{ XIMEA xiSpec {xi_device_name}, SerNr {xi_device_sn}, Sensor-SN {xi_sensor_sn}"); if (num == 1 || num2 != 0) { textWriter.WriteLine(string.Format("{0}{1}{2}", arg2, (num == 1 && num2 != 0) ? ", " : "", arg3)); } textWriter.WriteLine($"date/time {text} }}"); textWriter.WriteLine("sensor type = IMEC {0}", arg); textWriter.WriteLine("file type = ENVI Standard"); textWriter.WriteLine("header offset = 0"); if (useInterpolatedImage) { textWriter.WriteLine("samples = {0}", hsi_image.width_interpol); textWriter.WriteLine("lines = {0}", hsi_image.height_interpol); } else { textWriter.WriteLine("samples = {0}", hsi_image.width_spatial); textWriter.WriteLine("lines = {0}", hsi_image.height_spatial); } textWriter.WriteLine("bands = {0}", HSIParam.filter_nr_bands); textWriter.WriteLine("data type = 12"); textWriter.WriteLine("interleave = bsq"); textWriter.WriteLine("byte order = 0"); textWriter.WriteLine("wavelength = {"); for (int i = 0; i < HSIParam.filter_nr_bands; i++) { textWriter.WriteLine(string.Format(" {0}{1}", HSIParam.array_wavelengths[HSIParam.spectrumPos_2_BandNr[i]].ToString(numberFormatInfo), (i >= HSIParam.filter_nr_bands - 1) ? "}" : ",")); } textWriter.Close(); imageFileName = $"{imageFileDirectory}{imageFileNameStart}.bsq"; FileStream fileStream = new FileStream(imageFileName, FileMode.CreateNew); BinaryWriter binaryWriter = new BinaryWriter(fileStream); hsi_image.BSQwriteHSIImage(binaryWriter, useInterpolatedImage); binaryWriter.Close(); fileStream.Close(); imageFileName = $"{imageFileDirectory}{imageFileNameStart}.tif"; SaveTiff16(newBitmap, imageFileName); if (ausgabe != null) { ausgabe.AppendText($"HDR-file {imageFileNameStart} written\n"); ausgabe.ScrollToCaret(); } } catch { } return(true); }