【OpenCV】常用的图像增强算法(备忘)

本文深入探讨了图像处理中常用的四种增强算法:直方图均衡化、拉普拉斯算子卷积、log变换和Gamma变换。通过具体代码示例,详细介绍了每种算法的工作原理及其实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要包含直方图均衡化,拉普拉斯算子卷积,log,gamma增强算法 

    //1.直方图均衡化增强
	Mat dstImg;
	Mat imgRGB[3];
	split(srcImg, imgRGB);
	for (int i = 0; i < 3; i++)
	{
		equalizeHist(imgRGB[i], imgRGB[i]);
	}
	merge(imgRGB, 3, dstImg);
	namedWindow("直方图均衡化增强图", 0);
	resizeWindow("直方图均衡化增强图", srcImg.cols / 3, srcImg.rows / 3);
	imshow("直方图均衡化增强图", dstImg);

	//2基于拉普拉斯算子的图像增强。
	Mat dstImg2;
	Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, 0, 4, 0, 0, -1, 0);//定义3*3的卷积核
	filter2D(srcImg, dstImg2, CV_8UC3, kernel);
	namedWindow("拉普拉斯增强图", 0);
	resizeWindow("拉普拉斯增强图", srcImg.cols / 3, srcImg.rows / 3);
	imshow("拉普拉斯增强图", dstImg2);

	//基于log变换的图像增强(对于不同的底数,底数越大,对低灰度部分的扩展就越强,
	                        //对高灰度部分的压缩也就越强。)
	Mat dstImg3(srcImg.size(), CV_32FC3);
	for (int i = 0; i < srcImg.rows; i++)
	{
		for (int j = 0; j < srcImg.cols; j++)
		{
			dstImg3.at<Vec3f>(i, j)[0] = log(1 + srcImg.at<Vec3b>(i, j)[0]) / log(2);//已2为底
			dstImg3.at<Vec3f>(i, j)[1] = log(1 + srcImg.at<Vec3b>(i, j)[1]) / log(2);
			dstImg3.at<Vec3f>(i, j)[2] = log(1 + srcImg.at<Vec3b>(i, j)[2]) / log(2);
		}
	}
	//归一化到0~255  
	normalize(dstImg3, dstImg3, 0, 255, CV_MINMAX);
	//转换成8bit图像显示  
	convertScaleAbs(dstImg3, dstImg3);
	namedWindow("Log算子增强图", 0);
	resizeWindow("Log算子增强图", srcImg.cols / 3, srcImg.rows / 3);
	imshow("Log算子增强图", dstImg3);

	//伽马变换增强。γ值以1为分界,值越小,对图像低灰度部分的扩展作用就越强,
	//值越大,对图像高灰度部分的扩展作用就越强
	Mat imageGamma(srcImg.size(), CV_32FC3);
	for (int i = 0; i < srcImg.rows; i++)
	{
		for (int j = 0; j < srcImg.cols; j++)
		{
			imageGamma.at<Vec3f>(i, j)[0] = pow(srcImg.at<Vec3b>(i, j)[0], 5);
			imageGamma.at<Vec3f>(i, j)[1] = pow(srcImg.at<Vec3b>(i, j)[1], 5);
			imageGamma.at<Vec3f>(i, j)[2] = pow(srcImg.at<Vec3b>(i, j)[2], 5);
		}
	}
	//归一化到0~255  
	normalize(imageGamma, imageGamma, 0, 255, CV_MINMAX);
	//转换成8bit图像显示  
	convertScaleAbs(imageGamma, imageGamma);
	namedWindow("Gamma算子增强图", 0);
	resizeWindow("Gamma算子增强图", srcImg.cols / 3, srcImg.rows / 3);
	imshow("Gamma算子增强图", dstImg3);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值