(6)OpenCV 4 学习之查找表(LUT)


前言

最近心血来潮,想具体的去学习一下图像处理,所以报了知识星球的一个OpenCV研习社,将自己每天的学习,分享一下。写个 blog 加深一下知识。


一、函数解析

1、LUT查找表(applyColorMap)
CV_EXPORTS_W void applyColorMap(InputArray src, OutputArray dst, int colormap)

参数一:CV_8UC1或CV_8UC3类型的灰色或彩色的源图像。
参数二:色彩映射后的源图像。
参数三:匹配到的颜色LUT, OpenCV支持13种颜色风格的查找表映射。

功能:在给定图像上应用GNU Octave / MATLAB等效色彩映射。

参数三的风格如下:

类型属性值颜色风格色谱参照
COLORMAP_AUTUMN0秋天秋天
COLORMAP_BONE1骨感在这里插入图片描述
COLORMAP_JET2喷射在这里插入图片描述
COLORMAP_WINTER3冬天在这里插入图片描述
COLORMAP_RAINBOW4彩虹在这里插入图片描述
COLORMAP_OCEAN5海洋在这里插入图片描述
COLORMAP_SUMMER6夏天在这里插入图片描述
COLORMAP_SPRING7春天在这里插入图片描述
COLORMAP_COOL8阴凉在这里插入图片描述
COLORMAP_HSV9HSV在这里插入图片描述
COLORMAP_PINK10粉色在这里插入图片描述
COLORMAP_HOT11热的在这里插入图片描述
COLORMAP_PARULA12森莺在这里插入图片描述

二、代码示例

int main()
{
	Mat src = imread("C:/Users/XMuser/Desktop/Opencv/cos.jpg");

	if (src.empty())
	{
		printf("could not load image...\n");
		return -1;
	}
	imshow("input", src);

	Mat dst;
	//进行色彩映射
	applyColorMap(src, dst, COLORMAP_SPRING);
	imshow("colorMap", dst);

	waitKey(0);

	return 0;
}

三、结果展示

在这里插入图片描述


四、官方教程

传送门:官方教程(最新的OpenCV 4 的用法,其中包含 20 种风格类型)
在这里插入图片描述
在这里插入图片描述


五、进一步学习

上面介绍的方式是直接采用函数调用的方式,接下来介绍,如何使用我们自己定义的 LUT 来对图片进行颜色映射。

1、了解定义

LUT的应用范围比较广泛,例如:LUT(Look-Up Table)可以应用到一张像素灰度值的映射表,它将实际采样到的像素灰度值经过一定的变换如阈值、反转、二值化、对比度调整、线性变换等,变成了另外一个与之对应的灰度值,这样可以起到突出图像的有用信息,增强图像的光对比度的作用。很多PC系列卡具有8/10/12/16甚到32位的LUT,具体在LUT里进行什么样的变换是由软件来定义的。在这里lut最重要的意义,就在于兼容了普通显示器的高阶显示功能,使得那些不能被普通显示器所显示的宽色域(一般指超过srgb)能够尽量被大致模拟在普通显示器上。然而,lut所模拟的效果,只能作为参考,作为修图时的大致观感。最佳、最完整的呈现,仍然是显示器、显卡以及素材本身的各项指标高度一致,所谓“硬解码”。

为了更直观了理解,可以参考下图:
在这里插入图片描述

2、代码示例
void customColorMap(Mat &image)
{
	int lut[256];
	//这边定义自己的 LUT
	for (int i = 0; i < 256; i++)
	{
		if (i<127)
		{
			lut[i] = 0;
		}
		else
		{
			lut[i] = 255;
		}
	}

	int height = image.rows;
	int width  = image.cols;

	for (int row = 0; row < height; row++)
	{
		for (int col = 0; col < width; col++)
		{
			int pv = image.at<uchar>(row, col);
			image.at<uchar>(row, col) = lut[pv];
		}
	}
	imshow("lut demo", image);
}

int main()
{
	Mat src = imread("C:/Users/XMuser/Desktop/Opencv/cos.jpg");

	if (src.empty())
	{
		printf("could not load image...\n");
		return -1;
	}
	imshow("input", src);

	Mat gray, dst;

	//applyColorMap(src, dst, COLORMAP_SPRING);
	//imshow("colorMap", dst);

	//转换为灰度图像,仅为示例,少写后面的循环
	cvtColor(src, gray, COLOR_BGR2GRAY);
	imshow("gray", gray);
	customColorMap(gray);

	waitKey(0);

	return 0;
}
3、结果展示

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值