使用OpenCV的預定義的顏色映射來將灰度圖像偽彩色化。
1、 colormap(色度圖)是什么?
假設我們想在地圖上顯示美國不同地區的溫度。我們可以把美國地圖上的溫度數據疊加為灰度圖像——較暗的區域代表較冷的溫度,更明亮的區域代表較熱的區域。這樣的表現不僅令人難以置信,而且代表了兩個重要的原因。首先,人類視覺系統沒有被優化來測量灰度強度的微小變化。我們能更好地感知顏色的變化。第二,我們用不同的顏色代表不同的意思。用藍色和較溫暖的溫度用紅色表示較冷的溫度更有意義。
溫度數據只是一個例子,但還有其他幾個數據是單值(灰度)的情況,但將其轉換為彩色數據以實現可視化是有意義的。用偽彩色更好地顯示數據的其他例子是高度、壓力、密度、濕度等等。
2、在OpenCV中使用applycolormap(偽彩色函數)
OpenCV的定義12種colormap(色度圖),可以應用於灰度圖像,使用函數applycolormap產生偽彩色圖像。讓我們很快看到如何將色度圖的一種模式colormap_jet應用到一幅圖像中。
C++
1
2
3
4
5
|
using
namespace
cv;
Mat im_gray = imread(
"pluto.jpg"
, IMREAD_GRAYSCALE);
Mat im_color;
applyColorMap(im_gray, im_color, COLORMAP_JET);
|
Python
1
2
3
4
|
import
cv2
im_gray
=
cv2.imread(
"pluto.jpg"
, cv2.IMREAD_GRAYSCALE)
im_color
=
cv2.applyColorMap(im_gray, cv2.COLORMAP_JET)
|
下圖顯示了一個關於colormap(色度圖)的視覺表示和COLORMAP_*的數值,左邊的顏色模式表示較低的灰度值,右邊的則表示較高的灰度值。
Value | Name | Scale |
0 | COLORMAP_AUTUMN | ![]() |
1 | COLORMAP_BONE | ![]() |
2 | COLORMAP_JET | ![]() |
3 | COLORMAP_WINTER | ![]() |
4 | COLORMAP_RAINBOW | ![]() |
5 | COLORMAP_OCEAN | ![]() |
6 | COLORMAP_SUMMER | ![]() |
7 | COLORMAP_SPRING | ![]() |
8 | COLORMAP_COOL | ![]() |
9 | COLORMAP_HSV | ![]() |
10 | COLORMAP_PINK | ![]() |
11 | COLORMAP_HOT | ![]() |
經典colormap色度圖
有些人對餐館的菜單從不滿意。廚師在選擇原料方面的專長,他們將通過添加、替換和替代原料來定制菜餚。哦,是的,那些人。如果你是這些人之一,並想創建自己的顏色表,下面是步驟:
1、定義一個映射:色度圖是從0-255值256種顏色映射。在OpenCV,我們需要創建一個大小為256×1的8位彩色圖像來存儲256個顏色值。
2、對照顏色使用查找表:在OpenCV,你可以申請一個信息存儲在一個256×1的彩色圖像使用查找表LUT圖像。
2、對照顏色使用查找表:在OpenCV,你可以申請一個信息存儲在一個256×1的彩色圖像使用查找表LUT圖像。
C++
1
2
3
4
|
Mat im_color;
// NOTE : im_gray is 3-channel image with identical
// red, green, blue channels.
LUT(im_gray, lut, im_color);
|
Python
1
2
3
|
# NOTE : im_gray is 3-channel image with identical
# red, green, blue channels.
im_color
=
cv2.LUT(im_gray, lut)
|