private void openToolStripMenuItem1_Click(object sender, EventArgs e) { using (OpenFileDialog dlg = new OpenFileDialog()) { dlg.Title = "Open Image"; dlg.Filter = "jpg files (*.fits)|*.fits"; if (dlg.ShowDialog() == DialogResult.OK) { this.objemgucv = new EmguCv(dlg.FileName); this.iplImage = this.objemgucv.ImageJPG; imageBox1.Image = this.iplImage; imageType = new SRSLib.ImageLib.ImageType(); SRSLib.ImageLib.OpenAnyImageType(dlg.FileName, ref imageType); //file fit path MatchLib.SetCatalogLocation(catalogpath); centerRa2000GuessRads = new MatchLib.PlateListType() { Px = imageType.N1, Py = imageType.N2, XSize = (double)imageType.N1 * 1 / 206264.806, YSize = (double)imageType.N2 * 1 / 206264.806, HaveStartingCoords = false }; MatchLib.ExtractStars(ref imageType, ref centerRa2000GuessRads); MatchLib.PlateMatch(ref centerRa2000GuessRads); button1.Enabled = true; //MatchLib.PlateMatch(ref centerRa2000GuessRads); //MatchLib.PlateMatchImage(ref imageType, ref centerRa2000GuessRads); // Create a new Bitmap object from the picture file on disk, // and assign that to the PictureBox.Image property } } }
public void Plantwave(Cv imageprocessing) { if (!String.IsNullOrEmpty(catalogpath)) { imageType = new SRSLib.ImageLib.ImageType(); SRSLib.ImageLib.OpenAnyImageType(this.path, ref imageType); //file fit path MatchLib.SetCatalogLocation(catalogpath); centerRa2000GuessRads = new MatchLib.PlateListType() { Px = imageType.N1, Py = imageType.N2, XSize = (double)imageType.N1 * 1 / 206264.806, YSize = (double)imageType.N2 * 1 / 206264.806, HaveStartingCoords = false }; MatchLib.ExtractStars(ref imageType, ref centerRa2000GuessRads); MatchLib.PlateMatch(ref centerRa2000GuessRads); } }
//=================== Ecposure ===================// public void exposeCamera(int hBin, int vBin, int tdi, double exposureTime) { Image <Gray, float> image; Image <Rgb, byte> imageRGB; int ulX, ulY, lrX, lrY; fliCCD.GetVisibleArea(out ulX, out ulY, out lrX, out lrY); int width = lrX - ulX; int height = lrY - ulY; ushort[][] data = new ushort[height][]; fliCCD.SetImageArea(ulX, ulY, lrX, lrY); exposureTime = exposureTime * 1000; fliCCD.SetExposureTime(Convert.ToInt32(exposureTime)); fliCCD.SetHBin(hBin); fliCCD.SetVBin(vBin); fliCCD.SetTDI(tdi); sunPosition(out double sunAltStart, out double sunAzmStart); fliCCD.Expose(); while (!fliCCD.IsDownloadReady()) { Thread.Sleep(100); } for (int y = 0; y < height; y++) { data[y] = new ushort[width]; fliCCD.GrabRow(data[y]); } sunPosition(out double sunAltEnd, out double sunAzmEnd); Matrix <float> matrix = new Matrix <float>(height, width); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { matrix.Data[y, x] = data[y][x]; } } image = matrix.Mat.ToImage <Gray, float>(); //imageBox1.Image = image2; string ADU = Convert.ToString(image.GetAverage()); string[] words = ADU.Split('[', ']'); aDU = Convert.ToDouble(words[1]); string localDate = DateTime.Now.ToString("dd/MM/yyyy_THH':'mm':'ss"); string fileFitsName = "ImageFits/Sun_alt_ " + sunAltStart + "_ADU_" + aDU + ".fits"; addRecord(localDate, Convert.ToString(sunAltStart), Convert.ToString(sunAltEnd), Convert.ToString(sunAzmStart), Convert.ToString(sunAzmEnd), Convert.ToString((exposureTime / 1000)), filterSelect, Convert.ToString(ADU), "dataRecord/info_expose.txt"); //========== write .fits =========// SRSLib.ImageLib.ImageType imageFit = new SRSLib.ImageLib.ImageType(); imageFit.N1 = height; imageFit.N2 = width; imageFit.N3 = 1; imageFit.Simple = true; imageFit.HaveHistogram = true; imageFit.HaveDateTime = true; imageFit.HaveLevels = true; imageFit.XBinning = hBin; imageFit.YBinning = vBin; imageFit.NAxis = 2; imageFit.BScale = 1; imageFit.DateObsStr = Convert.ToString(DateTime.UtcNow); imageFit.HaveDateTime = true; String[] header_fit = new String[50]; imageFit.Header = header_fit; imageFit.BScale = 1; imageFit.Filter = filterSelect; imageFit.DateObsStr = localDate; imageFit.Exposure = (exposureTime / 1000); imageFit.JD = AstroCalculation.AstroLib.GetLocalJD(); RaDec raDec = Sun.GetRaDec(AstroTime.JulianDayUTC(DateTime.Now)); imageFit.DecRad = Convert.ToDouble(raDec.Dec.Rads); imageFit.RARad = Convert.ToDouble(raDec.Ra.Rads); imageFit.ImageType = "Flat Field"; imageFit.Data = matrix.Data; imageFit.Temperature = fliCCD.GetTemperature(); SRSLib.ImageLib.WriteFITS(ref imageFit, fileFitsName, false); //===================================================// //====================== Convert .Fits To .JPG ===========================// String stretchType = comboBox2.Text; strecthImage.GetStrecthType(stretchType, out double lowerPercen, out double upperPercen); Matrix <UInt16> NewImg = strecthImage.ConvertStretchImageU16BitToJPG(matrix.Convert <UInt16>(), lowerPercen, upperPercen); string imageJpg = "imageJPG/Sun_alt_ " + sunAltStart + "_ADU_" + aDU + " .jpg"; NewImg.Save(imageJpg); pictureBox1.Image = Image.FromFile(imageJpg); //=======================================================================// //=========================Plot Graph AllSky=========================// AllskyPlotGraph(out string fileNameAllsky); //===================================================================// //======================Insert Mongo DB ====================// CCD_Mongo cCDMongo = new CCD_Mongo(sunAltStart, sunAltEnd, sunAzmStart, sunAzmEnd, filterSelect, (exposureTime / 1000), aDU, fileFitsName, imageJpg, fileNameAllsky, DateTime.Now); collection.InsertOne(cCDMongo); //==========================================================// NewImg = null; data = null; matrix = null; image = null; textBox14.Text = Convert.ToString(Math.Round(Convert.ToDecimal(aDU), 2)); this.exposureTime = Convert.ToString((exposureTime / 1000)); textBox13.Text = this.exposureTime; }