基于改进的颜色直方图的图像检索算法(3)

2018-11-18 21:10

struct obj_sets { int x; int y;

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

主要程序界面

打开关键图:

指定关键图子块位臵

显示关键图直方图

选择图像库

实验结果

以蓝天白云为例

关键图:路径为\\2006519\\样本\\cloud.bmp 图像库:路径为\\2006519\\图像库\\clouds 检索结果:

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

附录

主要函数:

// picture中显示图片

void CImageRetrievalDlg::ShowPic(CString pathfile,int idc) {

CBitmap hbmp; HBITMAP hbitmap; //将pStatic指向要显示的地方 CStatic *pStaic;

pStaic=(CStatic*)GetDlgItem(idc); //装载资源

hbitmap=(HBITMAP)::LoadImage (::AfxGetInstanceHandle(),pathfile,

IMAGE_BITMAP,0,0,LR_LOADFROMFILE|LR_CREATEDIBSECTION);

hbmp.Attach(hbitmap); //获取图片格式 BITMAP bm; hbmp.GetBitmap(&bm); //创建临时的内存DC对象 CDC dcMem;

dcMem.CreateCompatibleDC(GetDC());

CBitmap *poldBitmap=(CBitmap*)dcMem.SelectObject(hbmp); CRect lRect;

pStaic->GetClientRect(&lRect); lRect.NormalizeRect();

//显示位图

pStaic->GetDC()->StretchBlt(lRect.left ,lRect.top ,lRect.Width(),lRect.Height(),

&dcMem,0 ,0,bm.bmWidth,bm.bmHeight,SRCCOPY);

dcMem.SelectObject(&poldBitmap);

pStaic->ReleaseDC(&dcMem);

}

//打开关键图

void CImageRetrievalDlg::OnOpenImage() {

CFileOpen fileOpenDlg(TRUE);

if (fileOpenDlg.DoModal () != IDOK) return; //使菜单可用

CMenu* mmenu = GetMenu();

mmenu->EnableMenuItem(ID_START_RETRIEVAL, 0);

mmenu->EnableMenuItem(ID_STOP_RETRIEVAL, 0 ); mmenu->EnableMenuItem(ID_SHOW_IM, 0 ); mmenu->EnableMenuItem(ID_SHOW_IM2, 0 ); mmenu->EnableMenuItem(ID_SHOW_INFO, 0 );

// 画格子

CWnd* pWnd = GetDlgItem(IDC_VIEW1); CDC* pDC = pWnd->GetDC(); pWnd->Invalidate(); pWnd->UpdateWindow();

CPen* pPenRed = new CPen;

pPenRed->CreatePen(PS_SOLID, 1, RGB(255,0,0)); CPen* pOldPen = pDC->SelectObject(pPenRed);

/* pDC->MoveTo(1,1); //PictureBox 宽194高172

}

pDC->LineTo(1, 172); pDC->MoveTo(1,86); pDC->LineTo(211,86); pDC->MoveTo(97,1); pDC->LineTo(97,190); pDC->MoveTo(48,1); pDC->LineTo(48,190); pDC->MoveTo(145,1); pDC->LineTo(145,190); pDC->MoveTo(1,43); pDC->LineTo(211,43); pDC->MoveTo(1,129); pDC->LineTo(211,129);*/ //取得文件路径

POSITION pos = fileOpenDlg.GetStartPosition(); strfile = fileOpenDlg.GetNextPathName(pos); ShowPic(strfile,IDC_VIEW1);

//选择图像库目录

void CImageRetrievalDlg::OnMutiImageIndb() {

CString m_strPath; tempi=0;

//打开通用对话框 BROWSEINFO browse;


基于改进的颜色直方图的图像检索算法(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:标准化管理

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: