private StereoImage <Bgr, byte> RemapImage(StereoImage <Bgr, byte> stereoImage) { StereoImage <Bgr, byte> copy = stereoImage.Copy(); StereoCalibration.RemapStereoImage(copy, _viewModel.CalibrationResult); return(copy); }
private void OpenClick(object sender, RoutedEventArgs e) { var infos = Controller.LoadStereoImageFileInfos(); if (infos != null) { Model.Image = StereoImage <Bgr, byte> .Load(infos.First()); } }
private void DrawImage(StereoImage <Bgr, byte> image) { SourceImage.ViewModel.Image = image; if (ResultImage.Visibility == Visibility.Visible) { StereoImage <Bgr, byte> calibratedImage = RemapImage(image); ResultImage.ViewModel.Image = calibratedImage; } }
private static StereoImage ProcessPair(string path1, string path2, string name) { var imageData = StereoscopyVR.ImageApp.Program.ProcessPair(path1, path2, name); var post = new StereoImage(default(Uri), default(Uri), name, name, DateTime.Now); post.W = imageData.Width; post.H = imageData.Height; return(post); }
private static async Task DownloadAsync(StereoImage post, string filePath) { using (var client = new HttpClient()) { var request = new HttpRequestMessage(HttpMethod.Get, post.ImageUrl); using (var response = await client.SendAsync(request, new CancellationToken())) using (var fileStream = new FileStream(filePath, FileMode.Create)) { var dataStream = await response.Content.ReadAsStreamAsync(); await dataStream.CopyToAsync(fileStream); } } }
private void ProcessImages(object sender, EventArgs e) { if (Controller.CameraIsEnabled()) { StereoImage <Bgr, byte> stereoImage = Model.StereoCamera.GetStereoImage(); if (_viewModel.Mode != CalibrationMode.ShowNotCalibrated) { CalibrationCorners corners = StereoCalibration.FindChessboardCorners(stereoImage, _viewModel.PatternSize); if (corners != null) { StereoCalibration.DrawChessboardCorners(stereoImage, corners); } DrawImage(stereoImage); if (_viewModel.Mode == CalibrationMode.CollectingSamples && corners != null) { CollectedCount.Content = string.Format("Collected: {0}/{1}", _viewModel.Samples.Count, _viewModel.Count); if (_viewModel.AllowSaveCorners) { _viewModel.Samples.Add(new CalibrationSample(stereoImage, corners)); _viewModel.InvalidateSamples = true; if (_viewModel.Count == _viewModel.Samples.Count) { CollectedCount.Content = string.Empty; SetCameraWindowMode(CalibrationMode.ReadyCalibrating); } SampleList.Items.Refresh(); } } } else { DrawImage(stereoImage); } } }
public CalibrationSample(StereoImage <Bgr, byte> image, CalibrationCorners corners) { StereoImage = image; Corners = corners; IsCornersInitialized = true; }
public CalibrationSample(StereoImageFileInfo fileInfo) { StereoImage = StereoImage <Bgr, byte> .Load(fileInfo); }
public static void RemapStereoImage(StereoImage<Bgr, byte> image, CalibrationStereoResult calibrationStereoResult) { Matrix<float> mapX; Matrix<float> mapY; InitUndistortRectifyMap( calibrationStereoResult.Camera1Result, calibrationStereoResult.Settings.ImageSize, out mapX, out mapY); image.LeftImage = Remap(image.LeftImage, mapX, mapY); InitUndistortRectifyMap( calibrationStereoResult.Camera2Result, calibrationStereoResult.Settings.ImageSize, out mapX, out mapY); image.RightImage = Remap(image.RightImage, mapX, mapY); }
public static CalibrationCorners FindChessboardCorners(StereoImage<Bgr, byte> stereoImage, Size patternSize) { var grayStereoImage = stereoImage.Convert<Gray, byte>(); var leftCorners = FindChessboardCorners(grayStereoImage.LeftImage, patternSize); var rightCorners = FindChessboardCorners(grayStereoImage.RightImage, patternSize); if (leftCorners != null && rightCorners != null) return new CalibrationCorners(leftCorners, rightCorners); return null; }
public static StereoImage<Bgr, byte> DrawChessboardCorners(StereoImage<Bgr, byte> stereoImage, CalibrationCorners corners) { var colors = new Bgr[corners.LeftCorners.Length]; var random = new Random(); for (var i = 0; i < colors.Length; ++i) { colors[i] = new Bgr(random.Next(0, 255), random.Next(0, 255), random.Next(0, 255)); } DrawChessboardCorners(stereoImage.LeftImage, corners.LeftCorners, colors); DrawChessboardCorners(stereoImage.RightImage, corners.RightCorners, colors); return stereoImage; }
public CalibrationSample(StereoImage<Bgr, byte> image, CalibrationCorners corners) { StereoImage = image; Corners = corners; IsCornersInitialized = true; }
private void ProcessImages(object sender, EventArgs e) { StereoImage <Bgr, byte> image = null; if (Model.Mode == SourceMode.Camera) { if (Controller.CameraIsEnabled()) { //image = Controller.GeatedStereoImage(); } } else { if (Model.Image != null) { image = Model.Image; } } if (image == null) { return; } SourceImage.ViewModel.Image = image; var temp = new StereoImage <Bgr, byte>(); if (ResultImage.ViewModel.ShowLeft) { var model = (StereoSgbmModel)_viewModel.SgbmModel.Clone(); model.Image1 = image.LeftImage.Convert <Gray, byte>(); model.Image2 = image.RightImage.Convert <Gray, byte>(); var map = Stereo.Compute(model); var test = map.Convert <Bgr, byte>(); CvInvoke.ApplyColorMap(test, test, ColorMapType.Rainbow); temp.LeftImage = test; test = test.SmoothGaussian(15); temp.RightImage = test; } if (ResultImage.ViewModel.ShowRight) { var model = (OpticalFlowModel)_viewModel.FlowModel.Clone(); model.Image1 = image.LeftImage.Convert <Gray, byte>(); model.Image2 = image.RightImage.Convert <Gray, byte>(); var map = OpticalFlow.Compute(model); temp.RightImage = map.Convert <Bgr, byte>(); if (temp.LeftImage == null) { temp.LeftImage = temp.RightImage; } } ResultImage.ViewModel.Image = temp.Convert <Bgr, byte>(); if (_viewModel.SaveImage) { if (_viewModel.AllowGrabImage) { _viewModel.Images.Add(image); ImageListBox.Items.Refresh(); } if (_viewModel.AllowSaveImages) { Controller.SaveImages(_viewModel.Images, DateTime.Now.Ticks.ToString()); _viewModel.Images.Clear(); ImageListBox.Items.Refresh(); } } }
private StereoImage<Bgr, byte> RemapImage(StereoImage<Bgr, byte> stereoImage) { StereoImage<Bgr, byte> copy = stereoImage.Copy(); StereoCalibration.RemapStereoImage(copy, _viewModel.CalibrationResult); return copy; }
private void DrawImage(StereoImage<Bgr, byte> image) { SourceImage.ViewModel.Image = image; if (ResultImage.Visibility == Visibility.Visible) { StereoImage<Bgr, byte> calibratedImage = RemapImage(image); ResultImage.ViewModel.Image = calibratedImage; } }
private void ProcessImages(object sender, EventArgs e) { StereoImage<Bgr, byte> image = null; if (Model.Mode == SourceMode.Camera) { if (Controller.CameraIsEnabled()) { //image = Controller.GeatedStereoImage(); } } else { if (Model.Image != null) { image = Model.Image; } } if (image == null) return; SourceImage.ViewModel.Image = image; var temp = new StereoImage<Bgr, byte>(); if (ResultImage.ViewModel.ShowLeft) { var model = (StereoSgbmModel) _viewModel.SgbmModel.Clone(); model.Image1 = image.LeftImage.Convert<Gray, byte>(); model.Image2 = image.RightImage.Convert<Gray, byte>(); var map = Stereo.Compute(model); var test = map.Convert<Bgr, byte>(); CvInvoke.ApplyColorMap(test, test, ColorMapType.Rainbow); temp.LeftImage = test; test = test.SmoothGaussian(15); temp.RightImage = test; } if (ResultImage.ViewModel.ShowRight) { var model = (OpticalFlowModel)_viewModel.FlowModel.Clone(); model.Image1 = image.LeftImage.Convert<Gray, byte>(); model.Image2 = image.RightImage.Convert<Gray, byte>(); var map = OpticalFlow.Compute(model); temp.RightImage = map.Convert<Bgr, byte>(); if (temp.LeftImage == null) temp.LeftImage = temp.RightImage; } ResultImage.ViewModel.Image = temp.Convert<Bgr, byte>(); if (_viewModel.SaveImage) { if (_viewModel.AllowGrabImage) { _viewModel.Images.Add(image); ImageListBox.Items.Refresh(); } if (_viewModel.AllowSaveImages) { Controller.SaveImages(_viewModel.Images, DateTime.Now.Ticks.ToString()); _viewModel.Images.Clear(); ImageListBox.Items.Refresh(); } } }