Beispiel #1
0
        public static RectInfo Collimator_Info2Rect(SFR_C_Info info)
        {
            int      x      = info.block.Count();
            RectInfo result = new RectInfo();

            result.Points = new Point[x][];


            result.Points[0] = new Point[1] {
                new Point {
                    X = (int)info.block[4].dX, Y = (int)info.block[4].dY
                }
            };
            result.Points[1] = new Point[1] {
                new Point {
                    X = (int)info.block[0].dX, Y = (int)info.block[0].dY
                }
            };
            result.Points[2] = new Point[1] {
                new Point {
                    X = (int)info.block[2].dX, Y = (int)info.block[2].dY
                }
            };
            result.Points[3] = new Point[1] {
                new Point {
                    X = (int)info.block[6].dX, Y = (int)info.block[6].dY
                }
            };
            result.Points[4] = new Point[1] {
                new Point {
                    X = (int)info.block[8].dX, Y = (int)info.block[8].dY
                }
            };
            result.Points[5] = new Point[1] {
                new Point {
                    X = (int)info.block[1].dX, Y = (int)info.block[1].dY
                }
            };
            result.Points[6] = new Point[1] {
                new Point {
                    X = (int)info.block[3].dX, Y = (int)info.block[3].dY
                }
            };
            result.Points[7] = new Point[1] {
                new Point {
                    X = (int)info.block[5].dX, Y = (int)info.block[5].dY
                }
            };
            result.Points[8] = new Point[1] {
                new Point {
                    X = (int)info.block[7].dX, Y = (int)info.block[7].dY
                }
            };

            return(result);
        }
        public override bool GetSFRValue(Bitmap bmp, ref SFRValue SFRValue, ref RectInfo rectInfo, Rectangle[] rectangles, ref LightValue lightValue, bool TestLight = false)
        {
            SFRInfo info = new SFRInfo();
            //   Rectangle[] rectangles = new Rectangle[13];
            SFR_C_Info sFR_C_Info = new SFR_C_Info();
            SFR_C_Info YData      = new SFR_C_Info();
            double     frequency  = ParamSetMgr.GetInstance().GetDoubleParam("[SFR] dSFR_Parameter");
            bool       bRet       = false;

            try
            {
                if (bmp == null)
                {
                    return(false);
                }
                Bitmap temp     = (Bitmap)bmp.Clone();
                int    nWidth   = temp.Width;
                int    nHeight  = temp.Height;
                byte[] byBuffer = ImageChangeHelper.Instance.Rgb2Gray(bmp);
                unsafe
                {
                    fixed(byte *byBufferptr = byBuffer)
                    {
                        bRet = ActiveAlignment.CalibrationMode_Collimators(byBufferptr, nWidth, nHeight, ref sFR_C_Info, ref YData);
                    }
                }
                temp.Dispose();
                //sfr 转换
                SFRValue = AlgChangeHelper.Collimator_Info2Value(sFR_C_Info);
                rectInfo = AlgChangeHelper.Collimator_Info2Rect(sFR_C_Info);
            }
            catch { }
            double[] value = new double[5];
            try
            {
                value[0] = YData.block[0].dValue;
                value[1] = YData.block[1].dValue;
                value[2] = YData.block[2].dValue;
                value[3] = YData.block[3].dValue;
                value[4] = YData.block[4].dValue;
            }
            catch (Exception ex)
            {
                value[0] = -1;
                value[1] = -1;
                value[2] = -1;
                value[3] = -1;
                value[4] = -1;
                //return false;
            }
            lightValue.blockValue = value;

            return(bRet);
        }
Beispiel #3
0
 public static SFR_C_Info[] Collimator_Value2Infos(SFRValue[] value)
 {
     SFR_C_Info[] result = new SFR_C_Info[value.Length];
     for (int i = 0; i < result.Length; i++)
     {
         result[i] = new SFR_C_Info();
     }
     for (int j = 0; j < value.Length; j++)
     {
         result[j].dZ = value[j].dZ;
         //(0,1)(1,9)(2,2)(3,10)(4,0)(5,11)(6,3)(7,12)(8,4)
         result[j].block[0].aryValue = value[j].block[1].aryValue;
         result[j].block[0].dValue   = value[j].block[1].dValue;
         result[j].block[0].dX       = value[j].block[1].dX;
         result[j].block[0].dY       = value[j].block[1].dY;
         result[j].block[1].aryValue = value[j].block[9].aryValue;
         result[j].block[1].dValue   = value[j].block[9].dValue;
         result[j].block[1].dX       = value[j].block[9].dX;
         result[j].block[1].dY       = value[j].block[9].dY;
         result[j].block[2].aryValue = value[j].block[2].aryValue;
         result[j].block[2].dValue   = value[j].block[2].dValue;
         result[j].block[2].dX       = value[j].block[2].dX;
         result[j].block[2].dY       = value[j].block[2].dY;
         result[j].block[3].aryValue = value[j].block[10].aryValue;
         result[j].block[3].dValue   = value[j].block[10].dValue;
         result[j].block[3].dX       = value[j].block[10].dX;
         result[j].block[3].dY       = value[j].block[10].dY;
         result[j].block[4].aryValue = value[j].block[0].aryValue;
         result[j].block[4].dValue   = value[j].block[0].dValue;
         result[j].block[4].dX       = value[j].block[0].dX;
         result[j].block[4].dY       = value[j].block[0].dY;
         result[j].block[5].aryValue = value[j].block[11].aryValue;
         result[j].block[5].dValue   = value[j].block[11].dValue;
         result[j].block[5].dX       = value[j].block[11].dX;
         result[j].block[5].dY       = value[j].block[11].dY;
         result[j].block[6].aryValue = value[j].block[3].aryValue;
         result[j].block[6].dValue   = value[j].block[3].dValue;
         result[j].block[6].dX       = value[j].block[3].dX;
         result[j].block[6].dY       = value[j].block[3].dY;
         result[j].block[7].aryValue = value[j].block[12].aryValue;
         result[j].block[7].dValue   = value[j].block[12].dValue;
         result[j].block[7].dX       = value[j].block[12].dX;
         result[j].block[7].dY       = value[j].block[12].dY;
         result[j].block[8].aryValue = value[j].block[4].aryValue;
         result[j].block[8].dValue   = value[j].block[4].dValue;
         result[j].block[8].dX       = value[j].block[4].dX;
         result[j].block[8].dY       = value[j].block[4].dY;
     }
     return(result);
 }
        public override bool GetTiltValue(SFRValue[] SFRValues, ref double dPeakZ, ref double dTx, ref double dTy)
        {
            TiltInfo tiltInfo = new TiltInfo();

            SFR_C_Info[] SFRInfo = new SFR_C_Info[SFRValues.Length];
            SFRInfo = AlgChangeHelper.Collimator_Value2Infos(SFRValues);
            bool bRet = false;

            bRet   = ActiveAlignment.GetTiltValue_Collimators(SFRInfo.Length, SFRInfo, ref tiltInfo);
            dPeakZ = tiltInfo.dPeakZ;
            dTx    = tiltInfo.dTx;
            dTy    = tiltInfo.dTy;
            return(bRet);
        }
Beispiel #5
0
        public static SFR_C_Info Collimator_Value2Info(SFRValue value)
        {
            SFR_C_Info result = new SFR_C_Info();

            return(result);
        }
Beispiel #6
0
        //Collimator
        public static SFRValue Collimator_Info2Value(SFR_C_Info info)
        {
            if (info == null || info.block == null || info.block.Length == 0)
            {
                return(null);
            }
            int      nCnt   = 0;
            SFRValue result = new SFRValue();

            result.block = new BlockValue[13];
            for (int i = 0; i < 13; i++)
            {
                result.block[i] = new BlockValue();
            }
            result.dZ = info.dZ;

            result.block[0].aryValue = new double[5] {
                info.block[4].dValue, info.block[4].dValue, info.block[4].dValue, info.block[4].dValue, info.block[4].dValue
            };
            result.block[0].dValue   = info.block[4].dValue;
            result.block[0].dX       = info.block[4].dX;
            result.block[0].dY       = info.block[4].dY;
            result.block[1].aryValue = new double[5] {
                info.block[0].dValue, info.block[0].dValue, info.block[0].dValue, info.block[0].dValue, info.block[0].dValue
            };
            result.block[1].dValue   = info.block[0].dValue;
            result.block[1].dX       = info.block[0].dX;
            result.block[1].dY       = info.block[0].dY;
            result.block[2].aryValue = new double[5] {
                info.block[2].dValue, info.block[2].dValue, info.block[2].dValue, info.block[2].dValue, info.block[2].dValue
            };
            result.block[2].dValue   = info.block[2].dValue;
            result.block[2].dX       = info.block[2].dX;
            result.block[2].dY       = info.block[2].dY;
            result.block[3].aryValue = new double[5] {
                info.block[6].dValue, info.block[6].dValue, info.block[6].dValue, info.block[6].dValue, info.block[6].dValue
            };
            result.block[3].dValue   = info.block[6].dValue;
            result.block[3].dX       = info.block[6].dX;
            result.block[3].dY       = info.block[6].dY;
            result.block[4].aryValue = new double[5] {
                info.block[8].dValue, info.block[8].dValue, info.block[8].dValue, info.block[8].dValue, info.block[8].dValue
            };
            result.block[4].dValue   = info.block[8].dValue;
            result.block[4].dX       = info.block[8].dX;
            result.block[4].dY       = info.block[8].dY;
            result.block[9].aryValue = new double[5] {
                info.block[1].dValue, info.block[1].dValue, info.block[1].dValue, info.block[1].dValue, info.block[1].dValue
            };
            result.block[9].dValue    = info.block[1].dValue;
            result.block[9].dX        = info.block[1].dX;
            result.block[9].dY        = info.block[1].dY;
            result.block[10].aryValue = new double[5] {
                info.block[3].dValue, info.block[3].dValue, info.block[3].dValue, info.block[3].dValue, info.block[3].dValue
            };
            result.block[10].dValue   = info.block[3].dValue;
            result.block[10].dX       = info.block[3].dX;
            result.block[10].dY       = info.block[3].dY;
            result.block[11].aryValue = new double[5] {
                info.block[5].dValue, info.block[5].dValue, info.block[5].dValue, info.block[5].dValue, info.block[5].dValue
            };
            result.block[11].dValue   = info.block[5].dValue;
            result.block[11].dX       = info.block[5].dX;
            result.block[11].dY       = info.block[5].dY;
            result.block[12].aryValue = new double[5] {
                info.block[7].dValue, info.block[7].dValue, info.block[7].dValue, info.block[7].dValue, info.block[7].dValue
            };
            result.block[12].dValue = info.block[7].dValue;
            result.block[12].dX     = info.block[7].dX;
            result.block[12].dY     = info.block[7].dY;
            return(result);
        }