/*
* Copyright 2013 Alibaba.com All right reserved. This software is the
* confidential and proprietary information of Alibaba.com ("Confidential
* Information"). You shall not disclose such Confidential Information and shall
* use it only in accordance with the terms of the license agreement you entered
* into with Alibaba.com.
*/
package com.alibaba.simpleimage.analyze.sift;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileFilter;
import java.util.List;
import javax.imageio.ImageIO;
import com.alibaba.simpleimage.analyze.ModifiableConst;
import com.alibaba.simpleimage.analyze.sift.SIFT;
import com.alibaba.simpleimage.analyze.sift.io.KDFeaturePointListInfo;
import com.alibaba.simpleimage.analyze.sift.io.KDFeaturePointWriter;
import com.alibaba.simpleimage.analyze.sift.render.RenderImage;
import com.alibaba.simpleimage.analyze.sift.scale.KDFeaturePoint;
public class MakeSiftData {
static {
System.setProperty(ModifiableConst._TOWPNTSCALAMINUS, "8.0");
System.setProperty(ModifiableConst._SLOPEARCSTEP, "5");
System.setProperty(ModifiableConst._TOWPNTORIENTATIONMINUS, "0.05");
}
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
File logoDir = new File("/Users/axman/Downloads/model/img");
File[] logoFiles = logoDir.listFiles(new FileFilter() {
public boolean accept(File arg0) {
return arg0.getName().endsWith(".png");
}
});
int i = 0;
for (File logoFile : logoFiles) {
BufferedImage img = ImageIO.read(logoFile);
RenderImage ri = new RenderImage(img);
SIFT sift = new SIFT();
sift.detectFeatures(ri.toPixelFloatArray(null));
List<KDFeaturePoint> al = sift.getGlobalKDFeaturePoints();
KDFeaturePointListInfo info = new KDFeaturePointListInfo();
info.setHeight(img.getHeight());
info.setWidth(img.getWidth());
info.setImageFile(logoFile.getName());
info.setList(al);
KDFeaturePointWriter.writeComplete("/Users/axman/Downloads/model/sift/" + logoFile.getName() + ".sift",
info);
i++;
System.out.println(i);
if (i == 100) break;
}
System.out.println("total times:" + (System.currentTimeMillis() - start));
}
}