【OpenCV3】彩色對映——cv::applyColorMap()與cv::LUT()詳解
阿新 • • 發佈:2019-01-28
在影象處理的過程中,我們通常會遇到將灰度影象對映成彩色影象的情形(即通常所說的偽彩對映),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