资源简介
vc代码实现图像直方图均衡化,并显示原始图像和处理后图像的直方图。
代码片段和文件信息
#include “cv.h“
#include “highgui.h“
void main()
{
char* filename;
IplImage* frame;
IplImage* hframe;
IplImage* histogram;
IplImage* chistogram;
int fheightfwidthfstepfdepth;
uchar *fdata*hdata*chdata;
int a[256]={0};
int b[256]={0};
int c[256]={0};
int ijm;
//显示原始灰度级图像
filename=“coin.bmp“;
hframe=cvLoadImage(filename1);
fdepth=hframe->depth;
frame = cvCreateImage(cvGetSize(hframe) fdepth 1 );
cvCvtColor(hframeframeCV_BGR2GRAY);
cvNamedWindow(“处理前图像“1);
cvShowImage(“处理前图像“frame);
//处理过程
fheight=frame->height;
fwidth=frame->width;
fstep=frame->widthStep/sizeof(uchar);
fdata=(uchar *)frame->imageData;
for (i=0;i {
for (m=0;m<=255;m++)
{
if (fdata[i*fstep+j]==m)
{
a[m]++;
break;
}
}
}
int maxnum=0;
for(i=0;i<256;i++)
{
if (maxnum {
maxnum=a[i];
}
}
//原始灰度级图像的直方图
histogram=cvCreateImage(cvSize(256maxnum/100+1)fdepth 1 );
hdata=(uchar *)histogram->imageData;
int s;
s=histogram->widthStep/sizeof(uchar);
for (i=0;i<(maxnum/100);i++)for (j=0;j<256;j++)
{
hdata[i*s+j]=255;
}
for(i=0;i<256;i++)
{
for(j=(maxnum-1)/100;j>=(maxnum-1-a[i])/100;j--)
hdata[j*s+i]=0;
}
cvNamedWindow(“处理前图像直方图“1);
cvShowImage(“处理前图像直方图“histogram);
for (i=0;i<=255;i++)//像素个数叠加
{
for (j=0;j<=i;j++)
b[i]+=a[j];
}
for (i=0;i<=255;i++)//变换后灰度级
{
b[i]=b[i]*255/(fheight*fwidth);
}
for (i=0;i {
fdata[i*fstep+j]=b[fdata[i*fstep+j]];
}
cvNamedWindow(“处理后图像“1);
cvShowImage(“处理后图像“frame);
//处理后图像的直方图显示
for (i=0;i {
for (m=0;m<=255;m++)
{
if (fdata[i*fstep+j]==m)
{
c[m]++;
break;
}
}
}
chistogram=cvCreateImage(cvSize(256maxnum/100+1)fdepth 1 );
chdata=(uchar *)chistogram->imageData;
for (i=0;i {
chdata[i*s+j]=255;
}
for(i=0;i<256;i++)
{
for(j=(maxnum-1)/100;j>=(maxnum-1-c[i])/100;j--)
{
chdata[j*s+i]=0;
}
}
//直方图均衡化后图像显示
cvNamedWindow(“处理后图像直方图“1);
cvShowImage(“处理后图像直方图“chistogram);
cvWaitKey(0);
cvDestroyWindow(“处理前图像“);
cvDestroyWindow(“处理后图像“);
cvDestroyWindow(“处理前图像直方图“);
cvDestroyWindow(“处理后图像直方图“);
cvReleaseImage(&frame);
cvReleaseImage(&hframe);
cvReleaseImage(&histogram);
cvReleaseImage(&chistogram);
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 82742 2010-03-23 19:39 直方图均衡化和直方图显示vc\homework1\coin.bmp
文件 17530 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\Debug\enhancement.obj
文件 172084 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\Debug\homework1.exe
文件 185980 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\Debug\homework1.ilk
文件 4127884 2010-04-10 16:37 直方图均衡化和直方图显示vc\homework1\Debug\homework1.pch
文件 517120 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\Debug\homework1.pdb
文件 173056 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\Debug\vc60.idb
文件 110592 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\Debug\vc60.pdb
文件 249 2010-04-07 16:30 直方图均衡化和直方图显示vc\homework1\enhancement.asp
文件 2782 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\enhancement.cpp
文件 4204 2010-04-07 16:30 直方图均衡化和直方图显示vc\homework1\homework1.dsp
文件 541 2010-04-07 15:58 直方图均衡化和直方图显示vc\homework1\homework1.dsw
文件 41984 2010-04-14 17:20 直方图均衡化和直方图显示vc\homework1\homework1.ncb
文件 48640 2010-04-14 17:20 直方图均衡化和直方图显示vc\homework1\homework1.opt
文件 1206 2010-04-13 21:44 直方图均衡化和直方图显示vc\homework1\homework1.plg
文件 258 2010-04-21 20:46 直方图均衡化和直方图显示vc\homework1\说明.txt
目录 0 2010-04-21 20:51 直方图均衡化和直方图显示vc\homework1\Debug
目录 0 2010-04-21 20:51 直方图均衡化和直方图显示vc\homework1
目录 0 2010-04-21 20:51 直方图均衡化和直方图显示vc
----------- --------- ---------- ----- ----
5486852 19
相关资源
- opencv基于颜色直方图进行模板图像匹
- 直方图均衡处理光照不均匀
- 直方图均衡化FPGA实现代码
- 基于opencv的图像处理
- CUDA实现的直方图均衡化算法
- 直方图均衡支持单通道16位和8位图像
- opencv实现图像旋转任意角度边界正好
- EmguCV使用,包含灰度化,均衡化,二
- 图像相似度检测之直方图相交基于颜
- 基于颜色直方图的粒子滤波目标跟踪
- 灰度图像的直方图参数提取代码
- 二值化图像轮廓及链码直方图
- 矩阵互相关系数计算与直方图
- ArcGIS教程:创建直方图
- RGB到HSV空间直方图均衡化 opencv
- 利用基于直方图的自适应阈值方法实
- 图像特征之方向直方图OPENCV程序
- 一种基于直方图的可逆数字水印算法
- FPGA实现图像处理中的直方图统计
- 视频图像灰度信号直方图的FPGA实现
- 直接从双峰直方图确定二值化阈值
- 灰度图像直方图计算
- FPGA的直方图均衡化Verilog代码
- 基于颜色直方图采用libsvm进行分类
- 利用粗糙集和属性直方图的图像增强
- labwindows/cvi 直方图
- 直方图均衡化的Verilog实现,FPGA上实测
- 基于OPENCV的LBP特征提取及直方图计算
- sift和颜色直方图特征匹配
- 实验一 数字图像的输入、输出、显示
评论
共有 条评论