涉及圖像處理和計算機視覺時,色彩空間轉換是一個常見操作,應用如下:
- 降維: 將一張彩色圖像轉換為灰度圖像可以減少數據的維度,簡化處理過程,同時在某些情況下保留重要的視覺信息。
- 突顯特徵: 在某些情況下,某些色彩通道可能包含冗餘或不必要的信息,通過轉換到其他色彩空間,可以更好地突顯圖像中的重要特徵。
- 色彩分割和物體識別: 在一些應用中,特定色彩空間的使用有助於區分不同的對象或區域,從而實現對象的識別或分割。
影像的色彩空間轉換是指將一張圖片從一種色彩表示方式轉換為另一種的過程。常見的色彩空間包括RGB(紅綠藍)、CMYK(青、品紅、黃、黑)、HSV(色相、飽和度、明度)等。
圖檔名稱有連結到維基百科色彩空間詳細的介紹。
HSV與HSL 色彩空間
常見的色彩空間轉換方法:
- RGB到灰度(Grayscale): 將彩色圖像轉換為灰度圖像。這可以通過取RGB通道的平均值或者使用特定的權重進行轉換來實現。
- RGB到HSV: 將RGB色彩空間轉換為HSV色彩空間。這種轉換使得色相、飽和度和明度的調整更加直觀。
- RGB到CMYK: 將RGB色彩空間轉換為CMYK色彩空間,通常用於印刷。CMYK表示青、品紅、黃和黑。
- HSV到RGB: 將HSV色彩空間轉換回RGB色彩空間。這在進行色彩修正或合成不同效果的圖像時很有用。
- YUV轉換: 將RGB轉換為YUV色彩空間,其中Y表示亮度,U和V表示色度。這在數字視頻編碼中常被使用。
- Lab色彩空間: CIE Lab色彩空間是一種基於人眼視覺感知的色彩模型,它分為亮度(L)和兩個色度通道(a和b)。
OpenCV的cvtColor則提供了以下幾種轉換代碼:
語法:
cv2.cvtColor(src, code)
src
: 輸入圖像,即待轉換的圖像。code
: 轉換代碼,指定了轉換的類型,例如從BGR到灰度、BGR到HSV等。可以使用cv2.COLOR_*
常數來指定轉換類型。
轉換代碼:
- BGR到灰度(Grayscale):
cv2.COLOR_BGR2GRAY
- 灰度到BGR:
cv2.COLOR_GRAY2BGR
- BGR到HSV:
cv2.COLOR_BGR2HSV
- HSV到BGR:
cv2.COLOR_HSV2BGR
- BGR到Lab:
cv2.COLOR_BGR2Lab
- Lab到BGR:
cv2.COLOR_Lab2BGR
- BGR到YUV:
cv2.COLOR_BGR2YUV
- YUV到BGR:
cv2.COLOR_YUV2BGR
- BGR到RGB:
cv2.COLOR_BGR2RGB
- RGB到BGR:
cv2.COLOR_RGB2BGR
- BGR到RGBA:
cv2.COLOR_BGR2RGBA
- RGBA到BGR:
cv2.COLOR_RGBA2BGR
程式範例
轉換成灰階
import cv2
# 讀取輸入圖像
img = cv2.imread('111.jpg')
# 將圖片轉換成灰階影像
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 顯示原始圖像和灰階後的圖像
cv2.imshow('Original Image', img)
cv2.imshow('Gray Image', gray_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

灰階比較圖
轉換成HSV
import cv2
# 讀取輸入圖像
img = cv2.imread('111.jpg')
# 將圖片轉換成HSV影像
gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
# 顯示原始圖像和HSV後的圖像
cv2.imshow('Original Image', img)
cv2.imshow('HSV Image', HSV_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

HSV轉換後