Esempio n. 1
0
        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
                }
            }
        }
Esempio n. 2
0
        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);
            }
        }
Esempio n. 3
0
        //=================== 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;
        }