注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

斗天堂

douzsh还活着

 
 
 

日志

 
 

基于内容的图像检索(CBIR)  

2007-09-07 10:51:46|  分类: CBIR |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

所谓基于内容图像的检索是指由图像分析软件对输入的图像先进行图像分析,根据图像中物体或区域的颜色(color)、形状(shape)或纹理(texture)等 特征以及这些特征的组合,自动抽取特征,在将输入图像存入图像库的同时将其相应的特征向量也存入与图像库相连的特征库。在进行检索图像时,对每一幅给定的 查询图,进行图像分析,并提取图像特征向量。将该图像的特征向量和特征库中的特征向量进行匹配,根据匹配的结果到图像库中搜索就可以提取出所需要的检索 图。这是一种基于图像固有属性的机械匹配,特别适用于检索目标明确的查询要求(例如对商标的检索),产生的结果也比较准确。目前这种较成熟的检索技术主要应用于图像数据库的检索。在基于Web的图像搜索引擎中应用这种检索技术虽还具有一定的困难,但已有部分图像搜索引擎进行了尝试,如、yahoo, WebSEEK就提供了基于图像的形状或颜色直方图的粗陋的可视检索功能。

   基于内容的图像检索是一个逐步求精的过程,大致可以经过以下几个步骤:

     (1).特征提取

对图像数据进行自动或半自动的特征提取,提取用户感兴趣的、适合检索要求的特征。特征提取可以是全局性的,如整幅图像,也可能是针对某个目标,如图像中的子区域等。

(2).图像匹配

在选取了特征之后,需要选择或寻找适当的判别准则,从而判断出待识别的图像的特征与数据库中的哪些图像的特征最接近。常用的度量准则是距离度量法。

(3).结果输出,将满足一定相似性条件的一组候选结果按相似度大小排列后返回给用户。

(4).特征调整,对系统返回的结果可通过浏览来挑选,直至找到满意的结果,或从候选结果中选择一个示例,经过特征调整,形成一个新的查询。

   

图像特征的提取的方法

    图像特征提取的好坏,将直接影响着图像检索系统的性能,特征提取是基于内容的图像检索的基础。特征的提取可以分为手工提取、半自动提取和自动提取。这在很大程度上依赖于图像处理技术的发展。

    从图像中提取出来的图像特征,主要分为三个层次:低 层次、中层次和高层次。低层次的图像特征是形状、纹理、颜色、轮廓等图像某一方面的特征。高层次的图像特征是在图像中层次特征基础上的再一次抽象,它赋予 图像一定的语义信息,是图像所包含内容的一种抽象概括,也是基于内容的图像检索所要达到的最终目标。本文主要是针对颜色特征的提取进行研究。

基于颜色特征的图像检索

    在 图像的形状、颜色、纹理等特征中,颜色特征是最显著、最可靠、最稳定的视觉特征,是人识别图像的主要感知特征。相对于几何特征而言,颜色对图像中子对象的 大小和方向的变化都不敏感,具有相当强的鲁棒性。同时,在许多情况下,颜色又是描述一幅图像最简便而有效的特征。人们对于一幅图像的印象,往往从图像中颜 色的空间分布开始。所有这些都促使颜色成为基于内容的图像检索所采取的主要手段之一。

    对于基于颜色特征的图像检索,科学工作者们提出了多种方案。譬如颜色直方图、主色调、颜色矩(Color Moments),颜色集(Color sets)、聚类、扫描线投影等检索算法,颜色直方图是目前较常使用的检索方法。

特征提取与图像子块的划分

特征提取是图像分析和识别的基础。特征提取的方法是决定图像检索系统效率的关键。一般情况下,图像的目标形状可以通过图像分割获得。但是,图像分割是图像分析中公开的难题,尤其对于场景复杂的图像,通过分割直接提取有意义的形状特征几乎是不可能的。为了避免图像分割的困难,文中采用几何划分的方法对图像进行局部特征提取,并用特征组合描述整幅图像。本文将图像划分成大小相等的栅格状区域,提取每块的颜色直方图作为特征矢量。用具有视觉一致性的HSV 颜色空间模型分析图像颜色信息。为了减少计算复杂性,HSV 空间的每一维分量都均匀量化为10 份。因为光照强度不影响图像的内容表示,所以V分量可以忽略不计。这样计算颜色直方图时,通过划分后,每一个块的特征包含了颜色的局部分布信息,而所有块的空间分布,又反映了图像内容的颜色模式结构。因此,对于一幅场景复杂的图像,可以从结构分布的角度,用特征组合的方式描述。

在基于划分的特征表示方法中,划分尺度的选择直接影响图像内容描述的有效性[6] 。全局颜色直方图虽然具有计算简单,对平移和旋转不敏感的优点,但无法捕捉颜色组成之间的空间关系,丢失了图像的空间信息。这无疑是不够准确的。两幅颜色直方图非常相似的图像其内容可能丝毫无相似之处。因此,在基于颜色的图像检索中引入空域的信息对于确保检索精度是十分重要的。事实上,颜色的不同空间分布极大地影响了人们对图像的相似性判断。鉴于此,解决方法之一就是基于图像空间的固定划分,即人为地将图像划分成适当的分块,然后为每个分块提取相应的局部颜色特征。我们知道分块太大则失去分块的意义,若分块太小则会增加检索过程的计算量[3]。图.1 显示了分别划分成4 块和16 块的情形,当然我们可以划分更多的子块,划分的子块越多,图像的距离矩阵携带的空间信息越完备,检索精度也越高,计算复杂度也越高。

         

 

 

 

 

距离度量

图像检索的性能不仅依赖于所抽取的图像特征, 而且也与所采用的距离度量或相似度量函数密切相关. 所谓相似度量函数, 就是根据某些预先设定的准则来计算并返回两个图像之间的相似度. 为了确定合适的相似度量函数, 我们对不同的距离度量进行了实验, 例如, L p 距离、余弦距离等. 我们在实验中发现, 使用不同的L p 距离度量均能得到较满意的检索结果, 并且不同的L p 距离度量几乎均给出相同的检索结果. 因此, 我们就选取最简单的欧氏距离作为距离度量[7].

x= (x1,x2,……,xk) , y= (y1,y2, ……,yk ) 为两个图像, 则它们之间的距离定义为:

d2hist(x,y)=(x1- y1)2+(x2-y2)2+ ……+(xn- yn)2   ①)

②)

3.3.4相似性度量

GS 表示要进行比较的两幅图像, N 表示图片中出现的颜色级数, gk sk 分别表示图GSk级色出现的频数,则两幅图像的相似度可用如下公式表示:

  (③)

. Sim 值越接近1,两幅图像越相似

     设图像G分割成(m ×n) 个子块,用颜色对来表示图像G的特征,如果颜色对的值用两个子块颜色直方图的欧氏距离表示,则图G中子块Gij ( i = 1, 2, ?, m; j = 1, 2, ?, n) 的颜色对表就是该子块与周围子块欧氏距离的颜色对为了消除颜色噪声, 若图像G中子块Gij 的颜色对表中任意两个颜色对值之差小于某一阈值,则删除其中一个颜色对

算法的描述

颜色直方图的实现算法描述

1.从图像库中读入关键图;

2.计算目标图片的直方图;

3.定位子块,即指定用户输入的图征对象所在子块坐标位置;

4.按式()计算两幅图像的各对应子块的相似度;

5.对用户指定的块设置权重为1,其他块降低权重为0.7;

6.将N幅被比较的图像与用户输入的源图像的最后计算出来的相似度结果记录放入数组中。

7.N个相似度从大到小排列;

8.根据相似度的排列显示检索到的图像。

改进的颜色直方图实现算法描述

结合前面颜色直方图的实现思路,提出了些改进,其具体实现过程如下:

1.从图像库中读入关键图;

2.定位图像中的子块,并计算子块直方图,即用户选定包含查询图像的子块;

3.计算子块(x,y)的颜色对表,采取“八方向邻接技术”计算这些子块与周围相邻子块的颜色对表,用calcuatecolorpair()函数实现;

4.将这些颜色对中差值小于某一域值的颜色对删除,以消除颜色澡声;

5.将该子块计算得到的颜色对表填入该图像的特征颜色对表,并对其从大到小排列,给定一个域值,选取颜色对表中最大的几个颜色对做为图像的代表特征;

6.颜色匹配,读取待比较的N幅图像,计算当前被比较的图像的颜色直方图,搜索目标图像的每一子块的颜色对表,匹配时不能使用精确匹配,因此颜色对误差小于2%也属于该匹配值;

7.统计单一匹配次数,按顺序计算目标图像中一子块与其同周围子块的颜色对,然后在用户输入的图像颜色对表中查询计算出来的颜色对,差值小于某域值,则匹配到,并置颜色匹配对标志;

8.如果有60%以上的特征颜色匹配到,就说明该图像被检索到;

9.显示检索结果。

 

基于颜色直方图的图像检索系统的实现

 

开发工具的选取

本文的系统实现选用的开发工具为 Microsoft 公司的 Visual C++ 6.0C++是最流行的面向对象语言之一,支持对象、类、方法、消息等概念,同时也支持面向对象方法的封装机制和继承、多态性机制。1998 年,C++ ISO(InternationalStandards Organization)完成了标准化,C++标准提供了统一的 C++标准库,为用户提供了最为广泛的编程基础设施。Visual C++ 6.0 Microsoft 公司推出的基于Windows 的可视化集成开发环境,将编辑、编译、链接和执行集成为一体,能用它来开发 32 位程序。Visual C++经历了从 1.0 6.0 版本的发展,软件系统逐渐庞大,功能日益完善。

系统结构

 

系统结构图

 

图像查询流程

 

 

 

 

4.2图像查询流程图

 

主要类方法和数据结构

位图类

该系统的实现,没有采用数据库的形式,直接以文件夹的形式调用图像库。

class CPicture 

{

public:

      CPicture();

      virtual ~CPicture();

     

private:

      IPicture *m_pic;

      HGLOBAL  hGlobal;

public:

      HBITMAP LoadPicture(char * FileName);

      HBITMAP LoadPicture(char * FileName, HDC hdc);

      VOID    FreePicture( VOID );

    HDC     _GetDC     ( VOID );

      HBITMAP _GetHandle ( VOID );

      DWORD   _GetWidth  ( VOID );

      DWORD   _GetHeight ( VOID );

      BOOL    DrawPicture(HDC hdc,long x,long y,long cx,long cy);

      };

 CImageRetrievalDlg

class CImageRetrievalDlg

{

      public:

    void ShowPic(CString pathfile,int idc);// picture中显示图片

      void StartDir(const CString& strfile1); //对所有目录查找,取得图像目录下文件路径

      void RunDir(const CString& strfile2); //*.bmp文件查找

      void CalculateColor(CString pathfile); //计算颜色直方图

      void HistogramShow(int idc);// 绘置直方图

      void CalculateColorPair(int x, int y); //计算子块的颜色对表

      void SortColorPair();//对四个子块的颜色对表排序

      void SeekImage();

//部分方法略

      protected:

//部分变量定义略

           struct pairs

      {

           int x1;

           int y1;

           double o_dis1;

      }pair[32];

      struct obj_sets

      {

           int x;

           int y;

      }obj_set[4];//定义子块位置结构

      };

 

主要程序界面

打开关键图:

  

指定关键图子块位置

 

显示关键图直方图

 

  选择图像库

 

 

 

 

 

实验结果

以蓝天白云为例

关键图:路径为\2006519\样本\cloud.bmp

图像库:路径为\2006519\图像库\clouds

检索结果:

 

用户指定一个检索图像, 系统从图像库中自动检索与检索图像最相似的图像,检索结果按距离的降序排列特别是对于轮廓或边界分明的图像,该算法的检索结果比全局图像的颜色直方图算法明显要好

  

 



                      

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=773456

  评论这张
 
阅读(2538)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017