资源简介
经过公司CTO的帮助,完成了基于Java语言实现的,相似图像识别,基于直方图比较算法,经过测算此算法优于基于图像指纹的哈希算法.千金难买好代码.

代码片段和文件信息
package com.gloomyfish.image.compare;
//Download by http://www.codefans.net
import java.awt.image.BufferedImage;
public class HistogramFilter {
private int redBins;
private int greenBins;
private int blueBins;
public HistogramFilter() {
redBins = greenBins = blueBins = 4;
}
public void setRedBinCount(int redBinCount) {
this.redBins = redBinCount;
}
public void setGreenBinCount(int greenBinCount) {
this.greenBins = greenBinCount;
}
public void setBlueBinCount(int blueBinCount) {
this.blueBins = blueBinCount;
}
public float[] filter(BufferedImage src BufferedImage dest) {
int width = src.getWidth();
int height = src.getHeight();
int[] inPixels = new int[width*height];
float[] histogramData = new float[redBins * greenBins * blueBins];
getRGB( src 0 0 width height inPixels );
int index = 0;
int redIdx = 0 greenIdx = 0 blueIdx = 0;
int singleIndex = 0;
float total = 0;
for(int row=0; row int ta = 0 tr = 0 tg = 0 tb = 0;
for(int col=0; col index = row * width + col;
ta = (inPixels[index] >> 24) & 0xff;
tr = (inPixels[index] >> 16) & 0xff;
tg = (inPixels[index] >> 8) & 0xff;
tb = inPixels[index] & 0xff;
redIdx = (int)getBinIndex(redBins tr 255);
greenIdx = (int)getBinIndex(greenBins tg 255);
blueIdx = (int)getBinIndex(blueBins tb 255);
singleIndex = redIdx + greenIdx * redBins + blueIdx * redBins * greenBins;
histogramData[singleIndex] += 1;
total += 1;
}
}
// start to normalize the histogram data
for (int i = 0; i < histogramData.length; i++)
{
histogramData[i] = histogramData[i] / total;
}
return histogramData;
}
private float getBinIndex(int binCount int color int colorMaxValue) {
float binIndex = (((float)color)/((float)colorMaxValue)) * ((float)binCount);
if(binIndex >= binCount)
binIndex = binCount - 1;
return binIndex;
}
public int[] getRGB( BufferedImage image int x int y int width int height int[] pixels ) {
int type = image.getType();
if ( type == BufferedImage.TYPE_INT_ARGB || type == BufferedImage.TYPE_INT_RGB )
return (int [])image.getRaster().getDataElements( x y width height pixels );
return image.getRGB( x y width height pixels 0 width );
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2012-11-13 09:58 基于Java实现的图像识别\libre-free.com\
目录 0 2015-01-27 13:21 基于Java实现的图像识别\libre-free.com\ImageComparerUI基于Java语言实现的相似图像识别,基于直方图比较算法\
文件 2643 2012-11-13 09:58 基于Java实现的图像识别\libre-free.com\ImageComparerUI基于Java语言实现的相似图像识别,基于直方图比较算法\HistogramFilter.java
文件 1124 2012-11-13 09:58 基于Java实现的图像识别\libre-free.com\ImageComparerUI基于Java语言实现的相似图像识别,基于直方图比较算法\ImageComparer.java
文件 4378 2012-11-13 10:02 基于Java实现的图像识别\libre-free.com\ImageComparerUI基于Java语言实现的相似图像识别,基于直方图比较算法\ImageComparerUI.java
目录 0 2015-01-27 13:21 基于Java实现的图像识别\
- 上一篇:简单的敏感词统计系统 java
- 下一篇:IC卡读写器JAVA
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论