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); }
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); }
public static SFR_C_Info Collimator_Value2Info(SFRValue value) { SFR_C_Info result = new SFR_C_Info(); return(result); }
//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); }