/*-------------------------------------------------------------------------*/
// 函数名称: histeq()
// 传入参数:
// BYTE*dstData 要匹配的灰度图像内存空间
// double *srcArray 模版的直方图累积,并进行归一化,大小为256
// int m_Width 匹配内存空间的宽度
// int m_Height 匹配内存空间的高度
// int m_pitch 匹配内存空间的每行所在内存大小
/*-------------------------------------------------------------------------*/
void histeq(BYTE*dstData,double *srcArray,int m_Width,int m_Height,int m_pitch)
{
double dstHist[];
memset(dstHist,, * sizeof(double)); int i,j; double dstArray[];
memset(dstArray,, * sizeof(double)); //统计直方图
for (i = ;i < m_Height;i++)
{
for (j = ;j < m_Width;j++)
{
dstHist[(int)dstData[i * m_pitch + j]]++;
}
} //计算直方图累积
double m_Bytes = m_Width * m_Height;
dstArray[] = dstHist[];
for (i = ;i < ;i++)
{
dstArray[i] = dstArray[i - ] + dstHist[i];
} //直方图累积归一化
for (i = ;i < ;i++)
{
dstArray[i] /= m_Bytes;
} //直方图匹配
double m_diffA,m_diffB;
int k = ;
BYTE mapPixel[];
memset(mapPixel,, * sizeof(BYTE));
for (i = ;i < ;i++)
{
m_diffB = ;
for (j = k; j < ;j++)
{
m_diffA = abs(dstArray[i] - srcArray[j]);
if (m_diffA - m_diffB < 1.0E-5)
{
m_diffB = m_diffA;
k = j;
}
else
{
k = j - ;
break;
}
}
if (k == )
{
for (int l = i;l < ;l++)
{
mapPixel[l] = (BYTE) k;
}
break;
}
mapPixel[i] = (BYTE) k;
} //目标图像查找索引表
for (i = ;i < m_Height;i++)
{
for (j = ;j < m_Width;j++)
{
dstData[i * m_pitch + j] = mapPixel[dstData[i * m_pitch + j]];
}
}
}

源地址:http://blog.csdn.net/hcx25909/article/details/7090921

C++ 直方图匹配算法代码的更多相关文章

  1. 图解BM(Boyer-Moore)字符串匹配算法+代码实现

    简介 本篇文章主要分为两个大的部分,第一部分通过图解的方式讲解BM算法,第二部分则代码实现一个简易的BM算法. 基本概念 bm是一个字符串匹配算法,有实验统计,该算法是著名kmp算法性能的3-4倍,其 ...

  2. 模式匹配之sift--- sift图像特征提取与匹配算法代码

    sift,The Scale Invariant Feature Transform ,尺度不变特征变换,是检测图像中具有唯一性.对图像平移.旋转.缩放.甚至仿射变换(如从不同角度拍摄图片)保持不变性 ...

  3. 图解KMP字符串匹配算法+代码实现

    kmp算法跟之前讲的bm算法思想有一定的相似性.之前提到过,bm算法中有个好后缀的概念,而在kmp中有个好前缀的概念,什么是好前缀,我们先来看下面这个例子. 观察上面这个例子,已经匹配的abcde称为 ...

  4. 【图像处理】基于OpenCV底层实现的直方图匹配

    image processing 系列: [图像处理]图片旋转 [图像处理]高斯滤波.中值滤波.均值滤波 直方图匹配算法.又称直方图规定化.简单说.就是依据某函数.或者另外一张图片的引导,使得原图改变 ...

  5. 数字图像处理作业使用OpenCV - 自定义直方图

    第二次作业需要打印出来灰度直方图,当然不能使用ocv的自带calcHist函数来得到Mat对象了……结果上网搜索怎么用自己的数据创建直方图,搜到的都是直接用函数的_(:з」∠)_ 结果这个地方拖了好久 ...

  6. Oracle直方图的详细解析

    yuanwen:http://blog.csdn.net/javacoffe/article/details/5578206 Oracle直方图解析 一.    何谓直方图: 直方图是一种统计学上的工 ...

  7. Oracle直方图的详细解析(转)

    Oracle直方图解析 一.    何谓直方图: 直方图是一种统计学上的工具,并非Oracle专有.通常用于对被管理对象的某个方面的质量情况进行管理,通常情况下它会表现为一种几何图形表,这个图形表是根 ...

  8. OpenCV-跟我一起学数字图像处理之直方图均衡化

    从这篇博文开始,小生正式从一个毫不相干专业转投数字图像处理.废话不多说了,talk is cheap. show me the code. 直方图均衡化目的 由于一些图像灰度的分布过于集中,这样会导致 ...

  9. OpenCV学习(24) 直方图(1)

    直方图是对数据的统计,并将统计结果分布于一系列预定义的槽中.这里的数据不仅仅指的是灰度值,它可以是任何能有效描述图像特征的数据,比如图像梯度等等. 假设有一个矩阵包含一张图像的信息 (灰度值 0-25 ...

随机推荐

  1. Windows Azure 网站 (WAWS) 和中间证书

    编辑人员注释:本文章由 Windows Azure 网站团队的项目经理 Erez Benari 撰写. 在 Windows Azure 网站上使用 SSL 已经司空见惯.虽然向网站上传和分配证书通常简 ...

  2. cocos2d-x游戏开发系列教程-坦克大战游戏之所有坦克之间的碰撞检测

    上篇我们完成了简单的AI编写,但是各个坦克移动时之间是可以重合的, 这节课我们来完成坦克之间的碰撞检测,还是在上篇的EnemyAI中完成. 1.我先现在坦克类Tank中添加两个成员变量: CC_SYN ...

  3. 软件project师的属性与发展

    工作近十年了.[软件project师] 一直是我职业 title 的中心词,仅仅是前面的修饰语在不断变化,从0基础.中级.高级到资深. 事实上 [软件project师] 是一个非常泛化的定义.工作现实 ...

  4. c语言,内存字节对齐

    引用:内存字节对齐 写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的变量总长度要大,这是怎么回事呢?讲讲字节对齐吧. /************* ...

  5. EL显示List里嵌套map(Spring MVC3)返回的model

    <c:forEach items="${requestScope.courseList}" var="cMap" varStatus="stat ...

  6. Oracle数据库top10物理段

    select owner, name, type, mega, tbs   from (select owner,                case                  when ...

  7. Hough变换在opencv中的应用

    霍夫曼变换(Hough Transform)的原理 霍夫曼变换是一种可以检测出某种特殊形状的算法,OpenCV中用霍夫曼变换来检测出图像中的直线.椭圆和其他几何图形.由它改进的算法,可以用来检测任何形 ...

  8. Linux下可执行程序调试信息的分离及release程序的调试

      前两天在群里看到在讨论如何把debug版中的符号表加到release版本中,觉得这个非常有用,所以学习一下. 使用的工具是objcopy. 如果要生成单独的调试信息文件,命令如下: objcopy ...

  9. [ACM] n划分数m部分,它要求每一个部分,并采取了最大的产品(间隔DP)

    A - 爱管闲事 春希很爱管闲事,他每天都会抽出时间帮助一些同学,因为春希很死板,出于公平性,春希不会先帮助后来找他的同学. 如今有n个同学须要他的帮助,尽管他非常想一天之类帮助全部人,但毕竟精力有限 ...

  10. wift - 使用UIScreen类获取屏幕大小尺寸

    UISreen类代表了屏幕,开发中一般用来获取屏幕相关的属性,例如获取屏幕的大小. 1 2 3 4 5 6 7 //获取屏幕大小 var screenBounds:CGRect = UIScreen. ...