1. 程式人生 > >【OpenCV3】彩色對映——cv::applyColorMap()與cv::LUT()詳解

【OpenCV3】彩色對映——cv::applyColorMap()與cv::LUT()詳解

在影象處理的過程中,我們通常會遇到將灰度影象對映成彩色影象的情形(即通常所說的偽彩對映),OpenCV2和OpenCV3中均提供了兩個用於偽彩對映的函式——cv::applyColorMap()和cv::LUT()。

1、cv::applyColorMap()

cv::applyColorMap()是使用opencv預定義的colormap,將灰度圖對映成彩色影象。opencv中提供了12個預定義的colormaps,如下圖所示


具體使用如下:

	cv::Mat im_gray = imread("pluto.jpg", cv::IMREAD_GRAYSCALE);
	cv::Mat im_color;
	cv::applyColorMap(im_gray, im_color, cv::COLORMAP_JET);

效果如下:


2、cv::LUT()

雖然cv::applyColorMap()用起來很方便,但是無法支援使用者自定義的colormap,而這就需要使用cv::LUT()。

首先是colormap的定義:以256級灰階為例,所謂colormap就是就是灰度級0-255之間256種色彩的對映表。

cv::LUT()具體使用方法如下:

	cv::Mat image_gray_3c;
	//單通道的灰度圖,轉換成R、G、B三通道值均相等的三通道圖
	cv::cvtColor(image_gray, image_gray_3c, cv::COLOR_GRAY2RGB);
	//opencv預設的顏色排列順序是BGR,而這裡自定義的colormap的順序是RGB
	cv::cvtColor(golden_map, golden_map, cv::COLOR_BGR2RGB); 
	cv::Mat image_color;
	cv::LUT(image_gray_3c, golden_map, image_color);


注意:輸入的灰度圖,一定要先轉換成3通道圖(即24位深)。這裡,使用了自己定義的一個colormap,效果如下:


2017.03.31