资源简介

这是一个用pHash算法实现的图像搜索实例,供大家相互学习参考。

资源截图

代码片段和文件信息

package cn.edu.jxau.image;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.awt.image.ColorModel;
/**
 * 图像的放大与缩小
 * @author xiaoxu
 *
 */
public class AmplificatingShrinking {

/**
 * 双线性插值法图像的放大
 * @param srcPath
 * @param distPath
 * @param formatName
 * @param k1
 * @param k2
 */
public static void bilinearityInterpolation(String srcPath String distPath
String formatName float k1 float k2) {
BufferedImage img = ImageDigital.readImg(srcPath);
BufferedImage imgOut = bilinearityInterpolation(img k1 k2);
ImageDigital.writeImg(imgOut formatName distPath);
}
/**
 * 双线性插值法图像的放大
 * 
 * @param img
 *            要缩小的图像对象
 * @param k1
 *            要缩小的列比列
 * @param k2
 *            要缩小的行比列
 * @return 返回处理后的图像对象
 */
public static BufferedImage bilinearityInterpolation(BufferedImage img float k1 float k2) {
if (k1 < 1 || k2 < 1) {// 如果k1 <1 || k2<1则是图片缩小,不是放大
System.err
.println(“this is shrink image funcation please set k1<=1 and k2<=1!“);
return null;
}
float ii = 1 / k1; // 采样的行间距
float jj = (1 / k2); // 采样的列间距
int dd = (int) (ii * jj);
// int m=0  n=0;
int imgType = img.getType();
int w = img.getWidth(); // 原图片的宽
int h = img.getHeight(); // 原图片的宽
int m = Math.round(k1 * w); // 放大后图片的宽
int n = Math.round(k2 * h); // 放大后图片的宽
int[] pix = new int[w * h];
pix = img.getRGB(0 0 w h pix 0 w);
/*
 * System.out.println(w + “ * “ + h); System.out.println(m + “ * “ + n);
 */
int[] newpix = new int[m * n];

for (int j = 0; j < h - 1; j++) {
for (int i = 0; i < w - 1; i++) {
int x0 = Math.round(i * k1);
int y0 = Math.round(j * k2);
int x1 y1;
if (i == w - 2) {
x1 = m - 1;
} else {
x1 = Math.round((i + 1) * k1);
}
if (j == h - 2) {
y1 = n - 1;
} else {
y1 = Math.round((j + 1) * k2);
}
int d1 = x1 - x0;
int d2 = y1 - y0;
if (0 == newpix[y0 * m + x0]) {
newpix[y0 * m + x0] = pix[j * w + i];
}
if (0 == newpix[y0 * m + x1]) {
if (i == w - 2) {
newpix[y0 * m + x1] = pix[j * w + w - 1];
} else {
newpix[y0 * m + x1] = pix[j * w + i + 1];
}
}
if (0 == newpix[y1 * m + x0]) {
if (j == h - 2) {
newpix[y1 * m + x0] = pix[(h - 1) * w + i];
} else {
newpix[y1 * m + x0] = pix[(j + 1) * w + i];
}
}
if (0 == newpix[y1 * m + x1]) {
if (i == w - 2 && j == h - 2) {
newpix[y1 * m + x1] = pix[(h - 1) * w + w - 1];
} else {
newpix[y1 * m + x1] = pix[(j + 1) * w + i + 1];
}
}
int r g b;
float c;
ColorModel cm = ColorModel.getRGBdefault();
for (int l = 0; l < d2; l++) {
for (int k = 0; k < d1; k++) {
if (0 == l) {
// f(x0) = f(00) + c1*(f(10)-f(00))
if (j < h - 1 && newpix[y0 * m + x0 + k] == 0) {
c = (float) k / d1;

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        301  2012-11-24 23:35  ImageSearch\.classpath

     文件        387  2012-11-24 23:35  ImageSearch\.project

     文件        629  2012-11-24 23:35  ImageSearch\.settings\org.eclipse.jdt.core.prefs

     文件       7364  2012-11-24 23:36  ImageSearch\bin\cn\edu\jxau\image\AmplificatingShrinking.class

     文件       4047  2012-11-24 23:41  ImageSearch\bin\cn\edu\jxau\image\Fingerprint.class

     文件       4822  2012-11-24 23:54  ImageSearch\bin\cn\edu\jxau\image\ImageDigital.class

     文件       3127  2012-11-24 23:35  ImageSearch\bin\cn\edu\jxau\image\Transformation.class

     文件      69007  2012-11-24 23:37  ImageSearch\bin\image\person.jpg

     文件       2143  2012-11-24 23:37  ImageSearch\bin\image\person1.jpg

     文件       7959  2012-11-24 23:37  ImageSearch\bin\image\person10.jpg

     文件       2034  2012-11-24 23:37  ImageSearch\bin\image\person11.jpg

     文件       5181  2012-11-24 23:37  ImageSearch\bin\image\person2.jpg

     文件       1847  2012-11-24 23:37  ImageSearch\bin\image\person3.jpg

     文件       1143  2012-11-24 23:37  ImageSearch\bin\image\person4.jpg

     文件       4354  2012-11-24 23:37  ImageSearch\bin\image\person5.jpg

     文件       6735  2012-11-24 23:37  ImageSearch\bin\image\person6.jpg

     文件       7442  2012-11-24 23:37  ImageSearch\bin\image\person7.jpg

     文件       1872  2012-11-24 23:37  ImageSearch\bin\image\person8.jpg

     文件       1191  2012-11-24 23:37  ImageSearch\bin\image\person9.jpg

     文件      12960  2012-11-24 23:36  ImageSearch\src\cn\edu\jxau\image\AmplificatingShrinking.java

     文件       4736  2012-11-24 23:41  ImageSearch\src\cn\edu\jxau\image\Fingerprint.java

     文件       8590  2012-11-24 23:54  ImageSearch\src\cn\edu\jxau\image\ImageDigital.java

     文件       3310  2012-11-23 23:37  ImageSearch\src\cn\edu\jxau\image\Transformation.java

     文件      69007  2012-11-24 23:37  ImageSearch\src\image\person.jpg

     文件       2143  2012-11-24 23:37  ImageSearch\src\image\person1.jpg

     文件       7959  2012-11-24 23:37  ImageSearch\src\image\person10.jpg

     文件       2034  2012-11-24 23:37  ImageSearch\src\image\person11.jpg

     文件       5181  2012-11-24 23:37  ImageSearch\src\image\person2.jpg

     文件       1847  2012-11-24 23:37  ImageSearch\src\image\person3.jpg

     文件       1143  2012-11-24 23:37  ImageSearch\src\image\person4.jpg

............此处省略22个文件信息

评论

共有 条评论