思路: 1、 YUV 数据输入, YUV4:2:2 ,Y 为逐点采样的亮点,提取每点的 Y 得到一帧图像的灰阶图。 2、根据灰阶图,可以得到一个直方图统计。 3、通过比较两帧的直方图得到两帧的匹配度。 4、当匹配度低于阈值判断两帧为不匹配,为有物体移动。难点: 1、直方图比较两帧得到匹配度。 2、如何选取两帧,两帧的比较选取。 3、由灰阶得到直方图#include"" /******histgram-- image_in: hist: ******/ void histgram(unsigned char image_in[xzise][ysize],long hist[256]) { int i,j,n; for(n=0;n<256;n++) hist[n]=0; for(i=0;i<ysize;i++) { for(j=0;j<xsize;j++) { n=image_in[i][j]; hist[n]++; }}} 图像相似度检测之 C++ 代码( 8位--256 色) 本代码属于原创,如需引用,请声明来源下面是直方图相交的代码,同种图片的识别率达 90% 以上,性能非常稳定。程序的例子是 8 位( 256 色)位图,其他位图类似。 view plaincopy to clipboardprint? #include <fstream> #include <map> #include <string> #include <iostream> using namespace std; typedef unsigned char uvar8; typedef unsigned int uvar32; typedef unsigned short int uvar16; typedef struct { uvar8 Blue; /* 蓝色所占比重*/ uvar8 Green; /* 绿色所占比重*/ uvar8 Red; /* 红色所占比重*/ uvar8 Reserved; } Palette; // 定义 bmp 结构 uvar8 bfType[2]; /* 类型标志,总是 BM */ typedef struct { uvar32 bfSize; /* 文件大小*/ uvar32 bfReserved1; uvar32 bfOffBits; /* 位图点阵偏移量*/ }HEAD; typedef struct { uvar32 biSize; /* 结构体字节总数*/ uvar32 biWidth; /* 图像宽度*/ uvar32 biHeight; /* 图像高度*/ uvar16 biPlanes; /* 必须为 1 */ uvar16 biBitCount; /* 每个像素所占二进制位数,可能是 1,4,8 或 24 */ uvar32 press; /* 压缩方式*/ uvar32 biSizeImage; /* 像素点阵大小*/ uvar32 biXPelsPerMeter; /* 水平像素数*/ uvar32 biYPelsPerMeter; /* 垂直像素数*/ uvar32 biClrUsed; /* 使用的颜色数*/ uvar32 biClrImportant; /* 重要颜色数*/ }INFO; bool
移动侦测算法 来自淘豆网m.daumloan.com转载请标明出处.