コード例 #1
0
        //筛选出Class 下的Point对应的名义值
        public void ReadTable(ImagePoint imagePointModel)
        {
            if (NominalTable == null)
            {
                return;
            }
            if (imagePointModel.ImagePointArray == null)
            {
                return;
            }

            NominalArray = new List <DM_ModelNominal>();
            DataTableReader reader = new DataTableReader(NominalTable);

            while (reader.Read())
            {
                DM_ModelNominal nominal = new DM_ModelNominal();
                nominal.NominalID = Convert.ToUInt32(reader[0]);
                nominal.PointID   = Convert.ToUInt32(reader[1]);

                foreach (DM_ModelImagePoint item in imagePointModel.ImagePointArray)
                {
                    if (item.PointID == nominal.PointID)
                    {
                        nominal.Nominal       = Convert.ToSingle(reader[2]);
                        nominal.UpTol         = Convert.ToSingle(reader[3]);
                        nominal.LowTol        = Convert.ToSingle(reader[4]);
                        nominal.NominalType   = Convert.ToInt32(reader[8]);
                        nominal.Status        = Convert.ToInt32(reader[9]);
                        nominal.PointDir      = reader[10].ToString();
                        nominal.DirName       = reader[11].ToString();
                        nominal.RelationPoint = reader[12].ToString();
                        NominalArray.Add(nominal);
                    }
                }
            }
        }
コード例 #2
0
        private void AddPointToClosestCluster(ImagePoint point)
        {
            CentroidPoint closestCentroid = ClosestCentroidTo(point);

            _clusters[closestCentroid.ID].AddPoint(point);
        }
コード例 #3
0
ファイル: DrawUC.cs プロジェクト: RD125632/Pictionary
        private void paintPanel_MouseMove(object sender, MouseEventArgs e)
        {
            if(isDrawing == true)
            {
                ImagePoint newPoint = new ImagePoint(new Point(lastPoint.X, lastPoint.Y), new Point(e.X, e.Y), myPen.Color);
                parentForm.SendImage(newPoint);
            }

            lastPoint.X = e.X;
            lastPoint.Y = e.Y;
        }
コード例 #4
0
        private void Zoom_KeyDown(object sender, KeyEventArgs e)
        {
            if (this.ViewModel.Project == null)
            {
                return;
            }

            if (e.Key == Key.LeftShift || e.Key == Key.RightShift)
            {
                foreach (ElementVM element in this.ViewModel.Project.Selected)
                {
                    element.Opacity = 0.25;
                }
            }

            if (e.Key == Key.Up || e.Key == Key.Down || e.Key == Key.Left || e.Key == Key.Right)
            {
                if (!this.moving && this.ViewModel.Project.Selected.Count > 0)
                {
                    this.moving = true;
                    this.origin = new ImagePoint(this.ViewModel.Project.Selected[0].X, this.ViewModel.Project.Selected[0].Y);
                    this.ViewModel.DragStart(this.origin);

                    if (Keyboard.IsKeyDown(Key.Up))
                    {
                        this.change.Y--;
                    }

                    if (Keyboard.IsKeyDown(Key.Down))
                    {
                        this.change.Y++;
                    }

                    if (Keyboard.IsKeyDown(Key.Left))
                    {
                        this.change.X--;
                    }

                    if (Keyboard.IsKeyDown(Key.Right))
                    {
                        this.change.X++;
                    }

                    this.ViewModel.DragUpdate(this.origin + this.change);
                }
                else if (this.moving)
                {
                    if (Keyboard.IsKeyDown(Key.Up))
                    {
                        this.change.Y--;
                    }

                    if (Keyboard.IsKeyDown(Key.Down))
                    {
                        this.change.Y++;
                    }

                    if (Keyboard.IsKeyDown(Key.Left))
                    {
                        this.change.X--;
                    }

                    if (Keyboard.IsKeyDown(Key.Right))
                    {
                        this.change.X++;
                    }

                    this.ViewModel.DragUpdate(this.origin + this.change);
                }
            }
        }
コード例 #5
0
 public DragSelect(ImagePoint start)
 {
     this.start = start;
 }
コード例 #6
0
 public byte[] Map(ImagePoint point)
 {
     return(new byte[] { (byte)(point.X & (byte)0xFF) });
 }
コード例 #7
0
        private void InitializeViews()
        {
            source_image_panel = new SourceImagePanel();
            IImageD_Provider main_image = source_image_panel.GetImageD_Provider(0);
            IImageD_Provider side_image = source_image_panel.GetImageD_Provider(1);
            IPointsProvider <PointsProviders.MSOP_DescriptorVector.Descriptor> main_feature_points_provider = new PointsProviders.MSOP_DescriptorVector(new PointsProviders.HarrisCornerDetector(main_image), new MatrixProviders.GrayScale(main_image));
            IPointsProvider <PointsProviders.MSOP_DescriptorVector.Descriptor> side_feature_points_provider = new PointsProviders.MSOP_DescriptorVector(new PointsProviders.HarrisCornerDetector(side_image), new MatrixProviders.GrayScale(side_image));
            IImageD_Provider mp_merge_refined = new ImageD_Providers.PlotPoints(
                new ImageD_Providers.GrayImageD(new MatrixProviders.GrayScale(main_image)),
                main_feature_points_provider
                );

            Controls.PointSelect main_features = new Controls.PointSelect(main_image, main_feature_points_provider);
            Controls.PointSelect side_features = new Controls.PointSelect(side_image, side_feature_points_provider);
            main_features.PointSelected += selected_point =>
            {
                var        main_descriptor = (selected_point as ImagePoint <PointsProviders.MSOP_DescriptorVector.Descriptor>).content;
                ImagePoint nearst = null;
                double     first_min = double.MaxValue, second_min = double.MaxValue;
                foreach (var p in side_features.points)
                {
                    double dis = main_descriptor.difference((p as ImagePoint <PointsProviders.MSOP_DescriptorVector.Descriptor>).content);
                    if (dis < first_min)
                    {
                        second_min = first_min;
                        first_min  = dis;
                        nearst     = p;
                    }
                    else if (dis < second_min)
                    {
                        second_min = dis;
                    }
                }
                if (first_min / second_min < 0.8)
                {
                    LogPanel.Log($"nearst feature diff = {main_descriptor.difference((nearst as ImagePoint<PointsProviders.MSOP_DescriptorVector.Descriptor>).content)}");
                    side_features.ShowPoint(nearst.x, nearst.y);
                }
                else
                {
                    LogPanel.Log($"nearst feature too similar, no match!");
                }
            };
            //this.Height = 500;
            //this.Width = 800;
            this.Content = new ScrollViewer
            {
                HorizontalScrollBarVisibility = ScrollBarVisibility.Disabled,
                VerticalScrollBarVisibility   = ScrollBarVisibility.Visible,
                Content = new StackPanel
                {
                    Orientation = Orientation.Vertical,
                    Children    =
                    {
                        source_image_panel,
                        new Grid
                        {
                            ColumnDefinitions =
                            {
                                new ColumnDefinition {
                                    Width = new GridLength(1,GridUnitType.Star)
                                },
                                new ColumnDefinition {
                                    Width = new GridLength(1,GridUnitType.Star)
                                }
                            },
                            Children =
                            {
                                new Button {
                                    Content = "Run"
                                }.Set(async() =>{ await Task.Run(() =>       { mp_merge_refined.GetImageD(); }); LogPanel.Log("done.");    }).Set(0,               0),
                                new Button {
                                    Content = "Reset"
                                }.Set(async() =>{ await Task.Run(() =>       { mp_merge_refined.Reset();     }); LogPanel.Log("reseted."); }).Set(0,                                1)
                            }
                        },
                        //(new ImageViewer(mp_r)),
                        //(new ImageViewer(mp_hr)),
                        //(new ImageViewer(mp_g)),
                        //(new ImageViewer(mp_hg)),
                        //(new ImageViewer(mp_b)),
                        //(new ImageViewer(mp_hb)),
                        new ImageViewer(mp_merge_refined,false),
                        //new ImageViewer(main_image,false),
                        //new Controls.PointSelect(source_image_panel,new PointsProviders.PointsCache(new List<ImagePoint>{ new ImagePoint(10,10,1),new ImagePoint(100,50,5) }))
                        main_features,
                        side_features
                    }
                }
            };
        }
コード例 #8
0
 public DragAreaElement(ImagePoint start, ElementId element)
 {
     this.start   = start;
     this.element = element;
 }
コード例 #9
0
        IEnumerable <ImagePoint> GetPoints()
        {
            var list = new List <ImagePoint>();

            // {
            //
            //    new ImagePoint()
            //    {
            //        X = MaxValues.MinX,
            //        Y = MaxValues.MinY,
            //        Z = MaxValues.MaxZ,
            //
            //        R = MaxValues.MaxRGB,
            //        G = MaxValues.MaxRGB,
            //        B = MaxValues.MaxRGB,
            //
            //        Blanking = false
            //    },
            //
            //    new ImagePoint()
            //    {
            //        X = MaxValues.MaxX,
            //        Y = MaxValues.MinY,
            //        Z = MaxValues.MaxZ,
            //
            //        R = MaxValues.MaxRGB,
            //        G = MaxValues.MaxRGB,
            //        B = MaxValues.MaxRGB,
            //
            //        Blanking = false
            //    },
            //
            //
            //    new ImagePoint()
            //    {
            //        X = MaxValues.MaxX,
            //        Y = MaxValues.MaxY,
            //        Z = MaxValues.MaxZ,
            //
            //        R = MaxValues.MaxRGB,
            //        G = MaxValues.MaxRGB,
            //        B = MaxValues.MaxRGB,
            //
            //        Blanking = false
            //    },
            //
            //
            //    new ImagePoint()
            //    {
            //        X = MaxValues.MinX,
            //        Y = MaxValues.MaxY,
            //        Z = MaxValues.MaxZ,
            //
            //        R = MaxValues.MaxRGB,
            //        G = MaxValues.MaxRGB,
            //        B = MaxValues.MaxRGB,
            //
            //        Blanking = false
            //    }
            //};

            for (int y = MaxValues.MinY; y <= MaxValues.MaxY; y++)
            {
                for (int x = MaxValues.MinX; x <= MaxValues.MaxX; x++)
                {
                    var point = new ImagePoint()
                    {
                        X = x,
                        Y = y,
                        Z = MaxValues.MaxZ,

                        R = MaxValues.MaxRGB,
                        G = MaxValues.MaxRGB,
                        B = MaxValues.MaxRGB,

                        Blanking = y >= MaxValues.MaxY - 2 && x >= MaxValues.MaxX - 2
                    };


                    list.Add(point);
                }
            }

            return(list);
        }
コード例 #10
0
        protected ImagePoint RecordToPoint(CoordinateRecord ildaRecord, FormatCode formatCode, IList <RecordColourPalette> palette)
        {
            var res = new ImagePoint();

            switch (formatCode)
            {
            case FormatCode.Format2DIndexedColour:
            {
                var r = (Record2DIndexed)ildaRecord;

                var c = palette[r.ColourIndex];

                res.X        = r.X;
                res.Y        = r.Y;
                res.Blanking = r.Blanking;

                res.R = c.Red;
                res.G = c.Green;
                res.B = c.Blue;

                break;
            }

            case FormatCode.Format2DTrueColour:
            {
                var r = (Record2DTrueColour)ildaRecord;

                res.X        = r.X;
                res.Y        = r.Y;
                res.Blanking = r.Blanking;

                res.R = r.Red;
                res.G = r.Green;
                res.B = r.Blue;

                break;
            }

            case FormatCode.Format3DIndexedColour:
            {
                var r = (Record3DIndexed)ildaRecord;

                var c = palette[r.ColourIndex];

                res.X        = r.X;
                res.Y        = r.Y;
                res.Z        = r.Z;
                res.Blanking = r.Blanking;

                res.R = c.Red;
                res.G = c.Green;
                res.B = c.Blue;

                break;
            }

            case FormatCode.Format3DTrueColour:
            {
                var r = (Record3DTrueColour)ildaRecord;

                res.X        = r.X;
                res.Y        = r.Y;
                res.Z        = r.Z;
                res.Blanking = r.Blanking;

                res.R = r.Red;
                res.G = r.Green;
                res.B = r.Blue;

                break;
            }

            default: throw new ArgumentException($"Unknown FormatCode '{formatCode}'", nameof(formatCode));
            }


            return(res);
        }