Esempio n. 1
0
        public async Task <SkySurveyImage> GetImage(string name, Coordinates coordinates, double fieldOfView, int width,
                                                    int height, CancellationToken ct, IProgress <int> progress)
        {
            fieldOfView = Math.Round(fieldOfView, 2);

            var request = new Http.HttpDownloadImageRequest(
                Url,
                2000,
                2000,
                Astrometry.Astrometry.ArcminToDegree(fieldOfView),
                coordinates.RADegrees,
                coordinates.Dec
                );
            var image = await request.Request(ct, progress);

            if (image.DpiX != 96)
            {
                image = ConvertBitmapTo96DPI(image);
            }
            image.Freeze();

            return(new SkySurveyImage()
            {
                Image = image,
                Name = name,
                Source = nameof(Hips2FitsSurvey),
                FoVHeight = fieldOfView,
                FoVWidth = fieldOfView,
                Rotation = 0,
                Coordinates = coordinates
            });
        }
Esempio n. 2
0
        public async Task <SkySurveyImage> GetImage(string name, Coordinates coordinates, double fieldOfView, int width,
                                                    int height, CancellationToken ct, IProgress <int> progress)
        {
            var arcSecPerPixel    = 0.4;
            var targetFoVInArcSec = Astrometry.Astrometry.ArcminToArcsec(fieldOfView);
            var pixels            = Math.Min(targetFoVInArcSec / arcSecPerPixel, 2048);

            if (pixels == 2048)
            {
                arcSecPerPixel = targetFoVInArcSec / 2048;
            }

            var request = new Http.HttpDownloadImageRequest(
                Url,
                coordinates.RADegrees,
                coordinates.Dec,
                pixels,
                pixels,
                arcSecPerPixel);
            var image = await request.Request(ct, progress);

            image.Freeze();
            return(new SkySurveyImage()
            {
                Name = name,
                Source = nameof(SkyServerSkySurvey),
                Image = image,
                FoVHeight = fieldOfView,
                FoVWidth = fieldOfView,
                Rotation = 0,
                Coordinates = coordinates
            });
        }
Esempio n. 3
0
        protected override Task <BitmapSource> GetSingleImage(Coordinates coordinates, double fovW, double fovH, CancellationToken ct, int width, int height)
        {
            var request = new Http.HttpDownloadImageRequest(
                Url,
                coordinates.RADegrees,
                coordinates.Dec,
                fovW,
                fovH
                );

            return(request.Request(ct));
        }
Esempio n. 4
0
        public async Task <SkySurveyImage> GetImage(string name, Coordinates coordinates, double fieldOfView, int width,
                                                    int height, CancellationToken ct, IProgress <int> progress)
        {
            var arcSecPerPixel = 2;

            fieldOfView = Math.Round(fieldOfView, 2);
            var pixels = Math.Ceiling(Math.Min(Astrometry.Astrometry.ArcminToArcsec(fieldOfView) / arcSecPerPixel, 5000));

            var request = new Http.HttpDownloadImageRequest(
                Url,
                coordinates.RADegrees,
                coordinates.Dec,
                Astrometry.Astrometry.ArcminToDegree(fieldOfView),
                pixels
                );
            var image = await request.Request(ct, progress);

            image.Freeze();

            using (var bmp = NINA.Utility.ImageAnalysis.ImageUtility.BitmapFromSource(image, System.Drawing.Imaging.PixelFormat.Format8bppIndexed)) {
                bmp.Palette = ImageAnalysis.ImageUtility.GetGrayScalePalette();
                ImageStatistics stats = new ImageStatistics(bmp);
                Histogram       gray  = stats.GrayWithoutBlack;
                new Accord.Imaging.Filters.BrightnessCorrection(Math.Min(115 - gray.Median, 0)).ApplyInPlace(bmp);
                new Accord.Imaging.Filters.ContrastCorrection((int)Math.Round(115 - gray.StdDev * 2)).ApplyInPlace(bmp);
                image = ImageAnalysis.ImageUtility.ConvertBitmap(bmp, System.Windows.Media.PixelFormats.Gray8);
                image.Freeze();
            }

            return(new SkySurveyImage()
            {
                Image = image,
                Name = name,
                Source = nameof(NASASkySurvey),
                FoVHeight = fieldOfView,
                FoVWidth = fieldOfView,
                Rotation = 0,
                Coordinates = coordinates
            });
        }