예제 #1
0
        private void image_MouseLeftButtonDown(object sender, PointerRoutedEventArgs e)
        {
            lChartPhoto1.getDrawObjectCanvas().PointerMoved   -= (image_MouseMove);
            lChartPhoto1.getDrawObjectCanvas().PointerPressed -= (image_MouseLeftButtonDown);
            Select.Foreground = Disactive;

            WriteableBitmap b = lChartPhoto1.Photo;

            if (b == null)
            {
                return;
            }
            int             p    = Convert.ToInt32(e.GetCurrentPoint(lChartPhoto1).Position.X / lChartPhoto1.ActualWidth * (b).PixelWidth);
            DrawGraphic     dg   = new DrawGraphic(canvasBright);
            ISO12233ExChart isoc = new ISO12233ExChart();

            canvasBright.Children.Clear();
            List <int> al = isoc.getImageGrayVLine(b, p);

            dg.DrawBrightLines(al);
            if (!lChartPhoto1.getDrawObjectCanvas().Children.Contains(Selectl))
            {
                lChartPhoto1.getDrawObjectCanvas().Children.Add(Selectl);
                Selectl.Fill            = new SolidColorBrush(Colors.Green);
                Selectl.StrokeThickness = 3;
                Selectl.Stroke          = Selectl.Fill;
            }
            PhotoTestParameter ptp = new PhotoTestParameter();

            textBlockCurrentPercent.Text = ptp.getContrast(al).ToString();
        }
예제 #2
0
        public void DrawMTFCurve(WriteableBitmap b, string ChartType)//绘制MTF的分析图
        {
            this.ChartType = ChartType;
            List <double> al = new List <double>();

            if (ChartType == "XMark")
            {
                XMarkChart xm = new XMarkChart(b);
                al = xm.getCurveMTF();
            }
            if (ChartType == "ISO12233")
            {
                ISO12233ExChart x = new ISO12233ExChart(b);
                al = x.getCurveMTF();
            }
            DrawGraphic dg = new DrawGraphic(DrawCanvas);

            //dg.InitCanvas(picCanvas.Width, picCanvas.Height);//需要先设置画布

            dg.DrawX();
            dg.DrawY();
            List <double> dlist = new List <double>();

            dlist.Add(0.0);
            dlist.Add(0.5);
            dlist.Add(1.0);
            dg.DrawYMark(dlist);
            dg.DrawXMark(dlist);
            dg.DrawTitle("MTF 曲线图");
            dg.DrawLines(al);
            //dg.DrawCurve(al);
            //picCanvas.Image = dg.Canvas;
        }
예제 #3
0
        List <Result> TestISO12233Ex(WriteableBitmap chart)
        {
            var rl    = new List <Result>();
            var Chart = new ISO12233ExChart();

            rl.Add(new Result()
            {
                Value     = Chart.getLPResoveLines(),
                Name      = "Resolution",
                Memo      = "",
                TestTime  = DateTime.Now,
                TestCount = 1,
                Dimension = "LW/PH"
            });

            rl.Add(new Result()
            {
                Value     = Chart.getHEdgeResoveLines(),
                Name      = "Horizontal Resolution",
                Memo      = "",
                TestTime  = DateTime.Now,
                TestCount = 1,
                Dimension = "LW/PH"
            });

            rl.Add(new Result()
            {
                Value     = Chart.getVEdgeResoveLines(),
                Name      = "Vertical Resolution",
                Memo      = "",
                TestTime  = DateTime.Now,
                TestCount = 1,
                Dimension = "LW/PH"
            });

            rl.Add(new Result()
            {
                Value     = Chart.getHDispersiveness(),
                Name      = "Horizontal Dispersiveness",
                Memo      = "",
                TestTime  = DateTime.Now,
                TestCount = 1,
                Dimension = "Pix"
            });
            rl.Add(new Result()
            {
                Value     = Chart.getVDispersiveness(),
                Name      = "Vertical Dispersiveness",
                Memo      = "",
                TestTime  = DateTime.Now,
                TestCount = 1,
                Dimension = "Pix"
            });

            return(rl);
        }
예제 #4
0
        public void DrawDispersivenessCurve(WriteableBitmap b, string ChartType)//绘制色散分析图
        {
            this.ChartType = ChartType;
            List <List <int> > al = new List <List <int> >();
            WriteableBitmap    subB;

            if (ChartType == "XMark")
            {
                XMarkChart x = new XMarkChart(b);
                subB = x.getAreaHEdge();
                PhotoTestParameter xm = new PhotoTestParameter();
                al = xm.getCurveVDispersiveness(subB);
            }
            if (ChartType == "ISO12233")
            {
                ISO12233ExChart x = new ISO12233ExChart(b);
                subB = x.getAreaHEdge();
                PhotoTestParameter xm = new PhotoTestParameter();
                al = xm.getCurveHDispersiveness(b);
            }
            DrawGraphic dg = new DrawGraphic(DrawCanvas);

            dg.DrawX();
            List <double> MarkList = new List <double>();

            for (int i = 0; i < 101; i = i + 20)
            {
                MarkList.Add(i);
            }
            dg.DrawXMark(MarkList);
            MarkList.Clear();
            for (int i = 0; i < 255; i = i + 40)
            {
                MarkList.Add(i);
            }
            dg.DrawY();
            dg.DrawYMark(MarkList);

            List <double> ral, gal, bal;

            ral          = SilverlightLFC.common.Environment.getDoubleList <int>(al[0]);
            gal          = SilverlightLFC.common.Environment.getDoubleList <int>(al[1]);
            bal          = SilverlightLFC.common.Environment.getDoubleList <int>(al[2]);
            dg.ForeColor = Colors.Blue;
            dg.DrawLines(bal);
            dg.ForeColor = Colors.Red;
            dg.DrawLines(ral);
            dg.ForeColor = Colors.Green;
            dg.DrawLines(gal);
            dg.DrawTitle("色散");
        }
예제 #5
0
        public void ISO12233ExTest()
        {
            processbar.Value = 0;
            ResultPanel.Children.Clear();

            Button          li;
            ISO12233ExChart ISOChart = new ISO12233ExChart(SourcePhoto);

            ISOChart.CorrectChart();
            ISOChart.BeginAnalyse();
            processbar.Value = 30;

            sw.Stop();
            sw.Start();

            long r = ISOChart.getLPResoveLines();

            li         = new Button();
            li.Name    = "ResolvingPower";
            li.Content = "分辨率(中央):" + r.ToString() + " LW/PH";
            li.SetValue(ToolTipService.ToolTipProperty, "利用瑞利判据,直观判断相机分辨率,数据表示在一张照片里面可以分辨的垂直线条的数量");
            li.Click += new RoutedEventHandler(ISO12233MTF_Click);
            ResultPanel.Children.Add(li);
            processbar.Value = 50;

            r          = ISOChart.getHEdgeResoveLines();
            li         = new Button();
            li.Name    = "HResolvingPower";
            li.Content = "分辨率(水平线):" + r.ToString() + " LW/PH";
            li.SetValue(ToolTipService.ToolTipProperty, "利用水平线条测试分辨率,接近相机的中心分辨率,数据表示在一张照片里面可以分辨的垂直线条的数量");
            li.Click += new RoutedEventHandler(ISO12233MTF_Click);
            ResultPanel.Children.Add(li);
            processbar.Value = 60;

            r          = ISOChart.getVEdgeResoveLines();
            li         = new Button();
            li.Name    = "VResolvingPower";
            li.Content = "分辨率(垂直线):" + r.ToString() + " LW/PH";
            li.SetValue(ToolTipService.ToolTipProperty, "利用垂直线条测试分辨率,接近相机的边沿分辨率,数据表示在一张照片里面可以分辨的垂直线条的数量");
            li.Click += new RoutedEventHandler(ISO12233MTF_Click);
            ResultPanel.Children.Add(li);
            processbar.Value = 70;

            li = new Button();
            decimal d = ISOChart.getHDispersiveness();

            li.Name    = "HDispersiveness";
            li.Content = "色散(水平线):" + d.ToString() + " pxl";
            li.SetValue(ToolTipService.ToolTipProperty, "利用水平线条测试,接近中央色散程度,数据表示红绿蓝三原色在边界分离的程度,无色散时为0");
            li.Click += new RoutedEventHandler(ISO12233Dispersiveness_Click);
            ResultPanel.Children.Add(li);
            processbar.Value = 85;

            li         = new Button();
            d          = ISOChart.getVDispersiveness();
            li.Name    = "VDispersiveness";
            li.Content = "色散(垂直线):" + d.ToString() + " pxl";
            li.SetValue(ToolTipService.ToolTipProperty, "利用垂直线条测试,接近边沿色散程度,数据表示红绿蓝三原色在边界分离的程度,无色散时为0");
            li.Click += new RoutedEventHandler(ISO12233Dispersiveness_Click);
            ResultPanel.Children.Add(li);
            processbar.Value = 100;

            sw.Stop();
            li.SetValue(ToolTipService.ToolTipProperty, "测试共花费" + sw.Interval.Milliseconds.ToString() + "ms");

            Logo.Source = ISOChart.AnalysePhoto;
        }
예제 #6
0
 public ISO12233ExTestViewModel()
 {
     TestChart = new ISO12233ExChart();
     Test      = TestISO12233Ex;
 }