基于内容的图像检索(颜色,直方图相交法,)java实现代码
来源:互联网 发布:周星驰喜欢林允吗 知乎 编辑:程序博客网 时间:2024/06/05 09:31
直方图特征:
对颜色特征的表达方式有许多种,我们采用直方图进行特征描述。常见的直方图有两种:统计直方图,累积直方图。我们将分别实验两种直方图在图像聚类和检索中的性能。
l 统计直方图
为利用图像的特征描述图像,可借助特征的统计直方图。图像特征的统计直方图实际是一个1-D的离散函数,即:
上式中k代表图像的特征取值,L是特征可取值个数,是图像中具有特征值为k的像素的个数,N是图像像素的总数,一个示例如下图:其中有8个直方条,对应图像中的8种灰度像素在总像素中的比例。
累积直方图
0
0 1 2 3 4 5 6 7
2 直方图相似性度量
得到图像特征的统计直方图后,不同图像之间的特征匹配可借助计算直方图间的相似度量来进行,以下介绍几种常见的直方图的相似度量方法:
l 直方图相交法
另分别为两幅图像某一特征的统计直方图,则两图像之间的匹配值P(Q, D)可借助直方图相交来实现,即:
l 直方图匹配法
直方图间的距离可使用一般的欧式距离函数来衡量:
我们可以实验多种相似性度量准则,研究它们之间的差异,找出对于某类图像,那种相似性度量能更加准确的描述两幅图像之间的相似程度。
代码:获取图片特征值为0~255的像素个数,并存入histgram[0][i],hisgram[1][i],hisgram[2][i]中,其中i>=0&&i<=255;
public static double [][] GetHistogram1(BufferedImage img){ double [][] histgram=new double [3][256]; int width=img.getWidth();//图片宽度 int height=img.getHeight();//图片高度 int pix[]= new int [width*height];//像素个数 int r,g,b;//记录R、G、B的值 pix = img.getRGB(0, 0, width, height, pix, 0, width);//将图片的像素值存到数组里 for(int i=0; i<width*height; i++) { r = pix[i]>>16 & 0xff; //提取R g = pix[i]>>8 & 0xff; b = pix[i] & 0xff; histgram[0][r] ++; histgram[1][g] ++; histgram[2][b] ++; } double red =0,green=0,blue=0; for(int j=0;j<256;j++){ red+=histgram[0][j]; green+=histgram[1][j]; blue+=histgram[2][j]; } for(int j=0;j<256;j++)//将直方图每个像素值的总个数进行量化 { histgram[0][j]/=red; histgram[1][j]/=green; histgram[2][j]/=blue; } return histgram;}
求相似度:
欧式系数法
//欧式距离求图片的相似度public static double GetSimilarity2(double [][] Rhistgram,double [][] Dhistgram){ double similar=(double)0.0;//相似度 for(int i=0;i<3;i++) { for(int j=0;j<Rhistgram[i].length;j++) { similar+=(Rhistgram[i][j]-Dhistgram[i][j])*(Rhistgram[i][j]-Dhistgram[i][j]); } } similar=similar/6; similar=Math.sqrt(similar); //similar=similar/3; return similar;}求相似度:
传统直方图相交法:
//// 传统的直方图相交法 统计RGB 归一化 后用交来求两个图片的相似度public static double GetSimilarity1(double [][] Rhistgram,double [][] Dhistgram){ double similar=(double)0.0;//相似度 for(int i=0;i<3;i++) { for(int j=0;j<Rhistgram[i].length;j++) { similar+=Math.min(Rhistgram[i][j], Dhistgram[i][j]); } } similar=similar/3; return similar;}
所有代码下载:http://download.csdn.net/detail/u014112584/7518319
1 0
- 基于内容的图像检索(颜色,直方图相交法,)java实现代码
- vc++基于颜色直方图的图像检索,含代码
- vc++基于颜色直方图的图像检索,含代码
- 基于颜色直方图的图像检索
- opencv_基于直方图内容的图像检索
- 基于直方图的图像检索OpenCV实现
- 基于HSV分块颜色直方图的图像检索算法
- 我的OpenCV学习笔记(14):用直方图对比完成基于内容的图像检索
- opencv基于直方图实现图像检索匹配
- CBIR 基于内容的图像检索系统 纹理,形状,颜色和空间特征综合检索 VC++实现
- CBIR: Colour Features 基于内容的图像检索:颜色特征
- 基于HSV分块直方图的图像检索
- 基于HSV 颜色空间的图像检索matlab代码
- 基于内容的图像检索
- 基于内容的图像检索
- LIRe图像检索:RGB和HSV空间的颜色直方图
- 基于内容图像检索
- 基于颜色特征的图像检索
- JPQL语法总结
- pulic继承方式下
- ubuntu14.04和window8.1双系统的安装和一些注意事项
- C语言中常见的内存错误与解决方法
- poj_3468线段树成段更新求区间和
- 基于内容的图像检索(颜色,直方图相交法,)java实现代码
- 2C02-View-Layout-Animation-list-Cascade
- UIButton事件的方法解释(一)
- linux 压缩文件的命令总结
- 织梦单页面自动更新的方法
- DataGridView绑定数据源
- NEFU 458 矩阵连乘
- C语言FILE读写操作
- SIP初步