From a5909eebe078d481fc4a13c1e74500aa881b8523 Mon Sep 17 00:00:00 2001 From: Administrator <794757862@qq.com> Date: Sat, 14 Mar 2020 17:51:57 +0800 Subject: [PATCH] =?UTF-8?q?test=E5=88=86=E6=94=AF=E8=A6=81=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=A4=A7=E6=94=B9=EF=BC=8C=E5=A4=A7=E6=94=B9=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=B8=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/wlld/imageRecognition/Operation.java | 32 +++--- .../org/wlld/imageRecognition/Picture.java | 23 ++++ .../wlld/imageRecognition/TempleConfig.java | 8 +- .../imageRecognition/ThreeChannelMatrix.java | 33 ++++++ .../wlld/imageRecognition/border/Border.java | 2 +- .../java/org/wlld/nerveEntity/OutNerve.java | 1 + src/test/java/org/wlld/HelloWorld.java | 105 +++++++++++------- src/test/java/org/wlld/ModelData.java | 6 +- 8 files changed, 144 insertions(+), 66 deletions(-) create mode 100644 src/main/java/org/wlld/imageRecognition/ThreeChannelMatrix.java diff --git a/src/main/java/org/wlld/imageRecognition/Operation.java b/src/main/java/org/wlld/imageRecognition/Operation.java index 56b5fd6..33d7d8d 100644 --- a/src/main/java/org/wlld/imageRecognition/Operation.java +++ b/src/main/java/org/wlld/imageRecognition/Operation.java @@ -34,7 +34,7 @@ public class Operation {//进行计算 public List convolution(Matrix matrix, Map tagging) throws Exception { //进行卷积 - int maxNub = 0; + int maxNub; if (templeConfig.getRow() >= templeConfig.getColumn()) { maxNub = templeConfig.getRow(); } else { @@ -128,7 +128,7 @@ public class Operation {//进行计算 List list = new ArrayList<>(); for (int i = 0; i < matrix.getX(); i++) { for (int j = 0; j < matrix.getY(); j++) { - list.add(ArithUtil.div(matrix.getNumber(i, j), 10)); + list.add(ArithUtil.div(matrix.getNumber(i, j), 100)); } } return list; @@ -404,14 +404,14 @@ public class Operation {//进行计算 return list; } - /* - * @param eventId 事件ID - * @param featureList 特征集合 + /** + * @param eventId 事件ID + * @param featureList 特征集合 * @param sensoryNerveList 感知神经元集合 - * @param isStudy 是否学习 - * @param map 标注 - * @param outBack 输出结果回调类 - * */ + * @param isStudy 是否学习 + * @param map 标注 + * @param outBack 输出结果回调类 + */ private void intoDnnNetwork(long eventId, List featureList, List sensoryNerveList , boolean isStudy, Map map, OutBack outBack) throws Exception {//进入DNN 神经网络 for (int i = 0; i < sensoryNerveList.size(); i++) { @@ -420,14 +420,14 @@ public class Operation {//进行计算 } } - /* - * @param eventId 事件ID - * @param feature 特征矩阵 + /** + * @param eventId 事件ID + * @param feature 特征矩阵 * @param sensoryNerveList 感知神经元集合 - * @param isKernelStudy 是否进行核学习 - * @param E 期望矩阵 - * @param outBack 输出结果回调类 - * */ + * @param isKernelStudy 是否进行核学习 + * @param E 期望矩阵 + * @param outBack 输出结果回调类 + */ private void intoConvolutionNetwork(long eventId, Matrix feature, List sensoryNerveList , boolean isKernelStudy, int E, OutBack outBack) throws Exception {//进入卷积神经网络 for (int i = 0; i < sensoryNerveList.size(); i++) { diff --git a/src/main/java/org/wlld/imageRecognition/Picture.java b/src/main/java/org/wlld/imageRecognition/Picture.java index 9fef0b4..51f5c0e 100644 --- a/src/main/java/org/wlld/imageRecognition/Picture.java +++ b/src/main/java/org/wlld/imageRecognition/Picture.java @@ -50,6 +50,29 @@ public class Picture { return matrix; } + private ThreeChannelMatrix getThreeChannel(BufferedImage bi) throws Exception { + int width = bi.getWidth();//最大宽度 + int height = bi.getHeight();//最大高度 + pictureWidth = width; + pictureHeight = height; + ThreeChannelMatrix threeChannelMatrix = new ThreeChannelMatrix(); + Matrix matrixR = new Matrix(height, width);//行,列 + Matrix matrixG = new Matrix(height, width);//行,列 + Matrix matrixB = new Matrix(height, width);//行,列 + threeChannelMatrix.setMatrixR(matrixR); + threeChannelMatrix.setMatrixG(matrixG); + threeChannelMatrix.setMatrixB(matrixB); + for (int i = 0; i < height; i++) { + for (int j = 0; j < width; j++) { + int pixel = bi.getRGB(j, i);// 下面三行代码将一个数字转换为RGB数字 + matrixR.setNub(i, j, (pixel & 0xff0000) >> 16); + matrixG.setNub(i, j, (pixel & 0xff00) >> 8); + matrixB.setNub(i, j, (pixel & 0xff)); + } + } + return threeChannelMatrix; + } + public double dimensionReduction(int pixel) {//提取灰度进行降维 int r = (pixel & 0xff0000) >> 16;//R int g = (pixel & 0xff00) >> 8;//G diff --git a/src/main/java/org/wlld/imageRecognition/TempleConfig.java b/src/main/java/org/wlld/imageRecognition/TempleConfig.java index 4525ef7..68a653a 100644 --- a/src/main/java/org/wlld/imageRecognition/TempleConfig.java +++ b/src/main/java/org/wlld/imageRecognition/TempleConfig.java @@ -202,15 +202,15 @@ public class TempleConfig { //加载各识别分类的期望矩阵 matrixMap.put(0, new Matrix(height, width)); double nub = 10;//每个分类期望参数的跨度 - for (int k = 0; k < classificationNub; k++) { + for (int k = 1; k <= classificationNub; k++) { Matrix matrix = new Matrix(height, width);//初始化期望矩阵 - double t = (k + 1) * nub;//期望矩阵的分类参数数值 + double t = k * nub;//期望矩阵的分类参数数值 for (int i = 0; i < height; i++) {//给期望矩阵注入期望参数 for (int j = 0; j < width; j++) { matrix.setNub(i, j, t); } } - matrixMap.put(k + 1, matrix); + matrixMap.put(k, matrix); } convolutionNerveManager = new NerveManager(1, 1, 1, deep - 1, new ReLu(), true); @@ -282,7 +282,7 @@ public class TempleConfig { modelParameter.setDymNerveStudies(modelParameter1.getDymNerveStudies()); modelParameter.setDymOutNerveStudy(modelParameter1.getDymOutNerveStudy()); //获取LVQ模型 - if (lvq.isReady()) { + if (classifier == Classifier.LVQ && lvq.isReady()) { LvqModel lvqModel = new LvqModel(); lvqModel.setLength(lvq.getLength()); lvqModel.setTypeNub(lvq.getTypeNub()); diff --git a/src/main/java/org/wlld/imageRecognition/ThreeChannelMatrix.java b/src/main/java/org/wlld/imageRecognition/ThreeChannelMatrix.java new file mode 100644 index 0000000..bdf330c --- /dev/null +++ b/src/main/java/org/wlld/imageRecognition/ThreeChannelMatrix.java @@ -0,0 +1,33 @@ +package org.wlld.imageRecognition; + +import org.wlld.MatrixTools.Matrix; + +public class ThreeChannelMatrix { + Matrix matrixR; + Matrix matrixG; + Matrix matrixB; + + public Matrix getMatrixR() { + return matrixR; + } + + public void setMatrixR(Matrix matrixR) { + this.matrixR = matrixR; + } + + public Matrix getMatrixG() { + return matrixG; + } + + public void setMatrixG(Matrix matrixG) { + this.matrixG = matrixG; + } + + public Matrix getMatrixB() { + return matrixB; + } + + public void setMatrixB(Matrix matrixB) { + this.matrixB = matrixB; + } +} diff --git a/src/main/java/org/wlld/imageRecognition/border/Border.java b/src/main/java/org/wlld/imageRecognition/border/Border.java index e964625..36e6696 100644 --- a/src/main/java/org/wlld/imageRecognition/border/Border.java +++ b/src/main/java/org/wlld/imageRecognition/border/Border.java @@ -48,7 +48,7 @@ public class Border { public void end(Matrix matrix, int id) throws Exception {//长宽 height = maxX - minX; width = maxY - minY; - KClustering kClustering = templeConfig.getkClusteringMap().get(id); + KClustering kClustering = templeConfig.getKClusteringMap().get(id); Matrix positionMatrix = new Matrix(1, 4); //多元线性回归的四个输出值 double tx = ArithUtil.div(minX, modelHeight); diff --git a/src/main/java/org/wlld/nerveEntity/OutNerve.java b/src/main/java/org/wlld/nerveEntity/OutNerve.java index d2760dd..1aaf30e 100644 --- a/src/main/java/org/wlld/nerveEntity/OutNerve.java +++ b/src/main/java/org/wlld/nerveEntity/OutNerve.java @@ -45,6 +45,7 @@ public class OutNerve extends Nerve { } else { this.E = 0; } + //System.out.println("E===" + this.E + ",out==" + out+",nerveId=="+getId()); gradient = outGradient();//当前梯度变化 //调整权重 修改阈值 并进行反向传播 updatePower(eventId); diff --git a/src/test/java/org/wlld/HelloWorld.java b/src/test/java/org/wlld/HelloWorld.java index 9df5e35..607ce91 100644 --- a/src/test/java/org/wlld/HelloWorld.java +++ b/src/test/java/org/wlld/HelloWorld.java @@ -11,6 +11,7 @@ import org.wlld.imageRecognition.TempleConfig; import org.wlld.imageRecognition.border.Frame; import org.wlld.imageRecognition.border.FrameBody; import org.wlld.nerveEntity.ModelParameter; +import org.wlld.tools.ArithUtil; import java.util.HashMap; import java.util.List; @@ -38,63 +39,83 @@ public class HelloWorld { // frame.setLengthHeight(640); // frame.setLengthWidth(640); // templeConfig.setFrame(frame); - templeConfig.setClassifier(Classifier.DNN); - templeConfig.init(StudyPattern.Accuracy_Pattern, true, 640, 640, 2); + templeConfig.setClassifier(Classifier.VAvg); + templeConfig.init(StudyPattern.Accuracy_Pattern, true, 1000, 1000, 3); Operation operation = new Operation(templeConfig); //a b c d 物品 e是背景 //一阶段 - for (int i = 1; i < 290; i++) {//一阶段 - System.out.println("study1==" + i); - //读取本地URL地址图片,并转化成矩阵 - Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".png"); - Matrix b = picture.getImageMatrixByLocal("D:\\share\\picture/b" + i + ".png"); - //Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".png"); - //Matrix d = picture.getImageMatrixByLocal("D:\\share\\picture/d" + i + ".png"); - //Matrix f = picture.getImageMatrixByLocal("D:\\share\\picture/f" + i + ".png"); - //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 - //第二次学习的时候,第三个参数必须是 true - // operation.learning(f, 0, false); - operation.learning(a, 0, false); - operation.learning(b, 1, false); - //operation.learning(c, 2, false); - // operation.learning(d, 3, false); - } - System.out.println("一阶段完毕================"); +// for (int i = 1; i < 300; i++) {//一阶段 +// System.out.println("study1===================" + i); +// //读取本地URL地址图片,并转化成矩阵 +// Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); +// Matrix b = picture.getImageMatrixByLocal("D:\\share\\picture/b" + i + ".jpg"); +// Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); +// //Matrix d = picture.getImageMatrixByLocal("D:\\share\\picture/d" + i + ".png"); +// //Matrix f = picture.getImageMatrixByLocal("D:\\share\\picture/f" + i + ".png"); +// //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 +// //第二次学习的时候,第三个参数必须是 true +// // operation.learning(f, 0, false); +// operation.learning(a, 1, false); +// operation.learning(b, 2, false); +// operation.learning(c, 3, false); +// // operation.learning(d, 3, false); +// } +// ModelParameter modelParameter = templeConfig.getModel(); +// String model = JSON.toJSONString(modelParameter); +// System.out.println(model); + // System.out.println("======================================"); + ModelParameter modelParameter = JSON.parseObject(ModelData.DATA3, ModelParameter.class); + templeConfig.insertModel(modelParameter); //二阶段 - for (int i = 1; i < 290; i++) { - System.out.println("study2==" + i); - //读取本地URL地址图片,并转化成矩阵 - Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".png"); - Matrix b = picture.getImageMatrixByLocal("D:\\share\\picture/b" + i + ".png"); - //Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".png"); - // Matrix d = picture.getImageMatrixByLocal("D:\\share\\picture/d" + i + ".png"); - //Matrix f = picture.getImageMatrixByLocal("D:\\share\\picture/f" + i + ".png"); - //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 - //第二次学习的时候,第三个参数必须是 true - // operation.learning(f, 0, true); - operation.learning(a, 0, true); - operation.learning(b, 1, true); - //operation.learning(c, 2, true); - // operation.learning(d, 3, true); + for (int j = 0; j < 1; j++) { + for (int i = 1; i < 1500; i++) { + //System.out.println("study2==================" + i); + //读取本地URL地址图片,并转化成矩阵 + Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); + Matrix b = picture.getImageMatrixByLocal("D:\\share\\picture/b" + i + ".jpg"); + Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); + // Matrix d = picture.getImageMatrixByLocal("D:\\share\\picture/d" + i + ".png"); + //Matrix f = picture.getImageMatrixByLocal("D:\\share\\picture/f" + i + ".png"); + //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 + //第二次学习的时候,第三个参数必须是 true + // operation.learning(f, 0, true); + //System.out.println("1==============="); + operation.learning(a, 1, true); + //System.out.println("2==============="); + operation.learning(b, 2, true); + operation.learning(c, 3, true); + // operation.learning(d, 3, true); + } } templeConfig.finishStudy();//结束学习 - for (int i = 290; i < 301; i++) { + int wrong = 0; + int allNub = 0; + for (int i = 1500; i <= 1572; i++) { //读取本地URL地址图片,并转化成矩阵 - Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".png"); - Matrix b = picture.getImageMatrixByLocal("D:\\share\\picture/b" + i + ".png"); - //Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".png"); + Matrix a = picture.getImageMatrixByLocal("D:\\share\\picture/a" + i + ".jpg"); + Matrix b = picture.getImageMatrixByLocal("D:\\share\\picture/b" + i + ".jpg"); + Matrix c = picture.getImageMatrixByLocal("D:\\share\\picture/c" + i + ".jpg"); // Matrix d = picture.getImageMatrixByLocal("D:\\share\\picture/d" + i + ".png"); //将图像矩阵和标注加入进行学习,Accuracy_Pattern 模式 进行第二次学习 //第二次学习的时候,第三个参数必须是 true + allNub += 3; int an = operation.toSee(a); int bn = operation.toSee(b); + int cn = operation.toSee(c); + if (an != 1) { + wrong++; + } + if (bn != 2) { + wrong++; + } + if (cn != 3) { + wrong++; + } //int cn = operation.toSee(c); //int dn = operation.toSee(d); - System.out.println("这是0==" + an); - System.out.println("这是1==" + bn); - //System.out.println("这是2==" + cn); - //System.out.println("这是3==" + dn); } + double wrongPoint = ArithUtil.div(wrong, allNub); + System.out.println("错误率:" + (wrongPoint * 100) + "%"); // ModelParameter modelParameter2 = templeConfig.getModel(); // String model1 = JSON.toJSONString(modelParameter2); // System.out.println("完成阶段==" + model1); diff --git a/src/test/java/org/wlld/ModelData.java b/src/test/java/org/wlld/ModelData.java index 358128c..660585c 100644 --- a/src/test/java/org/wlld/ModelData.java +++ b/src/test/java/org/wlld/ModelData.java @@ -6,7 +6,7 @@ package org.wlld; * @date 9:49 上午 2020/1/31 */ public class ModelData { - public static final String DATA = "{\"borderBodyMap\":{},\"dymNerveStudies\":[{\"list\":[0.17219079338704957,0.2763277109442507,0.9494048971996161,0.6102827011347881,0.5147286506308538,0.7986383832057466,0.07067447220703016,0.09597199886439445,0.592226095059381],\"threshold\":0.2313533959212353},{\"list\":[0.006345633475881796,0.9125707391532067,0.8247156297251186,0.7069092127630808,0.35693418734094406,0.8009079323334614,0.11939034586272823,0.7654188856037588,0.2928824973142261],\"threshold\":0.682409278380978},{\"list\":[0.03888564362061908,0.7561642625034624,0.4948713698741891,0.6801324357405192,0.2905823279809705,0.7145377814192968,0.7834921462660909,0.29037864226052856,0.9120919748762001],\"threshold\":-0.0135320723729325},{\"list\":[0.5444683957099418,0.6561427315930956,0.5969273341608405,0.18422830427903736,0.22460070534129006,0.6702807575773493,0.42782028259035876,0.4972072545345054,0.7993596860458512],\"threshold\":-0.2821005667362801},{\"list\":[0.9331788407720958,0.9502756008967073,0.2012586093867874,0.29443194397996486,0.8161755080391601,0.6284886837805234,0.1469260344801857,0.919777359973982,0.16901058803535995],\"threshold\":-0.47302239316895}],\"dymOutNerveStudy\":{\"list\":[0.4641878653734878,0.3409186955332846,0.8582614720215028,0.11834201951979306,0.1727875779799236,0.7555896417968606,0.5281598748423247,0.4227867096522142,0.7909028674750446],\"threshold\":-1.235831384076553}}"; - public static final String DATA2 = "{\"borderMap\":{1:{\"length\":20,\"lists\":[[5.844403568065988,5.50778773956534,5.606414633733051,0.0,5.386920887403405,5.233412885479294,5.162840178567301,0.0,5.1255623267136405,5.141830665730661,5.1657816883884315,0.0,5.004452804593025,4.9798569063545655,5.016636247961047,0.0,5.749189888514196,5.70190948209303,5.801605198176744,0.0],[5.828724996533473,5.493283554607389,5.631974619349194,0.0,5.317736704655773,5.218094817311813,5.212689578814799,0.0,5.082924739086342,5.132779708136464,5.164620746418376,0.0,4.911496938930719,4.988858771682838,5.046763317425185,0.0,5.699177931446964,5.698029263370381,5.801805811009228,0.0],[5.860473429990608,5.45589287402917,5.570510436591154,0.0,5.518068147003296,5.192524064124404,5.139476802116294,0.0,5.291255554753069,5.054683165036734,5.097237514753458,0.0,5.10970902525052,4.920070729882904,4.93876825132474,0.0,5.781853445215731,5.691894972408872,5.804011696862248,0.0],[5.903759460472417,5.477826289715017,5.5611454606226545,0.0,5.694718254634795,5.161641926142435,5.109002098167241,0.0,5.497617617278256,4.98657986065054,5.0652895669803675,0.0,5.282389409342257,4.812592396284728,4.882106667356817,0.0,5.8566360867764535,5.685686228353719,5.797862243284943,0.0],[5.994468916865423,5.568337986048426,5.500639788937314,0.0,5.861039943193394,5.260253165540613,5.068570988314742,0.0,5.767041352159131,5.062201450068188,5.012072010383438,0.0,5.669517050960502,4.904950004714434,4.805664344910293,0.0,5.95990277418828,5.72475239614638,5.77466481550324,0.0],[6.015426903883286,5.8470514572899015,5.885381874181652,0.0,5.507452374788038,5.128588487781482,5.15060241651049,0.0,5.246789986410181,5.062232576109659,5.10186018477504,0.0,5.088615013578635,4.848978165449897,4.83972833413785,0.0,4.988274392693213,4.819633224446484,4.9986420367282935,0.0],[6.247511704207002,5.660231890395592,5.476163966208906,0.0,6.144336683624375,5.329570242640683,5.215598110014992,0.0,5.995249012064939,5.226389717498529,5.091125671269078,0.0,5.857181537483512,5.041241662182233,4.894810796367934,0.0,5.990115513074854,5.652444003499067,5.646581153997495,0.0],[6.291073776097935,5.852998776895548,5.800288118121379,0.0,6.228340775698824,5.30632808574176,5.198200168874879,0.0,6.115507285987589,5.197095838194831,5.22581281722505,0.0,5.941234881776568,5.069861591728098,5.002997254155649,0.0,5.845482073076225,5.149997054509098,5.208096994702694,0.0],[6.015333937535676,5.697840060888947,5.731947117389336,0.0,5.724243076613664,5.211112945683922,5.187132851530306,0.0,5.561896755619004,5.012273549882052,5.042722358474358,0.0,5.344199441967036,4.813943212098502,4.860831304693194,0.0,5.520890402105406,5.261313172882038,5.396896792524224,0.0],[6.134295025815421,5.866263113237292,5.848159090409577,0.0,5.880281177905433,5.260231535098279,5.056749218567724,0.0,5.780212042383378,5.109105625941937,5.051923827509647,0.0,5.691242958767389,4.9064556031645035,4.716943010959617,0.0,5.529219860779304,4.906170955094314,4.977027090238533,0.0]],\"positionMap\":{0:{\"list\":[5.844403568065988,5.50778773956534,5.606414633733051,0.0,5.386920887403405,5.233412885479294,5.162840178567301,0.0,5.1255623267136405,5.141830665730661,5.1657816883884315,0.0,5.004452804593025,4.9798569063545655,5.016636247961047,0.0,5.749189888514196,5.70190948209303,5.801605198176744,0.0],\"positionList\":[0.037617866,0.0514890801,-0.24683371333757,-0.2536925224250764]},1:{\"list\":[5.828724996533473,5.493283554607389,5.631974619349194,0.0,5.317736704655773,5.218094817311813,5.212689578814799,0.0,5.082924739086342,5.132779708136464,5.164620746418376,0.0,4.911496938930719,4.988858771682838,5.046763317425185,0.0,5.699177931446964,5.698029263370381,5.801805811009228,0.0],\"positionList\":[0.03711449842542006,0.03795972393995935,-0.24544295499236052,-0.2504543499333437]},2:{\"list\":[5.860473429990608,5.45589287402917,5.570510436591154,0.0,5.518068147003296,5.192524064124404,5.139476802116294,0.0,5.291255554753069,5.054683165036734,5.097237514753458,0.0,5.10970902525052,4.920070729882904,4.93876825132474,0.0,5.781853445215731,5.691894972408872,5.804011696862248,0.0],\"positionList\":[0.03647642678,0.0675049636,-0.24759640748608083,-0.2546522259388265]},3:{\"list\":[5.903759460472417,5.477826289715017,5.5611454606226545,0.0,5.694718254634795,5.161641926142435,5.109002098167241,0.0,5.497617617278256,4.98657986065054,5.0652895669803675,0.0,5.282389409342257,4.812592396284728,4.882106667356817,0.0,5.8566360867764535,5.685686228353719,5.797862243284943,0.0],\"positionList\":[0.03591811415,0.085125744525,-0.2476811083485065,-0.25449237438864614]},4:{\"list\":[5.994468916865423,5.568337986048426,5.500639788937314,0.0,5.861039943193394,5.260253165540613,5.068570988314742,0.0,5.767041352159131,5.062201450068188,5.012072010383438,0.0,5.669517050960502,4.904950004714434,4.805664344910293,0.0,5.95990277418828,5.72475239614638,5.77466481550324,0.0],\"positionList\":[0.03496277915,0.12174056916,-0.2479780599388255,-0.2503803531768641]},5:{\"list\":[6.015426903883286,5.8470514572899015,5.885381874181652,0.0,5.507452374788038,5.128588487781482,5.15060241651049,0.0,5.246789986410181,5.062232576109659,5.10186018477504,0.0,5.088615013578635,4.848978165449897,4.83972833413785,0.0,4.988274392693213,4.819633224446484,4.9986420367282935,0.0],\"positionList\":[0.09633108823289614,0.05315779520730831,-0.21653264461816674,-0.21712225970646373]},6:{\"list\":[6.247511704207002,5.660231890395592,5.476163966208906,0.0,6.144336683624375,5.329570242640683,5.215598110014992,0.0,5.995249012064939,5.226389717498529,5.091125671269078,0.0,5.857181537483512,5.041241662182233,4.894810796367934,0.0,5.990115513074854,5.652444003499067,5.646581153997495,0.0],\"positionList\":[0.04890593282617866,0.16048974203776248,-0.24497042918979597,-0.24030927868709873]},7:{\"list\":[6.291073776097935,5.852998776895548,5.800288118121379,0.0,6.228340775698824,5.30632808574176,5.198200168874879,0.0,6.115507285987589,5.197095838194831,5.22581281722505,0.0,5.941234881776568,5.069861591728098,5.002997254155649,0.0,5.845482073076225,5.149997054509098,5.208096994702694,0.0],\"positionList\":[0.08601398609965034,0.16643102116188557,-0.22904218735776002,-0.21603066902282053]},8:{\"list\":[6.015333937535676,5.697840060888947,5.731947117389336,0.0,5.724243076613664,5.211112945683922,5.187132851530306,0.0,5.561896755619004,5.012273549882052,5.042722358474358,0.0,5.344199441967036,4.813943212098502,4.860831304693194,0.0,5.520890402105406,5.261313172882038,5.396896792524224,0.0],\"positionList\":[0.07617865997880763,0.08175136710010798,-0.23273639679966462,-0.2403522604706781]},9:{\"list\":[6.134295025815421,5.866263113237292,5.848159090409577,0.0,5.880281177905433,5.260231535098279,5.056749218567724,0.0,5.780212042383378,5.109105625941937,5.051923827509647,0.0,5.691242958767389,4.9064556031645035,4.716943010959617,0.0,5.529219860779304,4.906170955094314,4.977027090238533,0.0],\"positionList\":[0.09309722534523573,0.11906624150627519,-0.22155152795041738,-0.2166732995703171]}},\"speciesQuantity\":10}},\"depthNerves\":[],\"dymNerveStudies\":[{\"list\":[0.17219079338704957,0.2763277109442507,0.9494048971996161,0.6102827011347881,0.5147286506308538,0.7986383832057466,0.07067447220703016,0.09597199886439445,0.592226095059381],\"threshold\":0.2313533959212353},{\"list\":[0.006345633475881796,0.9125707391532067,0.8247156297251186,0.7069092127630808,0.35693418734094406,0.8009079323334614,0.11939034586272823,0.7654188856037588,0.2928824973142261],\"threshold\":0.682409278380978},{\"list\":[0.03888564362061908,0.7561642625034624,0.4948713698741891,0.6801324357405192,0.2905823279809705,0.7145377814192968,0.7834921462660909,0.29037864226052856,0.9120919748762001],\"threshold\":-0.0135320723729325},{\"list\":[0.5444683957099418,0.6561427315930956,0.5969273341608405,0.18422830427903736,0.22460070534129006,0.6702807575773493,0.42782028259035876,0.4972072545345054,0.7993596860458512],\"threshold\":-0.2821005667362801},{\"list\":[0.9331788407720958,0.9502756008967073,0.2012586093867874,0.29443194397996486,0.8161755080391601,0.6284886837805234,0.1469260344801857,0.919777359973982,0.16901058803535995],\"threshold\":-0.47302239316895}],\"dymOutNerveStudy\":{\"list\":[0.4641878653734878,0.3409186955332846,0.8582614720215028,0.11834201951979306,0.1727875779799236,0.7555896417968606,0.5281598748423247,0.4227867096522142,0.7909028674750446],\"threshold\":-1.235831384076553},\"frame\":{\"height\":4032,\"lengthHeight\":100,\"lengthWidth\":100,\"ready\":true,\"width\":3024},\"lvqModel\":{\"length\":20,\"matrixModelList\":[{\"id\":0,\"rowVector\":[4.098096173380622,4.215497860369288,4.389667994539792,2.2130496389542597E-272,4.430074041164493,4.71630523945971,4.944475103579248,4.426099277908547E-272,4.4858637341423,4.828818752344372,5.141220791523923,0.0,4.4411855202371315,4.728053548555644,4.980377782992652,3.872836868169969E-272,4.25523669368397,4.540821453767527,4.799112191553137,1.6597872292156935E-272]},{\"id\":1,\"rowVector\":[5.991103611760031,5.670551319427767,5.7082362755851515,2.766312048692812E-272,5.671719685759619,5.202248842700966,5.179688402894632,5.532624097385643E-273,5.484494000861708,5.024549622198204,5.0422257425624135,5.532624097385643E-273,5.2837377653930675,4.825639850935169,4.852313231966156,2.2130496389542597E-272,5.409886336844953,5.152850162463683,5.292284878430469,4.97936168764709E-272]}],\"typeNub\":2},\"outNerves\":[]}"; - public static final String DATA3 = ""; + public static final String DATA = "{\"borderMap\":{},\"depthNerves\":[],\"dymNerveStudies\":[{\"list\":[0.29582382495207116,0.39015279512835077,0.15502699163026068,0.4449810603593308,0.5866988841712748,0.5972981871924292,0.13373330215014034,0.9638388683922304,0.9473990077246771],\"threshold\":-0.555170793214844},{\"list\":[0.3158387544389044,0.1640685085212018,0.05954240400930855,0.6212665673799314,0.9139083865288491,0.9201470579103642,0.03498738876670593,0.9178932851181257,0.38102759077982595],\"threshold\":-1.849741013678659},{\"list\":[0.5181466772414167,0.3895092538426449,0.6910130870729755,0.7452630812466098,0.13992121803024882,0.7498968486610231,0.9409603149259702,0.3115231332884726,0.06350145860316037],\"threshold\":-3.719904314390277},{\"list\":[0.07323591673977237,0.976048394714998,0.5340391872182416,0.11061303983893667,0.8361973244017616,0.15542502045035034,0.2231637795319109,0.05937063366824946,0.9910231070484109],\"threshold\":-8.35129156490914}],\"dymOutNerveStudy\":{\"list\":[0.06762263658832446,0.40843240503557887,0.48744746542698014,0.6449807669099844,0.469222616850707,0.8606358826368752,0.4317697050547564,0.19340727558297766,0.65035578099411],\"threshold\":-18.37570397965139},\"outNerves\":[]}"; + public static final String DATA2 = "{\"borderMap\":{},\"depthNerves\":[],\"dymNerveStudies\":[{\"list\":[0.44428556533068575,0.5658815736121723,0.0738500229399941,0.010519249540420383,0.08394909335400225,0.13184764893531908,0.5231931722677181,0.7846613596863549,0.25590951148053365],\"threshold\":-0.683894461380986},{\"list\":[0.48854752128162127,0.5350959170785692,0.6198275818424295,0.2561672144845967,0.08344373026651164,0.89997111108734,0.9333709997355971,0.8731957968993453,0.06892718150390686],\"threshold\":-1.153255881726414},{\"list\":[0.9271317669768384,0.5580548798547729,0.11762861249468348,0.3180826752828916,0.20704002327420978,0.712340657968163,0.17496511541171222,0.82961749041711,0.01765429391874429],\"threshold\":-3.581773220595207},{\"list\":[0.24032642793734849,0.3878498379770531,0.5245981316184397,0.5572788411708264,0.5518564938401437,0.05238256457868773,0.9419623879267454,0.3229755903205771,0.9903903882567503],\"threshold\":-8.03860397180226}],\"dymOutNerveStudy\":{\"list\":[0.39603628128241597,0.2592715195032722,0.24047266823710667,0.2545239460340152,0.21337236507956014,0.28862597840780724,0.9859560529064291,0.8158358050075156,0.46009825865472165],\"threshold\":-20.36358429082004},\"outNerves\":[]}"; + public static final String DATA3 = "{\"borderMap\":{},\"depthNerves\":[],\"dymNerveStudies\":[{\"list\":[0.9949264443128122,0.07984481566108292,0.04049221778086176,0.617256960894905,0.7065192936701229,0.6516215080318231,0.1794541419746618,0.6440657644221504,0.9111889388797401],\"threshold\":-0.3621432744136407},{\"list\":[0.33692096239068015,0.18240521881113703,0.5733160290456041,0.3484414669395709,0.16033262648797275,0.4328673609440682,0.8033189768667269,0.9627928719349711,0.1488711201247922],\"threshold\":-1.253928748988446},{\"list\":[0.3310468084546072,0.39085261500410673,0.5523517084977159,0.2775827043734135,0.29800941316755325,0.08269086114551305,0.2736527016929101,0.06970190435391943,0.43965666254150915],\"threshold\":-5.976927426454134},{\"list\":[0.01717943073215633,0.4942824968532229,0.26323815904530823,0.2510837568588852,0.21226058607356613,0.7628396976271158,0.6560610692341047,0.3978397063859618,0.7975811453547799],\"threshold\":-14.1257376614347}],\"dymOutNerveStudy\":{\"list\":[0.2446741815832535,0.7514995789113001,0.4108075974566687,0.6503017867602716,0.6919633246371611,0.8292079854845771,0.6756282548655363,0.8263813717119076,0.48008608220854443],\"threshold\":-23.3982488479275},\"outNerves\":[]}"; }