Пример #1
0
 public LargeDiamond(PixelBlock referentBlock, PixelBlock centerBlock, Image image) : base(referentBlock, centerBlock)
 {
     Blocks = new List <PixelBlock> {
         CenterBlock
     };
     for (var i = -2; i < 3; i++)
     {
         for (var j = -2; j < 3; j++)
         {
             //Checks if distances is two and if block is inside search window.
             if (Math.Abs(i) + Math.Abs(j) != 2)
             {
                 continue;
             }
             var point = new Point(CenterBlock.Position.X + i * MedicalDiamondSearchSettings.BlockSize, CenterBlock.Position.Y + j * MedicalDiamondSearchSettings.BlockSize);
             if (referentBlock.IsInSearchWindow(point, MedicalDiamondSearchSettings.SearchParameterP,
                                                MedicalDiamondSearchSettings.BlockSize, image.Width, image.Height))
             {
                 Blocks.Add(image.Blocks[point]);
             }
         }
     }
 }
Пример #2
0
 /// <summary>
 /// Calculates vector between two blocks.
 /// </summary>
 /// <param name="block"></param>
 /// <returns></returns>
 public Vector GetVector(PixelBlock block) => new Vector(Position, block.Position);
Пример #3
0
 /// <summary>
 /// Cots function for calculating mean squared error.
 /// </summary>
 /// <param name="block"></param>
 /// <returns></returns>
 public double BlockDistortion(PixelBlock block) => Pixels.Select((p, i) => new { p, i }).Sum(pi =>
 {
     var diff = pi.p - block._pixels[pi.i];
     return(diff * diff);
 }) / Pixels.Count;
Пример #4
0
 public bool IsCenterBlock(PixelBlock block) => CenterBlock.Equals(block);
Пример #5
0
 protected Diamond(PixelBlock referentBlock, PixelBlock centerBlock)
 {
     ReferentBlock = referentBlock;
     CenterBlock   = centerBlock;
 }