예제 #1
0
 public void Build(IWorkflowBuilder <GeostationaryWorkflowData> builder)
 {
     builder
     .Initialise()
     .CreateActivity()
     .InitialiseProgressBar(data => data.Activity !.Registrations.Count + 1)
     .If(data => data.Activity !.Registrations.Any())
     .Do(branch => branch
         .ForEach(data => data.Activity !.Registrations, _ => false)
         .Do(registration => registration
             .SetWorkflowRegistration()
             .ShouldWriteSingle()
             .Branch(true, builder.CreateBranch()
                     .LoadImageSingle()
                     .NormaliseImage()
                     .EqualiseOverlayHistogram()
                     .RenderOverlay()
                     .RenderUnderlay()
                     .ComposeOverlay()
                     .ColourCorrect()
                     .ApplyHaze()
                     .SaveImage()
                     )
             )
         )
     .LogCompletion();
 }
예제 #2
0
 public void Build(IWorkflowBuilder <EquirectangularWorkflowData> builder)
 {
     builder
     .Initialise()
     .RegisterImages()
     .InitialiseProgressBar(data => data.Activities.Count)
     .If(data => data.Activities.Any())
     .Do(branch => branch
         .ForEach(data => data.Activities, _ => false)
         .Do(activityStep => activityStep
             .SetWorkflowActivity()
             .CalculateVisibleRange()
             .CalculateGlobalOffset()
             .ForEach(data => data.Activity !.Registrations, _ => false)    // Single registration
             .Do(registration => registration
                 .SetWorkflowRegistration()
                 .ShouldWriteSingle()
                 .Branch(true, builder
                         .CreateBranch()
                         .LoadImageSingle()
                         .NormaliseImage()
                         .ToEquirectangular()
                         .StitchImages()
                         .GetCropBounds()
                         .RenderUnderlay()
                         .ColourCorrect()
                         .CropImage()
                         .SaveImage()
                         )
                 )
             )
         )
     .LogCompletion();
 }
예제 #3
0
 public void Build(IWorkflowBuilder <GeostationaryTimelapseWorkflowData> builder)
 {
     builder
     .Initialise()
     .PrepareTimeIntervals()
     .InitialiseProgressBar(data => data.TimeIntervals.Count)
     .If(data => data.TimeIntervals.Any())
     .Do(branch => branch
         .ForEach(data => data.TimeIntervals, options => false)
         .Do(step => step
             .SetTargetTimestamp()
             .SetTargetLongitude()
             .CreateActivities()
             .ShouldWrite(data => $" / {Angle.FromRadians(data.Longitude!.Value).Degrees:F3}° longitude")
             .Branch(true, step
                     .CreateBranch()
                     .InitialiseImageProgressBar(data => data.Activity !.Registrations.Count + 1)
                     .CalculateVisibleRange()
                     .CalculateGlobalOffset()
                     .ForEach(data => data.Activity !.Registrations, _ => false)
                     .Do(registration => registration
                         .SetWorkflowRegistration()
                         .LoadImage(data => data.ImageProgressBar)
                         .NormaliseImage()
                         .ToEquirectangular()
                         )
                     .StitchImages()
                     .EqualiseOverlayHistogram(data => data.TargetImage)
                     .RenderOverlay(data => data.TargetImage)
                     .RenderUnderlay()
                     .ComposeOverlay()
                     .ToGeostationary(data => data.Longitude)
                     .ColourCorrect()
                     .ApplyHaze()
                     .SaveStitchedImage(data => data.ImageProgressBar)
                     )
             )
         )
     .LogCompletion();
 }
예제 #4
0
 public void Build(IWorkflowBuilder <TimelapseWorkflowData> builder)
 {
     builder
     .Initialise()
     .PrepareTimeIntervals()
     .InitialiseProgressBar(data => data.TimeIntervals.Count)
     .If(data => data.TimeIntervals.Any())
     .Do(branch => branch
         .ForEach(data => data.TimeIntervals, options => false)
         .Do(step => step
             .SetTargetTimestamp()
             .CreateActivities()
             .ShouldWrite()
             .Branch(true, step
                     .CreateBranch()
                     .InitialiseImageProgressBar(data => data.Activity !.Registrations.Count + 1)
                     .GetVisibleRange()
                     .GetGlobalOffset()
                     .ForEach(data => data.Activity !.Registrations, _ => false)
                     .Do(registration => registration
                         .SetWorkflowRegistration()
                         .LoadImage(data => data.ImageProgressBar)
                         .NormaliseImage()
                         .ToEquirectangular()
                         )
                     .StitchImages()
                     .RenderOverlay(data => data.TargetImage)
                     .GetCropBounds()
                     .RenderUnderlay()
                     .ComposeOverlay()
                     .ColourCorrect()
                     .OffsetImage()
                     .CropImage()
                     .SaveStitchedImage(data => data.ImageProgressBar)
                     )
             )
         )
     .LogCompletion();
 }