1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        圖像處理基礎:顏色空間及其OpenCV實現(xiàn)

        共 4454字,需瀏覽 9分鐘

         ·

        2020-12-12 20:25

        點擊上方AI算法與圖像處理”,選擇加"星標"或“置頂

        重磅干貨,第一時間送達


        作者:Soumyadip Sarkar

        編譯:ronghuaiyang

        轉自:AI公園

        導讀

        對圖像的顏色空間做了一個概念性的介紹,并通過代碼的方式可視化了每種顏色空間的每個通道所表示的意義。

        文章內容包括:

        • 什么是顏色空間?
        • 顏色空間有哪些類別?
        • 如何在OpenCV中實現(xiàn)?

        什么是顏色空間?

        顏色是一種連續(xù)的現(xiàn)象,它意味著有無數(shù)種顏色。但是,人類的眼睛和感知能力是有限的。所以,為了識別這些顏色,我們需要一種媒介或這些顏色的表示,這種顏色的表示被稱為色彩空間。在技術術語中,一個顏色模型或顏色空間是一個特定的3-D坐標系統(tǒng)以及該系統(tǒng)中的一個子空間,其中每一種顏色都由一個單點表示。

        有哪些顏色空間的類型?

        目前主要有五種類型的顏色模型。但是,我將只寫一些常見的(RGB、HSV和HSL)。

        1. RGB(Red Green Blue)
        2. HSL(Hue Saturation Lightness)
        3. HSV(Hue Saturation Value)
        4. YUV(Luminance, blue–luminance, red–luminance)
        5. CMYK(Cyan, Magenta, Yellow, Key)

        RGB顏色空間:

        RGB顏色空間是三維坐標系中紅、綠、藍坐標所表示的著名顏色空間之一。在更專業(yè)的術語中,RGB將顏色描述為由三個部分組成的元組。每個部分都可以取0到255之間的值,其中元組(0,0,0)表示黑色,元組(255,255,255)表示白色。元組的第0、第1和第2個部分分別表示紅、綠、藍的分量。

        RGB顏色空間的Python實現(xiàn):

        這里我們導入了必要的庫,cv2用于顏色空間轉換,NumPy用于數(shù)組操作,Matplotlib用于顯示圖像,os用于訪問圖像目錄,tqdm用于顯示加載欄。

        hsl_img?=?cv2.cvtColor(X[0],cv2.COLOR_BGR2HLS)??####?CONVERTING?BGR?COLOR?SPACE?INTO?HSL?COLOR?SPACE??####
        hsl_img_1?=?hsl_img.copy()
        hsl_img_2?=?hsl_img.copy()
        hsl_img_3?=?hsl_img.copy()
        hsl_img_1[:,:,1]?=?0??####?HUE?-->?ZERO??####
        hsl_img_1[:,:,2]?=?0
        hsl_img_2[:,:,0]?=?0??####?SATURATION?-->?ZERO?####
        hsl_img_2[:,:,2]?=?0
        hsl_img_3[:,:,0]?=?0??####?LIGHTNESS?-->?ZERO?####
        hsl_img_3[:,:,1]?=?0

        設置兩個空列表Z和X,分別用于存儲帶有各自圖像的標簽,然后指定圖像大小和路徑目錄。在這之后,我定義了兩個函數(shù),用于返回flower類型(assign_lable)和訪問每個圖像、讀取和調整其大小(make_train_data)。

        Z,X=[],[]
        IMG_SIZE=150
        FLOWER_SUNFLOWER_DIR='../input/flowers-recognition/flowers/flowers/sunflower'

        def?assign_label(img,flower_type):
        ????return?flower_type

        def?make_train_data(flower_type,DIR):
        ????for?img?in?tqdm(os.listdir(DIR)):
        ????????label=assign_label(img,flower_type)
        ????????path?=?os.path.join(DIR,img)
        ????????img?=?cv2.imread(path,cv2.IMREAD_COLOR)
        ????????img?=?cv2.resize(img,?(IMG_SIZE,IMG_SIZE))#Resizing?the?image

        加載圖像,然后在OpenCV以BGR格式讀取圖像時將BGR顏色空間轉換為RGB顏色空間,但Maplotlib使用RGB格式來顯示圖像。這就是為什么我們需要轉換顏色空間后,讀取圖像為RGB。

        然后對固定圖像進行三份拷貝,并將每份拷貝的任何雙色通道設為零,分別用于訪問紅、綠、藍通道。如果你讓第0個顏色通道都是0那么你只會得到藍色通道。

        make_train_data('Sunflower',FLOWER_SUNFLOWER_DIR)??#####Loading?Sunflower?Data
        fix_img?=?cv2.cvtColor(X[0],cv2.COLOR_BGR2RGB)????###########CONVERTING?BGR?COLOR?SPACE?INTO?RGB?COLOR?SPACE?#########
        new_img_1?=?fix_img.copy()?
        new_img_2?=?fix_img.copy()
        new_img_3?=?fix_img.copy()
        new_img_1[:,:,0]?=?0?#?making?R?channel?zero????####For?BLUE?channel#####
        new_img_1[:,:,1]?=?0?#making?G?channel?zero
        new_img_2[:,:,1]?=?0####For?RED?color?Channel####
        new_img_2[:,:,2]?=?0
        new_img_3[:,:,0]?=?0###For?GREEN?Channel####
        new_img_3[:,:,2]?=?0

        顯示圖像:

        f,?axes?=?plt.subplots(1,3,?figsize?=?(15,15))
        list?=?[new_img_1,new_img_2,new_img_3]
        i?=?0
        for?ax?in?axes:
        ????ax.imshow(list[i])
        ????i+=1

        HSL顏色空間:

        HSL的一般含義是色調、飽和度和明度。你可以將HSL以圓柱體的形式可視化,如圖2(a)所示。圍繞圓柱體的是不同的顏色,比如綠色、黃色、紅色等等(我們真正想要的顏色)。飽和度是指顏色的多少,而明度是指顏色有多暗或多亮。正如你所看到的,圓柱體的頂部全是白色,底部全是黑色。

        圖2:HSL顏色空間

        HSL顏色空間的Python實現(xiàn):

        使用OpenCV函數(shù)**cvtColor()**將BGR顏色空間轉換為HSL顏色空間,在這里我們需要傳遞圖像,以及從哪個顏色空間到哪個顏色空間我們想要改變圖像。然后再復制并使兩個顏色通道為零,以便分別顯示每個顏色通道。

        hsl_img?=?cv2.cvtColor(X[0],cv2.COLOR_BGR2HLS)??####?CONVERTING?BGR?COLOR?SPACE?INTO?HSL?COLOR?SPACE??####
        hsl_img_1?=?hsl_img.copy()
        hsl_img_2?=?hsl_img.copy()
        hsl_img_3?=?hsl_img.copy()
        hsl_img_1[:,:,1]?=?0??####?HUE?-->?ZERO??####
        hsl_img_1[:,:,2]?=?0
        hsl_img_2[:,:,0]?=?0??####?SATURATION?-->?ZERO?####
        hsl_img_2[:,:,2]?=?0
        hsl_img_3[:,:,0]?=?0??####?LIGHTNESS?-->?ZERO?####
        hsl_img_3[:,:,1]?=?0

        現(xiàn)在顯示三個不同的顏色通道→

        f,?axes?=?plt.subplots(1,3,?figsize?=?(15,15))
        list?=?[hsl_img_1,hsl_img_2,hsl_img_3]
        i?=?0
        for?ax?in?axes:
        ????ax.imshow(list[i])
        ????i+=1

        HSV顏色空間:

        HSV這個名字來自于顏色模型的三個坐標,即色相、飽和度和值。它也是一個圓柱形的顏色模型,圓柱體的半徑表示飽和度,垂直軸表示值,角度表示色調。對于觀察者,色調是占主導地位的,飽和度是混合到色調中的白光的數(shù)量,value是chrome的強度,value較低顏色變得更加類似于黑色,value越高,顏色變得更加像顏色本身。通過改變這些參數(shù),我們可以生成不同的顏色。

        圖3:HSV顏色空間

        HSV顏色空間的Python實現(xiàn):

        使用cvtColor()函數(shù)將色彩空間轉換為HSV色彩空間。然后再復制并使兩個通道置為零,以便分別顯示每個通道。

        hsv_img?=?cv2.cvtColor(X[0],cv2.COLOR_BGR2HSV)
        hsv_img_1?=?hsv_img.copy()
        hsv_img_2?=?hsv_img.copy()
        hsv_img_3?=?hsv_img.copy()
        hsv_img_1[:,:,1]?=?0#HUE?-->?ZERO
        hsv_img_1[:,:,2]?=?0
        hsv_img_2[:,:,0]?=?0#SATURATION?-->?ZERO
        hsv_img_2[:,:,2]?=?0
        hsv_img_3[:,:,0]?=?0#VALUE?-->?ZERO
        hsv_img_3[:,:,1]?=?0

        單獨顯示每個顏色通道:


        英文原文:https://medium.com/analytics-vidhya/image-processing-series-part1-colorspaces-836d2e3ca700


        ?End?


        聲明:部分內容來源于網(wǎng)絡,僅供讀者學術交流之目的。文章版權歸原作者所有。如有不妥,請聯(lián)系刪除。


        下載1:何愷明頂會分享


        AI算法與圖像處理」公眾號后臺回復:何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結分析


        下載2:leetcode?開源


        AI算法與圖像處理」公眾號后臺回復:leetcode,即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!



        下載3 CVPR2020

        AI算法與圖像處公眾號后臺回復:CVPR2020,即可下載1467篇CVPR?2020論文
        個人微信(如果沒有備注不拉群!
        請注明:地區(qū)+學校/企業(yè)+研究方向+昵稱


        覺得不錯就點亮在看吧

        瀏覽 76
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            性交在线 | 在线免费黄色小视频 | 中文字幕一区二区久久人妻网站 | 一级黄毛片 | 国产毛片18水真多18精品 | 在线观看视频黄片 | mv国产剧苏语棠 | 62久久久成人精品电影 | 神马伦理片在线观看 | 天天综合第一页 |