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 }); }
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 }); }
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)); }
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 }); }