增加深层映射

pull/59/head
lidapeng 4 years ago
parent 4c01112ba0
commit f18b825d79

@ -135,7 +135,7 @@ public class Convolution extends Frequency {
} }
public List<Double> getCenterTexture(ThreeChannelMatrix threeChannelMatrix, int size, TempleConfig templeConfig public List<Double> getCenterTexture(ThreeChannelMatrix threeChannelMatrix, int size, TempleConfig templeConfig
, int sqNub, boolean isStudy) throws Exception { , int sqNub) throws Exception {
MeanClustering meanClustering = new MeanClustering(sqNub, templeConfig, true); MeanClustering meanClustering = new MeanClustering(sqNub, templeConfig, true);
Matrix matrixR = threeChannelMatrix.getMatrixR(); Matrix matrixR = threeChannelMatrix.getMatrixR();
Matrix matrixG = threeChannelMatrix.getMatrixG(); Matrix matrixG = threeChannelMatrix.getMatrixG();
@ -146,8 +146,8 @@ public class Convolution extends Frequency {
//局部特征选区筛选 //局部特征选区筛选
int nub = size * size; int nub = size * size;
int twoNub = nub * 2; int twoNub = nub * 2;
for (int i = 0; i <= xn - size; i += 3) { for (int i = 0; i <= xn - size; i += 2) {
for (int j = 0; j <= yn - size; j += 3) { for (int j = 0; j <= yn - size; j += 2) {
Matrix sonR = matrixR.getSonOfMatrix(i, j, size, size); Matrix sonR = matrixR.getSonOfMatrix(i, j, size, size);
Matrix sonG = matrixG.getSonOfMatrix(i, j, size, size); Matrix sonG = matrixG.getSonOfMatrix(i, j, size, size);
Matrix sonB = matrixB.getSonOfMatrix(i, j, size, size); Matrix sonB = matrixB.getSonOfMatrix(i, j, size, size);
@ -184,9 +184,6 @@ public class Convolution extends Frequency {
List<Double> features = new ArrayList<>(); List<Double> features = new ArrayList<>();
for (int i = 0; i < sqNub; i++) { for (int i = 0; i < sqNub; i++) {
double[] rgb = rgbNorms.get(i).getRgb(); double[] rgb = rgbNorms.get(i).getRgb();
if (!isStudy) {
rgb = rgbMapping(rgb, i, templeConfig);
}
for (int j = 0; j < rgb.length; j++) { for (int j = 0; j < rgb.length; j++) {
features.add(rgb[j]); features.add(rgb[j]);
} }
@ -196,18 +193,6 @@ public class Convolution extends Frequency {
return features; return features;
} }
private double[] rgbMapping(double[] rgb, int index, TempleConfig templeConfig) {//进行映射
double[] mapping = templeConfig.getFood().getMappingParameter();
int size = rgb.length;
int allSize = mapping.length / 2;
double[] mappingFeature = new double[size];
for (int i = 0; i < size; i++) {
int myIndex = size * index + i;
mappingFeature[i] = rgb[i] * mapping[myIndex] + mapping[allSize + myIndex];
}
return mappingFeature;
}
private void normalization(Matrix matrix) throws Exception { private void normalization(Matrix matrix) throws Exception {
for (int i = 0; i < matrix.getX(); i++) { for (int i = 0; i < matrix.getX(); i++) {
for (int j = 0; j < matrix.getY(); j++) { for (int j = 0; j < matrix.getY(); j++) {

@ -7,10 +7,7 @@ import org.wlld.config.Classifier;
import org.wlld.config.StudyPattern; import org.wlld.config.StudyPattern;
import org.wlld.i.OutBack; import org.wlld.i.OutBack;
import org.wlld.imageRecognition.border.*; import org.wlld.imageRecognition.border.*;
import org.wlld.imageRecognition.segmentation.RegionBody; import org.wlld.imageRecognition.segmentation.*;
import org.wlld.imageRecognition.segmentation.RgbRegression;
import org.wlld.imageRecognition.segmentation.Specifications;
import org.wlld.imageRecognition.segmentation.Watershed;
import org.wlld.nerveCenter.NerveManager; import org.wlld.nerveCenter.NerveManager;
import org.wlld.nerveCenter.Normalization; import org.wlld.nerveCenter.Normalization;
import org.wlld.nerveEntity.SensoryNerve; import org.wlld.nerveEntity.SensoryNerve;
@ -91,40 +88,13 @@ public class Operation {//进行计算
int maxY = regionBody.getMaxY() - dif; int maxY = regionBody.getMaxY() - dif;
int xSize = maxX - minX; int xSize = maxX - minX;
int ySize = maxY - minY; int ySize = maxY - minY;
//convolution.imgNormalization(threeChannelMatrix);
ThreeChannelMatrix threeChannelMatrix1 = convolution.getRegionMatrix(threeChannelMatrix, minX, minY, xSize, ySize); ThreeChannelMatrix threeChannelMatrix1 = convolution.getRegionMatrix(threeChannelMatrix, minX, minY, xSize, ySize);
// List<Double> feature = convolution.getCenterColor(threeChannelMatrix1, templeConfig, templeConfig.getFeatureNub()); List<Double> feature = convolution.getCenterTexture(threeChannelMatrix1, templeConfig.getFood().getRegionSize(), templeConfig, templeConfig.getFeatureNub());
List<Double> feature = convolution.getCenterTexture(threeChannelMatrix1, templeConfig.getFood().getRegionSize(), templeConfig, templeConfig.getFeatureNub(), true); Knn knn = templeConfig.getFood().getDimensionMappingStudy().getKnn();
if (templeConfig.isShowLog()) { knn.insertMatrix(MatrixOperation.listToRowVector(feature), tag);
System.out.println(tag + ":" + feature);
}
int classifier = templeConfig.getClassifier();
switch (classifier) {
case Classifier.DNN:
Map<Integer, Double> map = new HashMap<>();
map.put(tag, 1.0);
if (templeConfig.getSensoryNerves().size() == templeConfig.getFeatureNub() * 3) {
intoDnnNetwork(1, feature, templeConfig.getSensoryNerves(), true, map, null);
} else {
throw new Exception("nerves number is not equal featureNub");
}
break;
case Classifier.LVQ:
Matrix vector = MatrixOperation.listToRowVector(feature);
lvqStudy(tag, vector);
break;
case Classifier.VAvg:
Matrix vec = MatrixOperation.listToRowVector(feature);
avgStudy(tag, vec);
break;
case Classifier.KNN:
Matrix veck = MatrixOperation.listToRowVector(feature);
knnStudy(tag, veck);
break;
}
return regionBody; return regionBody;
} else { } else {
System.out.println("error=============================================error");
for (RegionBody regionBody : regionBodies) { for (RegionBody regionBody : regionBodies) {
int minX = regionBody.getMinX(); int minX = regionBody.getMinX();
int minY = regionBody.getMinY(); int minY = regionBody.getMinY();
@ -133,6 +103,7 @@ public class Operation {//进行计算
System.out.println("异常minX==" + minX + ",minY==" + minY + ",maxX==" + maxX + ",maxY==" + maxY + ",tag==" + tag System.out.println("异常minX==" + minX + ",minY==" + minY + ",maxX==" + maxX + ",maxY==" + maxY + ",tag==" + tag
+ "url==" + url); + "url==" + url);
} }
System.out.println("error=============================================error");
throw new Exception("Parameter exception region size==" + regionBodies.size()); throw new Exception("Parameter exception region size==" + regionBodies.size());
} }
} }
@ -159,7 +130,6 @@ public class Operation {//进行计算
Watershed watershed = new Watershed(threeChannelMatrix, specificationsList, templeConfig); Watershed watershed = new Watershed(threeChannelMatrix, specificationsList, templeConfig);
List<RegionBody> regionList = watershed.rainfall(); List<RegionBody> regionList = watershed.rainfall();
for (RegionBody regionBody : regionList) { for (RegionBody regionBody : regionList) {
MaxPoint maxPoint = new MaxPoint();
int minX = regionBody.getMinX() + dif; int minX = regionBody.getMinX() + dif;
int minY = regionBody.getMinY() + dif; int minY = regionBody.getMinY() + dif;
int maxX = regionBody.getMaxX() - dif; int maxX = regionBody.getMaxX() - dif;
@ -167,37 +137,10 @@ public class Operation {//进行计算
int xSize = maxX - minX; int xSize = maxX - minX;
int ySize = maxY - minY; int ySize = maxY - minY;
ThreeChannelMatrix threeChannelMatrix1 = convolution.getRegionMatrix(threeChannelMatrix, minX, minY, xSize, ySize); ThreeChannelMatrix threeChannelMatrix1 = convolution.getRegionMatrix(threeChannelMatrix, minX, minY, xSize, ySize);
//List<Double> feature = convolution.getCenterColor(threeChannelMatrix1, templeConfig, templeConfig.getFeatureNub()); List<Double> feature = convolution.getCenterTexture(threeChannelMatrix1, templeConfig.getFood().getRegionSize(), templeConfig, templeConfig.getFeatureNub());
List<Double> feature = convolution.getCenterTexture(threeChannelMatrix1, templeConfig.getFood().getRegionSize(), templeConfig, templeConfig.getFeatureNub(), false);
if (templeConfig.isShowLog()) {
System.out.println(feature);
}
int classifier = templeConfig.getClassifier();
int id = 0;
switch (classifier) {
case Classifier.LVQ:
Matrix myMatrix = MatrixOperation.listToRowVector(feature);
id = getIdByLVQ(myMatrix);
break;
case Classifier.DNN:
if (templeConfig.getSensoryNerves().size() == templeConfig.getFeatureNub() * 3) {
intoDnnNetwork(IdCreator.get().nextId(), feature, templeConfig.getSensoryNerves(), false, null, maxPoint);
id = maxPoint.getId();
} else {
throw new Exception("nerves number is not equal featureNub");
}
break;
case Classifier.VAvg:
Matrix myMatrix1 = MatrixOperation.listToRowVector(feature);
id = getIdByVag(myMatrix1);
break;
case Classifier.KNN:
Matrix myMatrix2 = MatrixOperation.listToRowVector(feature); Matrix myMatrix2 = MatrixOperation.listToRowVector(feature);
Knn knn = templeConfig.getKnn(); DimensionMappingStudy dimensionMappingStudy = templeConfig.getFood().getDimensionMappingStudy();
id = knn.getType(myMatrix2); int id = dimensionMappingStudy.toClassification(myMatrix2);
break;
}
regionBody.setType(id); regionBody.setType(id);
System.out.println("类别" + id); System.out.println("类别" + id);
} }

@ -1,9 +1,9 @@
package org.wlld.imageRecognition.segmentation; package org.wlld.imageRecognition.segmentation;
import org.wlld.MatrixTools.Matrix; import org.wlld.MatrixTools.Matrix;
import org.wlld.i.PsoFunction; import org.wlld.MatrixTools.MatrixOperation;
import org.wlld.imageRecognition.RGBNorm;
import org.wlld.imageRecognition.TempleConfig; import org.wlld.imageRecognition.TempleConfig;
import org.wlld.imageRecognition.border.Knn;
import org.wlld.pso.PSO; import org.wlld.pso.PSO;
import java.util.*; import java.util.*;
@ -16,6 +16,11 @@ import java.util.*;
* @Description * @Description
*/ */
public class DimensionMappingStudy { public class DimensionMappingStudy {
private Knn knn = new Knn(1);//一个knn分类器决定进这一层哪个类别
private int id;//类别id
private Map<Integer, DimensionMappingStudy> deepMappingMap = new HashMap<>();
private double[] mappingSigma;//映射层
private double getDist(Matrix data1, Matrix data2) throws Exception { private double getDist(Matrix data1, Matrix data2) throws Exception {
int size = data1.getY(); int size = data1.getY();
double sigma = 0; double sigma = 0;
@ -25,93 +30,137 @@ public class DimensionMappingStudy {
return Math.sqrt(sigma); return Math.sqrt(sigma);
} }
private double compareSame(List<Matrix> testFeatures) throws Exception {//比较同类找最小值 class MinTypeSort implements Comparator<MinType> {
int size = testFeatures.size();
double max = 0; @Override
for (int i = 0; i < size; i++) { public int compare(MinType o1, MinType o2) {
Matrix feature = testFeatures.get(i); if (o1.minDist < o2.minDist) {
double min = -1; return -1;
for (int j = 0; j < size; j++) { } else if (o1.minDist > o2.minDist) {
if (i != j) { return 1;
double dist = getDist(feature, testFeatures.get(j));
if (min == -1 || dist < min) {
min = dist;
} }
return 0;
} }
} }
if (min > max) {
max = min; class MinType {
private double minDist;
private int type;
} }
private double getSub(List<Matrix> featureSame, List<Matrix> featureDifferent) throws Exception {
double minSub = 0;
for (int i = 0; i < featureSame.size(); i++) {
Matrix sameFeature = featureSame.get(i);
double differentMin = -1;//与异类相比的最小值
double sameMin = -1;//与同类相比的最小值
for (int j = 0; j < featureDifferent.size(); j++) {
Matrix differentFeature = featureDifferent.get(j);
double dist = getDist(sameFeature, differentFeature);
if (differentMin < 0 || dist < differentMin) {
differentMin = dist;
} }
return max;
} }
for (int k = 0; k < featureSame.size(); k++) {
private double compareDifferent(List<Matrix> featureSame, List<Matrix> featureDifferent) throws Exception { if (k != i) {
double min = -1;//比较异类取最小值 Matrix feature = featureSame.get(k);
for (Matrix myFeature : featureSame) { double dist = getDist(sameFeature, feature);
for (Matrix feature : featureDifferent) { if (sameMin < 0 || dist < sameMin) {
double dist = getDist(myFeature, feature); sameMin = dist;
if (min < 0 || dist < min) {
min = dist;
} }
} }
} }
return min; double sub = differentMin - sameMin;//异类距离与同类距离的差距,选出其中最小的
if (i == 0) {
minSub = sub;
} else if (sub < minSub) {
minSub = sub;
} }
}
class MinType { return minSub;
private double minDist;
private int type;
} }
public void selfTest(TempleConfig templeConfig) throws Exception {//对模型数据进行自检测 private void nextDeep(TempleConfig templeConfig) throws Exception {//对模型数据进行自检测
Map<Integer, List<Matrix>> featureMap = templeConfig.getKnn().getFeatureMap(); Map<Integer, List<Matrix>> featureMap = knn.getFeatureMap();
Map<Integer, Double> maxMap = new HashMap<>();//保存与该类别最大间距 int nub = featureMap.size() / 2;
if (nub > 1) {
MinTypeSort minTypeSort = new MinTypeSort();
Map<Integer, List<MinType>> minMap = new HashMap<>();//保存与该类别最相似的类别,及距离值 Map<Integer, List<MinType>> minMap = new HashMap<>();//保存与该类别最相似的类别,及距离值
for (Map.Entry<Integer, List<Matrix>> entry : featureMap.entrySet()) { for (Map.Entry<Integer, List<Matrix>> entry : featureMap.entrySet()) {
int key = entry.getKey(); int key = entry.getKey();
List<MinType> minTypes = new ArrayList<>(); List<MinType> minTypes = new ArrayList<>();
List<Matrix> myFeatures = entry.getValue(); List<Matrix> myFeatures = entry.getValue();
double sameMax = compareSame(myFeatures);//同类之间的最大值
maxMap.put(key, sameMax);
for (Map.Entry<Integer, List<Matrix>> entry2 : featureMap.entrySet()) { for (Map.Entry<Integer, List<Matrix>> entry2 : featureMap.entrySet()) {
int testKey = entry2.getKey(); int testKey = entry2.getKey();
if (testKey != key) {//找出最小距离 if (testKey != key) {//找出最小距离
List<Matrix> features = entry2.getValue(); List<Matrix> features = entry2.getValue();
MinType minType = new MinType(); MinType minType = new MinType();
double minDist = compareDifferent(myFeatures, features);//该类别的最小值 double minDist = getSub(myFeatures, features);
if (minDist < sameMax) {
minType.minDist = minDist; minType.minDist = minDist;
minType.type = testKey; minType.type = testKey;
minTypes.add(minType); minTypes.add(minType);
} }
} }
Collections.sort(minTypes, minTypeSort);
int len = 0;
for (int i = 0; i < minTypes.size(); i++) {
if (minTypes.get(i).minDist < 0) {
len++;
} else {
break;
}
}
if (len < nub) {
minTypes = minTypes.subList(0, nub);
} else {
minTypes = minTypes.subList(0, len);
} }
minMap.put(key, minTypes); minMap.put(key, minTypes);
} }
for (Map.Entry<Integer, Double> entry : maxMap.entrySet()) { for (Map.Entry<Integer, List<MinType>> entry : minMap.entrySet()) {
int key = entry.getKey(); if (nub == 2 || nub == 3) {
double maxValue = entry.getValue(); System.out.println("类别===============================" + entry.getKey());
System.out.println("============================================="); }
System.out.println("类别:" + key + ",最大类间距为:" + maxValue); List<MinType> minTypeList = entry.getValue();
List<MinType> minTypes = minMap.get(key); DimensionMappingStudy dimensionMappingStudy = new DimensionMappingStudy();
for (int i = 0; i < minTypes.size(); i++) { Knn myKnn = dimensionMappingStudy.getKnn();
MinType minType = minTypes.get(i); for (MinType minType : minTypeList) {
System.out.println("相近类:" + minType.type + ",最小类间距为:" + minType.minDist); if (nub == 2 || nub == 3) {
System.out.println("type==" + minType.type + ",dist==" + minType.minDist);
}
List<Matrix> featureList = featureMap.get(minType.type);
for (Matrix matrix : featureList) {
myKnn.insertMatrix(matrix, minType.type);
}
}
deepMappingMap.put(entry.getKey(), dimensionMappingStudy);
}
for (Map.Entry<Integer, DimensionMappingStudy> entry : deepMappingMap.entrySet()) {
entry.getValue().start(templeConfig);
} }
} }
} }
public int toClassification(Matrix feature) throws Exception {//进行识别 先映射
feature = mapping(feature, mappingSigma);
int type = knn.getType(feature);
if (deepMappingMap.size() > 0 && deepMappingMap.containsKey(type)) {//继续下一层
return deepMappingMap.get(type).toClassification(feature);
} else {//返回最后结果
return type;
}
}
public void start(TempleConfig templeConfig) throws Exception { public void start(TempleConfig templeConfig) throws Exception {
Map<Integer, List<Matrix>> featureMap = templeConfig.getKnn().getFeatureMap(); Map<Integer, List<Matrix>> featureMap = knn.getFeatureMap();
FeatureMapping featureMapping = new FeatureMapping(featureMap); FeatureMapping featureMapping = new FeatureMapping(featureMap);
int dimensionNub = templeConfig.getFeatureNub() * 3 * 2;//PSO维度 int dimensionNub = templeConfig.getFeatureNub() * 3 * 2;//PSO维度
//创建粒子群 //创建粒子群
PSO pso = new PSO(dimensionNub, null, null, 200, 100, PSO pso = new PSO(dimensionNub, null, null, 500, 100,
featureMapping, 0.4, 2, 2, true, 0.2, 0.01); featureMapping, 0.8, 2, 2, true, 0.2, 0.01);
List<double[]> mappings = pso.start(); List<double[]> mappings = pso.start();
int size = mappings.size(); int size = mappings.size();
double[] mappingSigma = new double[dimensionNub]; mappingSigma = new double[dimensionNub];
for (int i = 0; i < size; i++) { for (int i = 0; i < size; i++) {
double[] mapping = mappings.get(i); double[] mapping = mappings.get(i);
for (int j = 0; j < mapping.length; j++) { for (int j = 0; j < mapping.length; j++) {
@ -121,9 +170,10 @@ public class DimensionMappingStudy {
for (int i = 0; i < mappingSigma.length; i++) { for (int i = 0; i < mappingSigma.length; i++) {
mappingSigma[i] = mappingSigma[i] / size; mappingSigma[i] = mappingSigma[i] / size;
} }
templeConfig.getFood().setMappingParameter(mappingSigma);
//还要把所有已存在的knn特征完成映射 //还要把所有已存在的knn特征完成映射
featureMapping(featureMap, mappingSigma, templeConfig); featureMapping(featureMap, mappingSigma, templeConfig);
//进行下一次映射选择
nextDeep(templeConfig);
} }
private void featureMapping(Map<Integer, List<Matrix>> featureMap, double[] mapping private void featureMapping(Map<Integer, List<Matrix>> featureMap, double[] mapping
@ -150,4 +200,8 @@ public class DimensionMappingStudy {
} }
return matrix; return matrix;
} }
public Knn getKnn() {
return knn;
}
} }

@ -80,6 +80,38 @@ public class FeatureMapping extends Frequency implements PsoFunction {
return min; return min;
} }
private double getSub(List<double[]> featureSame, List<double[]> featureDifferent) {
double minSub = 0;
for (int i = 0; i < featureSame.size(); i++) {
double[] sameFeature = featureSame.get(i);
double differentMin = -1;//与异类相比的最小值
double sameMin = -1;//与同类相比的最小值
for (int j = 0; j < featureDifferent.size(); j++) {
double[] differentFeature = featureDifferent.get(j);
double dist = getDist(sameFeature, differentFeature);
if (differentMin < 0 || dist < differentMin) {
differentMin = dist;
}
}
for (int k = 0; k < featureSame.size(); k++) {
if (k != i) {
double[] feature = featureSame.get(k);
double dist = getDist(sameFeature, feature);
if (sameMin < 0 || dist < sameMin) {
sameMin = dist;
}
}
}
double sub = differentMin - sameMin;//异类距离与同类距离的差距,选出其中最小的
if (i == 0) {
minSub = sub;
} else if (sub < minSub) {
minSub = sub;
}
}
return minSub;
}
private double compareDist(Map<Integer, List<double[]>> mapping) {//比较距离 private double compareDist(Map<Integer, List<double[]>> mapping) {//比较距离
double sigma = 0; double sigma = 0;
for (Map.Entry<Integer, List<double[]>> entry : mapping.entrySet()) { for (Map.Entry<Integer, List<double[]>> entry : mapping.entrySet()) {
@ -94,6 +126,7 @@ public class FeatureMapping extends Frequency implements PsoFunction {
double sameMax = compareSame(myFeature);//同类最大值 double sameMax = compareSame(myFeature);//同类最大值
double differentMin = compareDifferent(myFeature, featureDifferent);//异类最小值 double differentMin = compareDifferent(myFeature, featureDifferent);//异类最小值
double sub = differentMin - sameMax; double sub = differentMin - sameMax;
//double sub = getSub(myFeature, featureDifferent);
sigma = sigma + sub; sigma = sigma + sub;
} }
return sigma; return sigma;

@ -1,5 +1,6 @@
package org.wlld.param; package org.wlld.param;
import org.wlld.imageRecognition.segmentation.DimensionMappingStudy;
import org.wlld.imageRecognition.segmentation.KNerveManger; import org.wlld.imageRecognition.segmentation.KNerveManger;
import org.wlld.imageRecognition.segmentation.RgbRegression; import org.wlld.imageRecognition.segmentation.RgbRegression;
@ -24,14 +25,10 @@ public class Food {
private int step = 1;//特征取样步长 private int step = 1;//特征取样步长
private int speciesNub = 24;//种类数 private int speciesNub = 24;//种类数
private KNerveManger kNerveManger; private KNerveManger kNerveManger;
private double[] mappingParameter;//特征映射 private DimensionMappingStudy dimensionMappingStudy = new DimensionMappingStudy();
public double[] getMappingParameter() { public DimensionMappingStudy getDimensionMappingStudy() {
return mappingParameter; return dimensionMappingStudy;
}
public void setMappingParameter(double[] mappingParameter) {
this.mappingParameter = mappingParameter;
} }
public KNerveManger getkNerveManger() { public KNerveManger getkNerveManger() {

@ -98,11 +98,11 @@ public class FoodTest {
specifications.setMaxWidth(600); specifications.setMaxWidth(600);
specifications.setMaxHeight(600); specifications.setMaxHeight(600);
specificationsList.add(specifications); specificationsList.add(specifications);
KNerveManger kNerveManger = templeConfig.getFood().getkNerveManger(); //KNerveManger kNerveManger = templeConfig.getFood().getkNerveManger();
// ThreeChannelMatrix threeChannelMatrix = picture.getThreeMatrix("/Users/lidapeng/Desktop/myDocument/d.jpg"); // ThreeChannelMatrix threeChannelMatrix = picture.getThreeMatrix("/Users/lidapeng/Desktop/myDocument/d.jpg");
// operation.setTray(threeChannelMatrix); // operation.setTray(threeChannelMatrix);
String name = "/Users/lidapeng/Desktop/test/testOne/"; String name = "/Users/lidapeng/Desktop/test/testOne/";
for (int i = 0; i < 3; i++) { for (int i = 0; i < 4; i++) {
System.out.println("轮数============================" + i); System.out.println("轮数============================" + i);
ThreeChannelMatrix threeChannelMatrix1 = picture.getThreeMatrix(name + "a" + i + ".jpg"); ThreeChannelMatrix threeChannelMatrix1 = picture.getThreeMatrix(name + "a" + i + ".jpg");
ThreeChannelMatrix threeChannelMatrix2 = picture.getThreeMatrix(name + "b" + i + ".jpg"); ThreeChannelMatrix threeChannelMatrix2 = picture.getThreeMatrix(name + "b" + i + ".jpg");
@ -153,12 +153,8 @@ public class FoodTest {
operation.colorStudy(threeChannelMatrix23, 23, specificationsList, name); operation.colorStudy(threeChannelMatrix23, 23, specificationsList, name);
operation.colorStudy(threeChannelMatrix24, 24, specificationsList, name); operation.colorStudy(threeChannelMatrix24, 24, specificationsList, name);
} }
DimensionMappingStudy dimensionMappingStudy = new DimensionMappingStudy(); DimensionMappingStudy dimensionMappingStudy = templeConfig.getFood().getDimensionMappingStudy();
//System.out.println("映射前检查========================");
dimensionMappingStudy.selfTest(templeConfig);//检查
dimensionMappingStudy.start(templeConfig);//完成映射 dimensionMappingStudy.start(templeConfig);//完成映射
System.out.println("映射后检查========================");
dimensionMappingStudy.selfTest(templeConfig);//检查
//System.out.println("========================"); //System.out.println("========================");
// kNerveManger.startStudy(); // kNerveManger.startStudy();
int i = 4; int i = 4;

Loading…
Cancel
Save