圖像顏色映射
圖像顏色映射的實質是色彩通道的變換計算,即通過對圖像的顏色通道值進行修改實現圖像的顏色映射,說白了就是用新的bgr值替換掉舊的bgr值。
import cv2 import numpy as np image = cv2.imread("wuhuan.jpg",1) cv2.imshow('image',image) image_info =image.shape height=image_info[0] width=image_info[1] dst=np.zeros((height,width,3),np.uint8) for i in range(height): for j in range(width): (b,g,r)=image[i,j] b=b*1.5 if b>255: b=255 dst[i,j]=(b,g,r) cv2.imshow('dst', dst) #cv2.imshow("dst",dst) cv2.waitKey()
上述代碼中,我們遍歷原圖像的像素點,並將像素點的藍色通道值進行增強,具體來說,就是將bgr中的b(藍色通道)值在原基礎上乘以1.5。當然,顏色通道值的范圍為0~255,因此對於乘積結果我們需要做范圍判斷,對於超過255的結果需要置為255。
效果圖:
上面圖可以看出,藍色被加強了
圖像彩色映射
與圖像顏色映射用於增強某個或某幾個顏色通道值不同的是,圖像彩色映射主要應用於灰度圖,並利用色度圖產生偽彩色圖像。
例如,假設我們想在地圖上顯示不同地區的溫度。我們可以把地圖上不同地區的溫度數據疊加為灰度圖像。其中,溫度較低的地方用較暗的區域表示,溫度較高的地區用較亮的區域表示。這樣就形成了一個溫度數據圖像。這樣的圖像是很有意義的,我們能通過顏色的變化更好地感知不同區域溫度的高地。除此之外,還有高度、壓力、密度、濕度等我們都可以通過將其轉換為彩色數據圖像以實現數據的可視化。
OpenCV中一共定義了12種色度圖,可以應用於灰度圖像,產生不同的偽彩色圖像。
上圖中顯示了一個關於色度圖的視覺表示及OpenCV中的對應數值,其中,顏色條從左到右分別表示灰度值從小到大,即越小的灰度值將呈現越靠左邊的顏色。
OpenCV中使用applyColorMap(src,colormap,dst=None)函數來產生偽彩色圖像
import cv2 image = cv2.imread("wuhuan.jpg",1) gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv2.imshow('gray',gray) colormap=cv2.applyColorMap(gray,cv2.COLORMAP_JET) #彩色映射--制作偽彩色圖像 ''' 參數1 src:必選參數。表示輸入的原圖像數組,原圖像必須為灰度圖或者是CV_8UC1、CV_8UC的彩色圖 參數2 colormap:必選參數。用於設置圖像彩色映射的參考色度圖 ''' cv2.imshow('color',colormap) cv2.waitKey()
效果圖: