Exemplo n.º 1
0
        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");
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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");
        }
Exemplo n.º 6
0
        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));
        }