opencv图像增强技术之一

        处理图像避免不了图像增强技术,何为图像增强呢,简单来说就是要改变视觉效果,图片还是同一副图片,但是给人的感官不一样,有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。在opencv中有多种图像增强的技术,可以分为基于频域和空间域的两种类型。下面将先介绍两种图像增强技术,基于直方图均衡的方法和基于拉普拉斯变换的图像增强技术。

        直方图均衡化是一种空间的图像增强发,完全依靠图像像素的处理,它首先将图像三个通道分离开,然后针对各自通道进行直方图均衡化,然后再重新合并三个通道。简单代码如下:

//分离通道,然后使用直方图均衡化,再合并通道
	Mat image = imread(strPic);
	imshow("src", image);
	std::vector channels;
	split(image, channels);
	if (channels.size() < 3)
	{
		return;
	}
	for each (auto channel in channels)
	{
		equalizeHist(channel, channel);
	}
	Mat imgEnhance;
	merge(channels, imgEnhance);
	imshow("Enhance", imgEnhance);
	waitKey(0);

        第二种方法基于拉普拉斯变换的方法,首先构造中心为5的拉普拉斯算子,然后再与图像进行卷及运算,很显然是基于频域的图像增强技术,代码如下:

    Mat image = imread(strPic);
	imshow("src", image);
    Mat kernel = (Mat_(3, 3) << 0, -1, 0, 0, 5, 0, 0, -1, 0);
	Mat imgEnhance;
	filter2D(image, imgEnhance, CV_8UC3, kernel);
	imshow("Enhance", imgEnhance);
	waitKey(0);

 

你可能感兴趣的:(opencv,图像处理,图像增强)