资源简介
经过公司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
相关资源
- IC卡读写器JAVA
- 简单的敏感词统计系统 java
- Java求解篮球错排问题
- JAVA计算器源代码与WINDOWS的计算器长得
- 基于java开发的考勤管理系统
- 国密算法SM4加解密算法JAVA
- 单点登录sso的原理与java实现详细讲解
- java 单机版 考试登陆系统 附有登陆
- java用数组实现约瑟夫环
- Java学生管理系统,使用eclipse,sql s
- java实现蜘蛛纸牌游戏
- 使用java SWT编写界面的,多代码
- swing Java 小家电系统代码
- 超市收银系统Java源代码
- JAVA实现矩阵的加减和转置
- 欧拉回路程序java
- core-3.0.0.jar QR二维码3.0 版本,Java生成
- Java Tomcat二级域名Session共享
- 学籍管理系统JAVA ACCESS 毕业设计
- java基础.xmind
- java聊天室程序带数据库
- Java矩阵包Jama-1.0.3.jar
- Javaweb全套流行框架整理视频
- 练习--java实现的打字游戏
- 断点续传 JAVA版 迅雷
- java教学计划编制的全部代码
- java导出oracle到excel
- Java简单英文打字游戏
- 图书馆管理系统Java源码+MySQl数据库
- Eclipse下运行java Swarm以及jheatbugs的图文
评论
共有 条评论