1.一种荧光图像信号数据存储与颜色分类方法,其特征在于,包括以下步骤:步骤一:获取荧光图像,提取所述荧光图像中的荧光信号,并将提取到的荧光信号数据保存在data_table文件中;
步骤二:data_table文件采用自定义NodePoint类型的单向链表对荧光信号数据进行存储,并利用单向链表中的数据标记位完成数据颜色分类。
2.根据权利要求1所述的一种荧光图像信号数据存储与颜色分类方法,其特征在于,步骤二包括以下步骤:
步骤1:定义System.Data命名空间中的DataRow类的一个对象,用SData表示;定义System.Collections.Generic命名空间中Point类型的List类对象,用Data_listA和Data_listB表示;定义System.Collections.Generic命名空间中NodePoint类型的List类对象,用data_point表示;定义System.Data命名空间中DataTable类对象,用data_table表示;
步骤2:SData对象调用NewRow函数,创建新数据行对象,用dr表示,循环调用Substring函数,并将调用Substring函数的返回值赋值给dr,判断循环过程的表达式值是否为True,若是,则执行步骤3,否则继续执行步骤2;
步骤3:data_table对象调用Rows.Add函数,将SData对象中的数据循环赋值给data_table对象,判断循环过程的表达式值是否为True,若是,则执行步骤4,否则继续执行步骤
3;
步骤4:data_table对象调用Foreach函数对数据容器中的数据进行检索,并将调用Foreach函数的返回值分别赋值给Data_listA、Data_listB,判断循环过程的表达式值是否为False,若是,则执行步骤5,否则继续执行步骤4;
步骤5:data_point对象循环调用AddRange函数,将Data_listA、Data_listB中的数据分别赋值给data_point中的X数据成员与Y数据成员,data_point中的Temp数据成员赋值为
1,判断循环过程的表达式值是否为False,若是,则执行步骤6,否则继续执行步骤5;
步骤6:定义NodePoint类的一个对象,用node表示,node对象包括的数据成员有node.X、node.Y以及node.Temp,循环读取data_point对象中的数据,将data_point对象中的X数据类型赋值给node.X,将data_point对象中的Y数据类型赋值给node.Y,将data_point对象中的Temp数据类型赋值给node.Temp,判断循环过程的表达式值是否为False,若是,则执行步骤7,否则继续执行步骤6;
步骤7:定义Chart控件类的一个对象,用chart_XY表示,chart_XY下的Points成员调用AddXY函数,循环读取node对象中的node.X、node.Y以及node.Temp,进行数据显示,判断循环过程的表达式值是否为False,若是,则执行步骤8,否则继续执行步骤7;
步骤8:创建chart_XY下鼠标点击触发事件,用start.X、start.Y表示,调用chart_XY控件内的ChartAreas绘图区域里的AxisX方法,该方法调用PixelPositionToValue函数,并将调用PixelPositionToValue函数的返回值赋值给start.X和start.Y,判断start.X和start.Y的表达式值是否存在,若存在,则执行步骤9,否则继续执行步骤8;
步骤9:定义System命名空间中var类的四个对象,分别用n1、n2、n3、n4表示,调用node对象下的Where函数判断start.X和start.Y的坐标点在node对象中的数据位置,当node.X大于start.X且node.Y大于start.Y时,将Where函数返回值赋值给n1;当node.X大于start.X且node.Y小于start.Y时,将Where函数返回值赋值给n2;当node.X小于start.X且node.Y大于start.Y时,将Where函数返回值赋值给n3;当node.X小于start.X且node.Y小于start.Y时,将Where函数返回值赋值给n4,完成四象限的划分;
步骤10:定义System命名空间中var类的对象,用n_listA表示,定义System.Collections.Generic命名空间中Point类型的List类对象,用listA表示,n_listA对象调用Foreach函数对n1中的数据进行检索,并将调用Foreach函数的返回值赋值给listA;定义System命名空间中的Int类对象,用index表示,index为循环初始值,调用循环语句for函数,对listA中的数据进行检索,并将检索到的值赋值给node对象中的node.X、node.Y以及node.Temp,此时满足步骤9中的条件的node.Temp数据分类为1,node对象中数据颜色为红色,判断循环过程的表达式值是否为False,若是,则执行步骤11,否则继续执行步骤10;
步骤11:定义System命名空间中var类的对象,用n_listB表示,定义System.Collections.Generic命名空间中Point类型的List类对象,用listB表示,n_listB对象调用Foreach函数对n2中的数据进行检索,并将调用Foreach函数的返回值赋值给listB;定义System命名空间中的Int类对象,用index表示,index为循环初始值,调用循环语句for函数,对listB中的数据进行检索,并将检索到的值赋值给node对象中的node.X、node.Y以及node.Temp,此时满足步骤9、步骤10条件中node.Temp数据分类为2,node对象中数据颜色为绿色,判断循环过程的表达式值是否为False,若是,则执行步骤12,否则继续执行步骤11;
步骤12:定义System命名空间中var类的对象,用n_listC表示,定义System.Collections.Generic命名空间中Point类型的List类对象,用listC表示,n_listC对象调用Foreach函数对n3中的数据进行检索,并将调用Foreach函数的返回值赋值给listC;定义System命名空间中的Int类对象,用index表示,index为循环初始值,调用循环语句for函数,对listC中的数据进行检索,并将检索到的值赋值给node对象中的node.X、node.Y以及node.Temp,此时满足步骤9、步骤10条件中node.Temp数据分类为3,node对象中数据颜色为黑色,判断循环过程的表达式值是否为False,若是,则执行步骤13,否则继续执行步骤12;
步骤13:定义System命名空间中var类的对象,用n_listD表示,定义System.Collections.Generic命名空间中Point类型的List类对象,用listD表示,n_listD对象调用Foreach函数对n4中的数据进行检索,并将调用Foreach函数的返回值赋值给listD;定义System命名空间中的Int类对象,用index表示,index为循环初始值,调用循环语句for函数,对listD中的数据进行检索,并将检索到的值赋值给node对象中的node.X、node.Y以及node.Temp,此时满足步骤9、步骤10条件中node.Temp数据分类为4,node对象中数据颜色为蓝色,判断循环过程的表达式值是否为False,若是,则执行步骤14,否则继续执行步骤13;
步骤14:定义GlobalData类对象,在类对象中定义System.Drawing命名空间中的ColorA、ColorB、ColorC、ColorD四个对象,定义string命名空间中的NameA、Name B、Name C、Name D四个对象,分别用于进行颜色及选择分类方式的区分;
步骤15:定义System.Drawing命名空间中的Point类对象,用tempEndPoint表示,定义System命名空间中的var类的两个用于表示矩形起始点的临时对象,分别用a、b表示;调用chart_XY下ChartAreas绘图区域里的AxisX对象调用PixelPositionToValue函数,并将调用PixelPositionToValue函数的返回值赋值给a和b;定义System命名空间中的var类的两个用于表示矩形终止点的临时对象,分别用c、d表示,调用chart_XY下ChartAreas绘图区域里的AxisX对象调用PixelPositionToValue函数,并将调用PixelPositionToValue函数的返回值赋值给c和d;定义System命名空间中的var类对象,用ntempA表示,调用node对象下的Where函数判断a、b、c、d的坐标点在node对象中的数据位置,当node对象中的数据同时满足大于等于a且小于等于b且小于等于c且大于等于d时,将Where函数的返回值赋值给ntempA,循环调用Foreach函数,将矩形区域内的数据中的node.Temp值进行重置,判断重置过程的表达式值是否为false,若是,则执行步骤16,否则继续执行步骤15;
步骤16:将通过步骤8、步骤9对控件划分后的4个区域分别记为nA、nB、nC、nD,当目标区域为nC,选择颜色为红色且选择图形为矩形时,ColorA的颜色为红色,NameA的名称为矩形,此时将node.Temp赋值为1,在nC中调用Remove函数移除node.Temp为1的数据,并调用AddRange函数重新对node数据进行加载,完成矩形红颜色的分类,判断分类过程的表达式值是否为true,若是,则执行步骤17,否则继续执行步骤16;
步骤17:当目标区域为nC,选择颜色为绿色且选择图形为矩形时,ColorA的颜色为红色,NameA的名称为矩形,此时将node.Temp赋值为1,在node中调用Remove函数移除node.Temp为1的数据,并调用AddRange函数重新对node数据进行加载,完成矩形绿颜色的分类,判断分类过程的表达式值是否为true,若是,则执行步骤18,否则继续执行步骤17;
步骤18:定义System.Collections.Generic命名空间中double类型的List类对象,用xs、ys表示,定义System.Collections.Generic命名空间中Point类型的List类对象,用points表示,用于存储多边形坐标点的位置;循环调用Foreach函数,将多边形的坐标点points值遍历,调用chart_XY下ChartAreas绘图区域里的AxisX对象调用PixelPositionToValue函数,并将调用PixelPositionToValue函数的返回值赋值给xs和ys,判断循环过程的表达式值是否为false,若是,则执行步骤19,否则继续执行步骤18;
步骤19:定义PositionPnpoly类,类中存在5组参数,分别为参数1:不规则形状的定点数,参数2:当前x坐标,参数3:当前y坐标,参数4:不规则形状x坐标集合,参数5:不规则形状y坐标集合;定义System命名空间中的Int类对象,用i表示,i为循环初始值,调用循环语句for函数,对参数1中的数据进行检索,依次检验多边形的每条边,然后调用if函数判断参数
2与参数4以及参数3与参数5,判断一条边上的两个顶点分别在待测数据点的上方和下方,检测待测数据点向右引出的射线有可能与该条边相交的个数,求取奇偶性,得出待测数据点是否在多边形内的结果,判断循环过程的表达式值是否为true,则执行步骤20,否则继续执行步骤19;
步骤20:定义System.Collections.Generic命名空间中NodePoint类型的List类对象,用result表示,调用if函数判断待测数据点是否在多边形内,调用Add函数,将待测数据点在多边形内的node数据集赋值给result,循环调用Foreach函数,将多边形区域内的数据中的node.Temp值进行重置,判断重置过程的表达式值是否为false,若是,则执行步骤21,否则继续执行步骤20;
步骤21:当目标区域为nC,选择颜色为红色且选择图形为多边形时,ColorA的颜色为红色,NameA的名称为多边形,此时将node.Temp赋值为1,在node中调用Remove函数移除node.Temp为1的数据,并调用AddRange函数重新对node数据进行加载,完成多边形红颜色的分类,判断分类过程的表达式值是否为true,若是,则执行步骤22,否则继续执行步骤21;
步骤22:当目标区域为nC,选择颜色为绿色且选择图形为多边形时,ColorA的颜色为红色,NameA的名称为多边形,此时将node.Temp赋值为1,在node中调用Remove函数移除node.Temp为1的数据,并调用AddRange函数重新对node数据进行加载,完成多边形绿颜色的分类。
3.根据权利要求1所述的一种荧光图像信号数据存储与颜色分类方法,其特征在于,在步骤一中,利用生物芯片阅读仪光学系统的AVT:MG‑1236B相机和生物芯片阅读仪光学系统软件对荧光图像中的荧光信号进行提取。