修改图像缩放bug

pull/52/head
lidapeng 5 years ago
parent 134db4b9cf
commit 1ab38fc6d8

@ -6,7 +6,7 @@
<groupId>com.wlld</groupId>
<artifactId>easyAi</artifactId>
<version>1.0.3</version>
<version>1.1.1</version>
<name>easyAi</name>
<!-- FIXME change it to the project's website -->

@ -365,11 +365,11 @@ public class Convolution extends Frequency {
int x = xn / size;//求导后矩阵的行数
int y = yn / size;//求导后矩阵的列数
Matrix myMatrix = new Matrix(x, y);//迟化后的矩阵
for (int i = 0; i < xn - size; i += size) {
for (int j = 0; j < yn - size; j += size) {
for (int i = 0; i <= xn - size; i += size) {
for (int j = 0; j <= yn - size; j += size) {
Matrix matrix1 = matrix.getSonOfMatrix(i, j, size, size);
double maxNub = 0;
int n = size * size;
double maxNub = 0.0;
double n = size * size;
double sigma = 0;
for (int t = 0; t < matrix1.getX(); t++) {
for (int k = 0; k < matrix1.getY(); k++) {

@ -15,6 +15,10 @@ public class RGBNorm {
private List<double[]> rgbs = new ArrayList<>();
private RgbRegression rgbRegression;
public List<double[]> getRgbs() {
return rgbs;
}
public RgbRegression getRgbRegression() {
return rgbRegression;
}
@ -31,10 +35,6 @@ public class RGBNorm {
rgbUp = rgb;
}
public List<double[]> getRgbs() {
return rgbs;
}
public void clear() {
rgbAll = new double[3];
nub = 0;

@ -262,6 +262,7 @@ public class Watershed {
int y = matrix.getY();
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
if (rainfallMap.getNumber(i, j) == 0) {//进行降雨
fall(i, j);
}
@ -276,86 +277,14 @@ public class Watershed {
regionBodies.add(regionBody);
}
}
// for (RegionBody regionBody : regionBodies) {
// int minX = regionBody.getMinX();
// int maxX = regionBody.getMaxX();
// int minY = regionBody.getMinY();
// int maxY = regionBody.getMaxY();
// System.out.println("minX==" + minX + ",minY==" + minY + ",maxX==" + maxX + ",maxY==" + maxY);
// }
return iou(regionBodies);
//return regionBodies;
}
private List<RegionBody> iou(List<RegionBody> regionBodies) {
List<Integer> list = new ArrayList<>();
double maxMinX, minMaxX, maxMinY, minMaxY;
for (int i = 0; i < regionBodies.size(); i++) {
if (!list.contains(i)) {
RegionBody regionBody = regionBodies.get(i);
int minX1 = regionBody.getMinX();
int minY1 = regionBody.getMinY();
int maxX1 = regionBody.getMaxX();
int maxY1 = regionBody.getMaxY();
double s1 = (maxX1 - minX1) * (maxY1 - minY1);
for (int j = 0; j < regionBodies.size(); j++) {
if (j != i && !list.contains(j)) {
RegionBody body = regionBodies.get(j);
int minX2 = body.getMinX();
int minY2 = body.getMinY();
int maxX2 = body.getMaxX();
int maxY2 = body.getMaxY();
double s2 = (maxX2 - minX2) * (maxY2 - minY2);
double s = s1 + s2;
if (maxX2 > maxX1) {
maxMinX = maxX1;
} else {
maxMinX = maxX2;
}
if (minX2 > minX1) {
minMaxX = minX2;
} else {
minMaxX = minX1;
}
if (maxY2 > maxY1) {
maxMinY = maxY1;
} else {
maxMinY = maxY2;
}
if (minY2 > minY1) {
minMaxY = minY2;
} else {
minMaxY = minY1;
}
double intersectX = ArithUtil.sub(maxMinX, minMaxX);//相交X
double intersectY = ArithUtil.sub(maxMinY, minMaxY);//相交Y
if (intersectX < 0) {
intersectX = 0;
}
if (intersectY < 0) {
intersectY = 0;
}
double intersectS = ArithUtil.mul(intersectX, intersectY);//相交面积
double mergeS = ArithUtil.sub(s, intersectS);//相并面积
double iou = ArithUtil.div(intersectS, mergeS);
if (iou > maxIou) {
if (s1 < s2) {//s1 是i ,大的
list.add(j);
} else {
list.add(i);
}
}
}
}
}
}
List<RegionBody> regionBodies2 = new ArrayList<>();
for (int i = 0; i < regionBodies.size(); i++) {
if (!list.contains(i)) {
regionBodies2.add(regionBodies.get(i));
}
for (RegionBody regionBody : regionBodies) {
int minX = regionBody.getMinX();
int maxX = regionBody.getMaxX();
int minY = regionBody.getMinY();
int maxY = regionBody.getMaxY();
System.out.println("minX==" + minX + ",minY==" + minY + ",maxX==" + maxX + ",maxY==" + maxY);
}
return regionBodies2;
return regionBodies;
}
private boolean check(int minX, int minY, int maxX, int maxY) {
@ -490,10 +419,10 @@ public class Watershed {
}
}
}
//System.out.println(regionMap.getString());
pixFilter();//痕迹过滤
createMerge();//提取候选区
merge();//合并候选区
//System.out.println(regionMap.getString());
}
private int getMinIndex(double[] array, double mySelf) {//获取最小值

@ -79,9 +79,9 @@ public class FoodTest {
Food food = templeConfig.getFood();
//
cutting.setMaxRain(360);//切割阈值
cutting.setTh(0.8);
cutting.setTh(0.3);
cutting.setRegionNub(200);
cutting.setMaxIou(1.0);
cutting.setMaxIou(2.0);
//knn参数
templeConfig.setKnnNub(1);
//池化比例
@ -90,9 +90,11 @@ public class FoodTest {
templeConfig.setFeatureNub(3);//聚类特征数量
//菜品识别实体类
food.setShrink(20);//缩紧像素
food.setTimes(2);//聚类数据增强
food.setTimes(1);//聚类数据增强
food.setRowMark(0.1);//0.12
food.setColumnMark(0.1);//0.25
food.setRegressionNub(20000);
food.setTrayTh(0.08);
templeConfig.setClassifier(Classifier.KNN);
templeConfig.init(StudyPattern.Cover_Pattern, true, 400, 400, 3);
if (modelParameter != null) {
@ -109,29 +111,19 @@ public class FoodTest {
Specifications specifications = new Specifications();
specifications.setMinWidth(300);
specifications.setMinHeight(300);
specifications.setMaxWidth(900);
specifications.setMaxHeight(900);
specifications.setMaxWidth(1000);
specifications.setMaxHeight(1000);
specificationsList.add(specifications);
ThreeChannelMatrix threeChannelMatrix = picture.getThreeMatrix("/Users/lidapeng/Desktop/myDocument/d.jpg");
operation.setTray(threeChannelMatrix);
for (int i = 1; i <= 10; i++) {
ThreeChannelMatrix threeChannelMatrix1 = picture.getThreeMatrix("/Users/lidapeng/Desktop/foodModel/a/a" + i + ".jpg");
ThreeChannelMatrix threeChannelMatrix2 = picture.getThreeMatrix("/Users/lidapeng/Desktop/foodModel/b/b" + i + ".jpg");
ThreeChannelMatrix threeChannelMatrix3 = picture.getThreeMatrix("/Users/lidapeng/Desktop/foodModel/c/c" + i + ".jpg");
ThreeChannelMatrix threeChannelMatrix4 = picture.getThreeMatrix("/Users/lidapeng/Desktop/foodModel/d/d" + i + ".jpg");
ThreeChannelMatrix threeChannelMatrix5 = picture.getThreeMatrix("/Users/lidapeng/Desktop/foodModel/e/e" + i + ".jpg");
ThreeChannelMatrix threeChannelMatrix6 = picture.getThreeMatrix("/Users/lidapeng/Desktop/foodModel/f/f" + i + ".jpg");
for (int i = 1; i <= 1; i++) {
ThreeChannelMatrix threeChannelMatrix1 = picture.getThreeMatrix("/Users/lidapeng/Desktop/myDocument/m.jpg");
operation.colorStudy(threeChannelMatrix1, 1, specificationsList);
operation.colorStudy(threeChannelMatrix2, 2, specificationsList);
operation.colorStudy(threeChannelMatrix3, 3, specificationsList);
operation.colorStudy(threeChannelMatrix4, 4, specificationsList);
operation.colorStudy(threeChannelMatrix5, 5, specificationsList);
operation.colorStudy(threeChannelMatrix6, 6, specificationsList);
System.out.println("=======================================" + i);
// System.out.println("=======================================" + i);
}
// minX==301,minY==430,maxX==854,maxY==920
// minX==497,minY==1090,maxX==994,maxY==1520
test2(templeConfig);
// test2(templeConfig);
}
public static void study() throws Exception {

Loading…
Cancel
Save