资源简介
基于Java语言实现的
相似图像识别,基于直方图比较算法
代码片段和文件信息
package com.gloomyfish.image.compare;
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 );
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4341 2012-07-21 23:49 ImageComparerUI.java
文件 1087 2012-07-21 16:19 ImageComparer.java
文件 2606 2012-07-21 15:55 HistogramFilter.java
相关资源
- java开发实战经典——课后答案
- Java游戏设计(包含论文)
- java核心技术第十版源码
- 服务端接入顺丰apijava可直接运行
- javaweb电商项目视频
- Java实现Des加密不用加载包
- java开发汽车租赁系统
- java简单的购物车系统
- 基于javaweb的简单新闻管理系统
- 图书管理系统毕业设计+源码 - Java源码
- Java Concurrency in Practice.mobi
- java课程设计--个人电话簿增删查改排
- Android手机防盗软件Java源码
- jspsmartupload.jar包
- JavaH5微信支付
- Java实现画板Java小程序 模仿Win系统画
- java_NextDay
- Java图书馆借阅管理系统
- Java实现用户注册 判断是否重复,写到
- Java实现的K-Means算法的动态演示
- 汽车管理系统Java实现 源程序
- java做的名片管理系统
- 基于Java的Bilibili弹幕截取小程序
- C#实现Java语言MD5withRSA/SHA256withRSA/SHA
- java实现截图功能,类似QQ截图
- java socket通信自定义消息协议
- JAVA教务管理系统毕业论文.docx
- 疯狂Java讲义第三版随书光盘所有内容
- java 求四边形的面积 梯形,平行四边
- 史上最NB的最新JavaSE视频教程
评论
共有 条评论