图像对比度增强
- 格式:doc
- 大小:361.00 KB
- 文档页数:8
VC6.0下安装Openvc1.0
配置Windows环境变量
检查C:\Program Files\OpenCV\bin是否已经被加入到环境变量PATH,如果没有,请加入。加入后需要注销当前Windows用户(或重启)后重新登陆才生效。(可以在任务管理器里重启explorer.exe)
配置Visual C++ 6.0
p1[j]+=p[k];
}
//直方图变换
// to do use openmp
for(int x1=0;x1<width;x1++)
{
for(int y1=0;y1<height;y1++)
{
uchar v=((uchar*)(src->imageData + src->widthStep*y1))[x1];
((uchar*)(dst->imageData + dst->widthStep*y1))[x1]= p1[v]*255+0.5;
}
}//</height;y++)
//</width;x++)
return 0;
}
3.编译,链接,执行。
【结论】
原图
运行程序显示结果GrayImage
直方图变换对比度增强后dstGrayImage
2.在工程目录下放置一个图片test.jpg
3.在cpp文件下添加显示图像代码:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include <cxcore.h>
#include <highgui.h>
int ImageStretchByHistogram(IplImage *src,IplImage *dst);
cvReleaseImage( &dstGrayImage );
return 0;
}
int ImageStretchByHistogram(IplImage *src,IplImage *dst)
/*************************************************
Function:
小结
对用基于VC的Opencv对图像进行显示有进一步的了解。
对求图像灰度级以及对比度变换的算法的了解。
指导教师评语及成绩
评语:
成绩:指导教师签名:
批阅日期:
float p[256],p1[256],num[256];
//清空三个数组
memset(p,0,sizeof(p));
memset(p1,0,sizeof(p1));
memset(num,0,sizeof(num));
int height=src->height;
int width=src->width;
//创建窗口
cvNamedWindow( "dstGrayImage", 1 );
cvNamedWindow( "GrayImage", 1 );
//显示图像
cvShowImage( "dstGrayImage", dstGrayImage );
cvShowImage( "GrayImage", GrayImage );
C:\Program Files\OpenCV\otherlibs\cvcam\src\windows
最后点击“ok”,完成设置。
项目设置
每创建一个将要使用OpenCV的VC Project,都需要给它指定需要的lib。菜单:Project->Settings,然后将Setting for选为All Configurations,然后选择右边的link标签,在Object/library modules附加上
int _tmain(int argc, _TCHAR* argv[])
{
IplImage * pImg;
pImg=cvLoadImage("test1.jpg",-1);
//创建一个灰度图像
IplImage* GrayImage = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1);
Description:因为摄像头图像质量差,需要根据直方图进行图像增强,
将图像灰度的域值拉伸到0-255
Calls:
Called By:
Input:单通道灰度图像
Output:同样大小的单通道灰度图像
Return:
Others: /ReadNews.asp?NewsID=771
1、编写成为灰度图像的C语言程序及相应的显示程序。
2、对指定图象编写图像各个灰度级的出现概率;图象各个灰度级出现的次数的相应程序,用于直方图变换,将增强后的图象都显示于屏幕上,比较增强的效果。
【实验原理】
在配置了Opencv的VC6环境下,调用Opencv库下的函数,并用一定的算法实现直方图变换将图像对比度增强。
然后选择source files,在下方填入路径:
C:\Program Files\OpenCV\cv\src
C:\Program Files\OpenCV\cxcore\src
C:\Program Files\OpenCV\cvaux\src
C:\Program Files\OpenCV\otherlibs\highgui
long wMulh = height * width;
//求存放图象各个灰度级出现的次数
// to do use openmp
for(int x=0;x<width;x++)
{
for(int y=0;y<height;y++)
{
uchar v=((uchar*)(src->imageData + src->widthStep*y))[x];
cvWaitKey(0); //等待按键
//销毁窗口
cvDestroyWindow( "dstGrayImage" );
cvDestroyWindow( "GrayImage" );
//释放图像
cvReleaseImage( &pImg );
cvReleaseImage( &GrayImage );
DATE:2007-1-5
*************************************************/
{
//p[]存放图像各个灰度级的出现概率;
//p1[]存放各个灰度级之前的概率和,用于直方图变换;
//num[]存放图象各个灰度级出现的次数;
assert(src->width==dst->width);
全局设置
菜单Tools->Options->Directories:先设置lib路径,选择Library files,在下方填入路径:
C:\Program Files\OpenCV\lib
然后选择include files,在下方填入路径:
C:\Program Files\OpenCV\cxcore\include
面向对象分析与设计大作业
(图像对比度增强)
学院:计算机科学与工程学院
班级:
学生姓名:
学号:
指导老师:张广渊
提交日期:2014/4/14
山东交通学院
数字图像处理课程实验报告
实验题目:___图像对比度增强_______
姓名:______
学号:______
班级: ____
指导教师: __张广渊_
实验Files\OpenCV\cv\include
C:\Program Files\OpenCV\cvaux\include
C:\Program Files\OpenCV\ml\include
C:\Program Files\OpenCV\otherlibs\highgui
C:\Program Files\OpenCV\otherlibs\cvcam\include
IplImage* dstGrayImage = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1);
cvCvtColor(pImg, GrayImage, CV_BGR2GRAY);
ImageStretchByHistogram(GrayImage,dstGrayImage);
cxcore.lib cv.lib ml.lib cvaux.lib highgui.lib cvcam.lib
如果你不需要这么多lib,你可以只添加你需要的lib。
实验内容
【实验方案设计】
1.创建工程,在工程里配置环境,添加lib标签等。
2.在main函数里写入对图像进行操作的代码。并自定义函数ImageStretchByHistogram实现直方图变换。
num[v]++;
}
}//</height;y++)
//</width;x++)
//求存放图像各个灰度级的出现概率
for(int i=0;i<256;i++)
{
p[i]=num[i]/wMulh;
}
//求存放各个灰度级之前的概率和
for(int j=0;j<256;j++)