成都网站建设设计

将想法与焦点和您一起共享

OpenCV图像处理之常见的图像灰度变换-创新互联

1.灰度线性变换

在墨竹工卡等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、成都网站制作 网站设计制作按需网站开发,公司网站建设,企业网站建设,成都品牌网站建设,全网营销推广,成都外贸网站建设公司,墨竹工卡网站建设费用合理。

图像的灰度线性变换是图像灰度变换的一种,图像的灰度变换通过建立灰度映射来调整源图像的灰度,从而达到图像增强的目的。灰度映射通常是用灰度变换曲线来进行表示。通常来说,它是将图像的像素值通过指定的线性函数进行变换,以此来增强或者来减弱图像的灰度,灰度线性变换的函数就是常见的线性函数。

g(x, y) = k · f(x, y) + d

设源图像的灰度值为x,则进行灰度线性变换后的灰度值为y = kx + b (0<=y<=255),下面分别来讨论k的取值变化时线性变换的不同效果

(1).|k|>1时

当k>1时,可以用来增加图像的对比度,图像的像素值在进行变换后全部都线性方法,增强了整体的显示效果,且经过这种变换后,图像的整体对比度明显增大,在灰度图中的体现就是变换后的灰度图明显被拉伸了。

(2).|k|=1时

当k=1时,这种情况下常用来调节图像的亮度,亮度的调节就是让图像的各个像素值都增加或是减少一定量。在这种情况下可以通过改变d值来达到增加或者是减少图像亮度的目的。因为当k=1,只改变d值时,只有图像的亮度被改变了,d>0时,变换曲线整体发生上移,图像的亮度增加,对应的直方图整体向右侧移动,d<0时,变换曲线整体下移,图像的亮度降低,对应的直方图发生水平左移。

(3).0<|k|<1时

此时变换的效果正好与k>1时相反,即图像的整体对比度和效果都被削减了,对应的直方图会被集中在一段区域上。k值越小,图像的灰度分布也就越窄,图像看起来也就显得越是灰暗。

(4).k<0时

在这种情况下,源图像的灰度会发生反转,也就是原图像中较亮的区域会变暗,而较暗的区域将会变量。特别的,此时我们令k = -1,d = 255,可以令图像实现完全反转的效果。对应的直方图也会发生相应的变化。

相应的程序试下如下:

//实现图像的灰度线性变化
#include 
#include 
#include 
#include 
 
using namespace std;
using namespace cv;
 
int main()
{
	Mat srcImg = imread("1234.jpg");
	if (!srcImg.data)
	{
		cout << "读入图片失败" << endl;
		return -1;
	}
	imshow("原图像", srcImg);
	double k, b;
	cout << "请输入k和b值:";
	cin >> k >> b;
	int RowsNum = srcImg.rows;
	int ColsNum = srcImg.cols;
	Mat dstImg(srcImg.size(), srcImg.type());
	//进行遍历图像像素,对每个像素进行相应的线性变换
	for (int i = 0; i < RowsNum; i++)
	{
		for (int j = 0; j < ColsNum; j++)
		{
			//c为遍历图像的三个通道
			for (int c = 0; c < 3; c++)
			{
				//使用at操作符,防止越界
				dstImg.at(i, j)[c] = saturate_cast
					(k* (srcImg.at(i, j)[c]) + b);
 
			}
		}
	}
	imshow("线性变换后的图像", dstImg);
	waitKey();
	return 0;
}

另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站栏目:OpenCV图像处理之常见的图像灰度变换-创新互联
网站网址:http://chengdu.cdxwcx.cn/article/dphpco.html