public void TestEquals() { var a = new Mds(1, 2); var b = new Mds(1, 2); Assert.True(a.Equals(b), "Equal MDS:s dont match"); }
public void Create() { var mds = new Mds(1, 2); Assert.Equal(1, mds.incoming); Assert.Equal(0, mds.content.Length); Assert.Equal(2, mds.outgoing); }
public void Invert() { var mds = new Mds(1, 5, new [] { 2, 3, 4 }).Invert(); Assert.Equal(new [] { -4, -3, -2 }, mds.content); Assert.Equal(-5, mds.incoming); Assert.Equal(-1, mds.outgoing); }
public static async Task <bool> performWrite(Mds mdsToWrite) { try { ItemResponse <Mds> response = await _container.UpsertItemAsync(mdsToWrite, new PartitionKey(mdsToWrite.id)); } catch (Exception e) { return(false); } return(true); }
public static async Task <string> RunOrchestrator( [OrchestrationTrigger] IDurableOrchestrationContext context) { EventSchema eventSchema = context.GetInput <EventSchema>(); var StoreId = new EntityId("StoreEntity", eventSchema.storeId); var storeProxy = context.CreateEntityProxy <IStoreEntity>(StoreId); // One-way signal to the entity - does not await a response storeProxy.updateInventoryCount(eventSchema); var returnItem = await storeProxy.getStoreEntityItem(eventSchema.id); if (returnItem != null) { Mds mds = new Mds() { id = eventSchema.id , storeId = eventSchema.storeId , inventoryCount = returnItem.InventoryCount , productName = returnItem.ProductName , lastShipmentTimestamp = returnItem.LastShipmentTimestamp , lastUpdateTimestamp = returnItem.LastUpdateTimestamp , description = returnItem.Description , upc = returnItem.Upc }; var returnValue = await context.CallActivityAsync <bool>("WriteToMds", mds); //to do handle the returnValue } // Two-way call to the entity which returns a value - awaits the response //int currentValue = await storeProxy.Get().ConfigureAwait(false); return("Task"); }
static void Main(string[] args) { if (args.Length != 6) { System.Console.WriteLine("Insufficient number of arguments."); return; } var refrentImage = new System.Drawing.Bitmap(args[0]); var currentImage = new System.Drawing.Bitmap(args[1]); MedicalDiamondSearchSettings.BlockSize = int.Parse(args[2]); MedicalDiamondSearchSettings.SearchParameterP = int.Parse(args[3]); MedicalDiamondSearchSettings.InitialTreshold = double.Parse(args[4]); MedicalDiamondSearchSettings.NumberOfThreads = int.Parse(args[5]); var totalStopwatch = Stopwatch.StartNew(); System.Console.WriteLine("Loading images..."); var resultImage = new Bitmap(refrentImage.Width, refrentImage.Height, PixelFormat.Format32bppRgb); Image cImage = null; var cImageTask = Task.Run(() => { cImage = new Image(currentImage.GetPixels(), currentImage.Width, currentImage.Height); cImage.GenerateBlocks(); }); var rImage = new Image(refrentImage.GetPixels(), refrentImage.Width, refrentImage.Height); rImage.GenerateBlocks(); cImageTask.Wait(); IDictionary <Point, Vector> result = null; System.Console.WriteLine("Executing Medical Diamond Search..."); var stopwatch = Stopwatch.StartNew(); result = Mds.CalculateVectors(rImage, cImage); stopwatch.Stop(); System.Console.WriteLine("Calculating output image..."); var errorCount = 0; foreach (var vector in result) { //Counts in only changed blocks. if (vector.Value.X != 0 || vector.Value.Y != 0) { System.Console.WriteLine( $"Block({vector.Key.X},{vector.Key.Y}), vector({vector.Value.X},{vector.Value.Y})"); foreach (var pixel in rImage.Blocks[vector.Key].Pixels) { if (cImage.Pixels[ new System.Drawing.Point(pixel.Position.X + vector.Value.X, pixel.Position.Y + vector.Value.Y)].Color != pixel.Color) { errorCount++; } resultImage.SetPixel(pixel.Position.X + vector.Value.X, pixel.Position.Y + vector.Value.Y, pixel.Color); refrentImage.SetPixel(pixel.Position.X + vector.Value.X, pixel.Position.Y + vector.Value.Y, pixel.Color); } } } System.Console.WriteLine("Saving output image..."); if (!Directory.Exists("output")) { Directory.CreateDirectory("output"); } var output = $"output/{Guid.NewGuid().ToString()}.png"; var output1 = $"output/{Guid.NewGuid().ToString()}.png"; resultImage.Save(output); refrentImage.Save(output1); var motionError = (decimal)errorCount / (result.Count * MedicalDiamondSearchSettings.BlockSize * MedicalDiamondSearchSettings.BlockSize); System.Console.WriteLine("Calculating relative error..."); var error = refrentImage.Compare(currentImage); totalStopwatch.Stop(); System.Console.WriteLine($"Time elapsed: {stopwatch.Elapsed.TotalSeconds} seconds"); System.Console.WriteLine($"Total time elapsed: {totalStopwatch.Elapsed.TotalSeconds} seconds"); System.Console.WriteLine($"Motion relative error: {motionError.ToString("P")}"); System.Console.WriteLine($"Output relative error: {error.ToString("P")}"); }
public static async Task <bool> WriteToMds([ActivityTrigger] IDurableActivityContext context) { Mds mds = context.GetInput <Mds>(); return(await MdsWriter.performWrite(mds)); }