Opencv 图像增强算法 图像检测结果

原创 2012年03月28日 10:58:03

本code通过直方图变换增强了图像对比度,实现了单通道图像增强。将图像灰度阈值拉伸到0-255,图像检测结果见底部

Keywords: 图像增强 增强对比度 直方图变换

int ImageStretchByHistogram(IplImage *src1,IplImage *dst1)
/*************************************************
Function:      通过直方图变换进行图像增强,将图像灰度的域值拉伸到0-255
src1:               单通道灰度图像                  
dst1:              同样大小的单通道灰度图像 
*************************************************/
{
	assert(src1->width==dst1->width);
	double p[256],p1[256],num[256];
	
	memset(p,0,sizeof(p));
	memset(p1,0,sizeof(p1));
	memset(num,0,sizeof(num));
	int height=src1->height;
	int width=src1->width;
	long wMulh = height * width;
	
	//statistics
	for(int x=0;x<src1->width;x++)
	{
		for(int y=0;y<src1-> height;y++){
			uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
				num[v]++;
		}
	}
	//calculate probability
	for(int i=0;i<256;i++)
	{
		p[i]=num[i]/wMulh;
	}

	//p1[i]=sum(p[j]);	j<=i;
	for(int i=0;i<256;i++)
	{
		for(int k=0;k<=i;k++)
			p1[i]+=p[k];
	}

	// histogram transformation
	for(int x=0;x<src1->width;x++)
	{
		for(int y=0;y<src1-> height;y++){
			uchar v=((uchar*)(src1->imageData + src1->widthStep*y))[x];
				((uchar*)(dst1->imageData + dst1->widthStep*y))[x]= p1[v]*255+0.5;            
		}
	}
	return 0;
}

void CCVMFCView::OnImageAdjustContrast()
{
	if(workImg->nChannels>1)
		OnColorToGray();
	Invalidate();
	dst=cvCreateImage(cvGetSize(workImg),workImg->depth,workImg->nChannels);
	ImageStretchByHistogram(workImg,dst);
	m_dibFlag=imageReplace(dst,&workImg);
	Invalidate();
}

Experiment Result:

原图灰度化

                                    原图灰度化

检测结果1

                                     检测结果1

灰度化并增强对比度

                                灰度化并增强对比度

检测结果2

                                   检测结果2


相关文章推荐

OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)

1. 基于直方图均衡化的图像增强 直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度,达到改善图像主观视觉效果的目的。对比度较低的图像适合使用直方图均衡化方...
  • dcrmg
  • dcrmg
  • 2016年12月15日 23:46
  • 9735

OpenCV,常用图像增强算法的实现

原文地址 http://blog.csdn.net/kezunhai/article/details/41553097 好资料,没收了!!! 1、对数图像增强算法       对数图像增强是图像...

ACE图像增强算法Opencv实现

1. 概述 最近翻阅图像增强算法方面的文献,偶然中找到一篇博客是写的有关ACE图像增强算法的,算法的原理比较简单。本文章中使用到的基本计算方法也是从那篇文章中得到的,这里使用Opencv进行了简单的...
  • m_buddy
  • m_buddy
  • 2016年11月27日 17:10
  • 1630

OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)

1. 基于直方图均衡化的图像增强 直方图均衡化是通过调整图像的灰阶分布,使得在0~255灰阶上的分布更加均衡,提高了图像的对比度,达到改善图像主观视觉效果的目的。对比度较低的图像适合使用直方...

OpenCV,马赛克 常用图像增强算法的实现

原文地址 http://blog.csdn.NET/kezunhai/article/details/41553097 好资料,没收了!!! 1、对数图像增强算法       对数图像增强是...
  • c2a2o2
  • c2a2o2
  • 2017年04月19日 22:10
  • 783

OPENCV图像处理提高(一)图像增强

在图像处理学习中会涉及到直方图,直方图很好地表现了图像的灰度信息;同时我们注意到在暗图像中,直方图的分量集中在灰度级的低端;亮图像的灰度值集中在直方图灰度值的高端;低对比度的图像有较窄的直方图,并集中...

OpenCV图像增强——通过扩展灰度范围来增加对比度

OpenCV图像增强——通过扩展灰度范围来增加对比度

opencv 彩色图像对比度增强

一般地,图像对比度都是在灰度图上进行增强,这在我的一篇文章中已经给出了实现方法(http://blog.csdn.net/abcjennifer/article/details/7401921),最通...

opencv 彩色图像对比度增强

转自:http://blog.csdn.net/abcjennifer/article/details/7428737?utm_source=jiancool 一般地,图像对比度都是在灰度图上进...

OpenCv,局部自适应图像增强(Local Adaptive Contrast Enhancement)

一、理论          图像增强算法的基本原则是“降低低频区域,突出高频区域”,以此强化边缘,达到增强的目的。最简单的例子就是通过原始图像减去高斯模糊处理后的图像,就能够将边缘强化出来。     ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Opencv 图像增强算法 图像检测结果
举报原因:
原因补充:

(最多只允许输入30个字)