python-opencv-图像颜色映射_色度图

图像颜色映射

图像颜色映射的实质是色彩通道的变换计算,即通过对图像的颜色通道值进行修改实现图像的颜色映射,说白了就是用新的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。

效果图:

python-opencv-图像颜色映射_色度图_02


python-opencv-图像颜色映射_色度图_03

上面图可以看出,蓝色被加强了


图像彩色映射 

与图像颜色映射用于增强某个或某几个颜色通道值不同的是,图像彩色映射主要应用于灰度图,并利用色度图产生伪彩色图像。 

例如,假设我们想在地图上显示不同地区的温度。我们可以把地图上不同地区的温度数据叠加为灰度图像。其中,温度较低的地方用较暗的区域表示,温度较高的地区用较亮的区域表示。这样就形成了一个温度数据图像。这样的图像是很有意义的,我们能通过颜色的变化更好地感知不同区域温度的高地。除此之外,还有高度、压力、密度、湿度等我们都可以通过将其转换为彩色数据图像以实现数据的可视化。 

 OpenCV中一共定义了12种色度图,可以应用于灰度图像,产生不同的伪彩色图像。

python-opencv-图像颜色映射_彩色图像_04


上图中显示了一个关于色度图的视觉表示及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()


效果图:

python-opencv-图像颜色映射_色度图_05


python-opencv-图像颜色映射_色度图_06


python-opencv-图像颜色映射_色度图_07