欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間的過程

 更新時間:2023年04月20日 16:03:26   作者:cv夏一笑  
這篇文章主要介紹了opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

本專欄代碼地址https://github.com/xiawei20161308104/xv_opencv_tutorials
本節(jié)代碼路徑xv_opencv_tutorials/ImageProcessinginOpenCV/changing_colorspaces.py
參考 圖像工程第4版,張毓晉,清華大學(xué)出版社

0.本節(jié)涉及的opencv新函數(shù)

顏色空間轉(zhuǎn)化函數(shù) cv.cvtColor()

1.彩色的形成

“Indeed rays,properly expressed,are not colored”——牛頓。

光線為不同頻率的電磁波,人的視覺能感受到光的刺激,并且將不同頻率的電磁波感知為不同顏色,所以,彩色僅存在于人的眼睛和大腦中,物理世界分布的是帶有不同輻射能量的光線。

2.彩色空間

彩色模型建立在彩色空間之上,彩色模型和彩色空間的概念不做分別。
根據(jù)原理可以分為4類,根據(jù)應(yīng)用可以分為2類

根據(jù)原理模型原理舉例
比色模型/色度模型基于對光譜反射的物理測量為顏色"id",顏色最精確的表達(dá)
生理學(xué)模型基于人類視網(wǎng)膜中存在的3種基本顏色感知錐細(xì)胞RGB
心理物理模型/精神物理學(xué)模型基于人類對顏色的感知HSI,HCV,L*a*b*
對立模型基于感知實驗HSB
根據(jù)應(yīng)用模型應(yīng)用舉例
面向硬設(shè)備顯示器,打印機(jī)RGB,CMY,CMYK
面向視覺動畫,圖像處理HSI,HSB,L*a*b*

3.為什么需要選擇合適的彩色空間

人對彩色的感知與刺激視網(wǎng)膜的電磁輻射的譜能量分布,人的神經(jīng)心里學(xué),人的生理行為等有關(guān),感知彩色是一個很復(fù)雜的過程,應(yīng)用也存在多樣性。CIE定義了若干彩色模型,每個模型都只有特定的適用情況,
沒有一種通用模型滿足所有情況,由彩色原理和彩色應(yīng)用等去選擇合適的彩色模型能統(tǒng)一處理問題的維度。

4.如何選擇合適的彩色空間

了解自己的需求并尋找對應(yīng)特性的彩色空間。例如,RGB模型特別適合在圖像采集輸入和圖像輸出顯示等場合應(yīng)用,但與人類視覺感知有一定區(qū)別,就是當(dāng)我們看到一幅圖像的時候并不能感知到他的紅綠藍(lán)各有多少分量,這個時候HSV模型就比較適配,H代表色調(diào),S代表飽和度,V代表強(qiáng)度,這樣建立的模型與人的感知高度適配。
在HSV模式下分析圖像,取到圖像的V值,并減小100個像素到v1,對比觀察,能發(fā)現(xiàn),人眼就能明顯感知到亮度的變化。

def main():  
    # 讀取圖像  
    src = cv.imread("../imgs/opencv.png")  
    # 轉(zhuǎn)換HSV空間  
    hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)  
    # 分離通道  
    h, s, v = cv.split(hsv)  
    cv.namedWindow("v", cv.WINDOW_NORMAL)  
    cv.imshow("v", v)  
    # 減小亮度  
    v1 = v - 30  
    cv.namedWindow("v1", cv.WINDOW_NORMAL)  
    cv.imshow("v1", v1)  
  
    cv.waitKey(0)  
    cv.destroyAllWindows()

5.常用的彩色空間 RGB

(出自圖像工程第4版,張毓晉,清華大學(xué)出版社)

  • 基于 人體錐細(xì)胞,為一種與人的視覺系統(tǒng)結(jié)構(gòu)密切相連的模型
  • 視網(wǎng)膜中三種不同的感受彩色的錐細(xì)胞的波長響應(yīng)曲線SML與三原色RGB基本對應(yīng)
  • RGB模型的建立在笛卡爾坐標(biāo)系統(tǒng)中
  • 原點為黑色,離原點最遠(yuǎn)的頂點為白色,這兩點連線上為深淺不同的灰色

CMY

  • 三色光兩兩疊加產(chǎn)生三補(bǔ)色CMY,C為藍(lán)綠(綠+藍(lán)),M為品紅(紅+藍(lán)),Y為黃(紅+綠)
  • 一般用于出版社打印,圖像處理不常用

HSI

  • HSI與人類感知相對應(yīng),被稱為面向用戶的彩色模型
  • 用色調(diào)(Hue)、色飽和度(Saturation)和亮度(Intensity)來描述色彩
  • 獨立于顯示設(shè)備
  • HSI的優(yōu)點:
    • 強(qiáng)度分量與圖像的彩色信息無關(guān),是獨立的, 也就是強(qiáng)度/亮度分量的變換并不改變圖像的色調(diào)和飽和度。
    • H與S獨立并且適配人的感官,使得HSI模型非常適合基于人的視覺系統(tǒng)對彩色感知特性進(jìn)行處理分析的圖像算法。
  • HSI的缺點:
    • 并不是均勻彩色空間模型——人所感覺到的兩點的色彩區(qū)別程度與色彩空間兩點的歐氏距離相對應(yīng)。

為了更直觀的感受HSI彩色模型對人類感官的適配,代碼拆分了同一幅圖的RGB分量和HSV分量。

顏色越深則該分量值的占比越大??梢钥闯?,HSI的三幅圖看起來很不相同,表示,人眼能感覺到的HSI三個分量的區(qū)別要比RGB三個分量的區(qū)別要大。

L*a*b*

  • 從人的直觀感受來看,彩色模型對彩色的描述應(yīng)該與人對彩色的感知越同步越好,L\*a\*b\*是一個均勻彩色空間,即,人所感覺到的兩點的色彩區(qū)別程度與此空間中兩點的歐氏距離相對應(yīng)
  • 也是一個面向人類視覺的彩色空間,與設(shè)備無關(guān),適合接近自然光照明的應(yīng)用場合

6.變換彩色空間數(shù)學(xué)公式

每個工具包工具定義的分量范圍不同,像色調(diào)H可以是0-180也可以是0-360,在數(shù)學(xué)上,可以互相轉(zhuǎn)換。所以opencv在處理時,對于8位和16位圖像,R、 G 和 B 被轉(zhuǎn)換為浮點格式,并按比例縮放歸一化到0-1。
部分轉(zhuǎn)換公式如下:

  • RGB2Gray

  • RGB2CIE XYZ

  • RGB2HSV

7.opencv變換彩色空間代碼+注釋+效果

opencv的cvtColor函數(shù)實現(xiàn)色彩空間的轉(zhuǎn)換,提供了150種顏色空間的轉(zhuǎn)換方式,只需要在cvtColor函數(shù)的flag位填寫對應(yīng)的轉(zhuǎn)換標(biāo)識即可。轉(zhuǎn)換標(biāo)識獲取如下。

import cv2 as cv  
flags = [i for i in dir(cv) if i.startswith('COLOR_')]  
#這里會輸出150種flag,他們是opencv定義的彩色空間轉(zhuǎn)換flag,是cv.cvtColor(input_image, flag)的第二個參數(shù)值。
print( flags )

可以自己通過上面的代碼獲取,或者直接查詢官方文檔

這里介紹兩種轉(zhuǎn)換代碼和效果案例,分別是BGR2GrayBGR2HSV(opencv中沒提供HSI,但這兩個彩色空間差不多

#BGR2Gray
import cv2 as cv  
def main():   
	src = cv.imread("../imgs/opencv.png")
    cv.namedWindow("input", cv.WINDOW_AUTOSIZE)  
    cv.imshow("input", src)  
    gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY)  
    cv.imwrite('gray.png', gray)  
    cv.imshow("gray", gray)  
    cv.waitKey(0)  
    cv.destroyAllWindows()  
if __name__ == "__main__":  
    main()

def main():  
    src = cv.imread("../imgs/opencv.png")  
    cv.namedWindow("input", cv.WINDOW_AUTOSIZE)  
    cv.imshow("input", src)  
  
    hsv = cv.cvtColor(src, cv.COLOR_BGR2HSV)  
    cv.imwrite('hsv.png', hsv)  
    cv.imshow("hsv", hsv)  
    # 分離通道  
    h, s, v = cv.split(hsv)  
    cv.namedWindow("h", cv.WINDOW_NORMAL)  
    cv.imshow("h", h)  
    cv.namedWindow("s", cv.WINDOW_NORMAL)  
    cv.imshow("s", s)  
    cv.namedWindow("v", cv.WINDOW_NORMAL)  
    cv.imshow("v", v)  
  
    cv.waitKey(0)  
    cv.destroyAllWindows()  

if __name__ == "__main__":  
    main()

到此這篇關(guān)于opencv+圖像處理(Image Processing in OpenCV) 4-0改變顏色空間的文章就介紹到這了,更多相關(guān)opencv圖像處理改變顏色空間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python+appium實現(xiàn)自動化測試的示例代碼

    python+appium實現(xiàn)自動化測試的示例代碼

    appium是一個開源的測試自動化框架,可以與原生的、混合的和移動的web應(yīng)用程序使用,本文主要介紹了python+appium實現(xiàn)自動化測試的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Pandas DataFrame分組求和、分組乘積的實例

    Pandas DataFrame分組求和、分組乘積的實例

    這篇文章主要介紹了Pandas DataFrame分組求和、分組乘積的實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • Python?redis模塊的使用教程指南

    Python?redis模塊的使用教程指南

    這篇文章主要為大家詳細(xì)介紹了Python?redis模塊的使用教程指南的相關(guān)資料,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起學(xué)習(xí)一下吧
    2022-10-10
  • Python實現(xiàn)簡單的學(xué)生信息管理系統(tǒng)

    Python實現(xiàn)簡單的學(xué)生信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)簡單的學(xué)生信息管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • Python XML RPC服務(wù)器端和客戶端實例

    Python XML RPC服務(wù)器端和客戶端實例

    這篇文章主要介紹了Python XML RPC服務(wù)器端和客戶端實例,本文給出了實現(xiàn)代碼以及運(yùn)行效果,需要的朋友可以參考下
    2014-11-11
  • pycharm中導(dǎo)入模塊錯誤時提示Try to run this command from the system terminal

    pycharm中導(dǎo)入模塊錯誤時提示Try to run this command from the system ter

    這篇文章主要介紹了pycharm中導(dǎo)入模塊錯誤時提示Try to run this command from the system terminal問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-03-03
  • python 計算方位角實例(根據(jù)兩點的坐標(biāo)計算)

    python 計算方位角實例(根據(jù)兩點的坐標(biāo)計算)

    今天小編就為大家分享一篇python 計算方位角實例(根據(jù)兩點的坐標(biāo)計算),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • Pyspark讀取parquet數(shù)據(jù)過程解析

    Pyspark讀取parquet數(shù)據(jù)過程解析

    這篇文章主要介紹了pyspark讀取parquet數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-03-03
  • python通過cookie模擬已登錄狀態(tài)的初步研究

    python通過cookie模擬已登錄狀態(tài)的初步研究

    對于那些需要在登錄環(huán)境下進(jìn)行的爬蟲操作,模擬登陸或偽裝已登錄狀態(tài)是一個剛性需求。這篇文章主要介紹了python通過cookie模擬已登錄狀態(tài)的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • Python如何使用cv2.canny進(jìn)行圖像邊緣檢測

    Python如何使用cv2.canny進(jìn)行圖像邊緣檢測

    這篇文章主要介紹了Python如何使用cv2.canny進(jìn)行圖像邊緣檢測問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01

最新評論