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進(jìn)行顏色分割

        共 2880字,需瀏覽 6分鐘

         ·

        2021-05-16 07:07


        點(diǎn)擊上方小白學(xué)視覺”,選擇加"星標(biāo)"或“置頂

        重磅干貨,第一時(shí)間送達(dá)

        本文轉(zhuǎn)自:機(jī)器學(xué)習(xí)算法那些事

        在濾波、變換、縮放等任務(wù)中,圖像分割具有重要的意義。圖像分割是將不同的對(duì)象劃分為不同的部分,并將這些區(qū)域以明顯的顏色或者記號(hào)標(biāo)記出來。圖像分割是使用輪廓、邊界框等概進(jìn)行其他高級(jí)計(jì)算機(jī)視覺任務(wù)(例如對(duì)象分類和對(duì)象檢測)的基礎(chǔ)。良好的圖像分割為我們后續(xù)的圖像分類以及檢測奠定了基礎(chǔ)。

        在計(jì)算機(jī)視覺中主要有3種不同的圖像分割類型:
        1.顏色分割或閾值分割
        2.語義分割
        3.邊緣檢測

        在本文里,我們將介紹基于顏色的圖像分割,并通過OpenCV將其實(shí)現(xiàn)。小伙伴可能會(huì)問,當(dāng)我們擁有像Caffe和Keras這樣的工具時(shí),為什么要使用擁有21年歷史的OpenCV庫。與Caffe和Keras等現(xiàn)代SOTA DL方法相比,OpenCV雖然在準(zhǔn)確性方面有一些落后,但是運(yùn)行速度相較于上述方法具有得天獨(dú)厚的優(yōu)勢。
        跨框架進(jìn)行圖像分類任務(wù)的CPU性能比較

        即使使最著名的神經(jīng)網(wǎng)絡(luò)框架之一的YOLOv3進(jìn)行對(duì)象檢測時(shí),其運(yùn)行速度也是不盡如人意的。此外,Darknet使用OpenMP(應(yīng)用程序編程接口)進(jìn)行編譯的時(shí)間幾乎是OpenCV的18倍。這更加說明了使用OpenCV的速度是比較快速的。
        在OpenCV和Darknet上進(jìn)行YOLOv3培訓(xùn)時(shí)CPU性能

        顏色分割可用于檢測身體腫瘤、從森林或海洋背景中提取野生動(dòng)物的圖像,或者從單一的背景圖像中提取其他彩色物體。下面幾幅圖是圖像分割的幾個(gè)典型示例。:

        醫(yī)學(xué)中的顏色分割

             
            
        顏色分割示例

        從以上示例中可以看出,盡管OpenCV是一種更快的方法,但是它對(duì)于圖像的分割結(jié)果并不是非常的理想,有時(shí)會(huì)出現(xiàn)分割誤差或者錯(cuò)誤分割的情況

        接下來我們將介紹如何通過OpenCV對(duì)圖像進(jìn)行顏色的分割。這里我們有一張含有鳥的圖片,我們的目標(biāo)是通過顏色分割嘗試從圖片中提取這只鳥。

        含鳥的圖片

        首先我們導(dǎo)入完成該任務(wù)所需的所有庫和這張圖像:
        import cv2 as cvimport matplotlib.pyplot as pltfrom PILimport Image!wget -nv https://static.independent.co.uk/s3fs-public/thumbnails/image/2018/04/10/19/pinyon-jay-bird.jpg -O bird.pngimg = Image.open('./bird.png')

        接下來我們使用濾波器對(duì)該圖像進(jìn)行預(yù)處理,對(duì)圖像進(jìn)行模糊操作,以減少圖像中的細(xì)微差異。在OpenCV中提供了4個(gè)內(nèi)置的濾波器,以滿足用戶對(duì)圖像進(jìn)行不同濾波的需求。這4種濾波器的使用方式在下面的代碼中給出。但是,針對(duì)于本文中需要分割的圖像,我們并不需要將4種濾波器都使用。

        blur = cv.blur(img,(5,5))blur0=cv.medianBlur(blur,5)blur1= cv.GaussianBlur(blur0,(5,5),0)blur2= cv.bilateralFilter(blur1,9,75,75)

        下圖是圖像濾波模糊后的結(jié)果:
        模糊后的圖像

        如果小伙伴對(duì)圖像濾波感興趣,可以在這里進(jìn)行了解https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_filtering/py_filtering,這里再做過多的介紹。

        接下來我們需要將圖像從BGR(藍(lán)綠色紅色)轉(zhuǎn)換為HSV(色相飽和度值)。為什么我們要從BGR空間中轉(zhuǎn)到HSV空間中?因?yàn)橄袼谺,G和R的取值與落在物體上的光相關(guān),因此這些值也彼此相關(guān),無法準(zhǔn)確描述像素。相反,HSV空間中,三者相對(duì)獨(dú)立,可以準(zhǔn)確描述像素的亮度,飽和度和色度。
        hsv = cv.cvtColor(blur2, cv.COLOR_BGR2HSV)
        這個(gè)操作看似很,但當(dāng)我們嘗試找到要提取的閾值或像素范圍時(shí),它會(huì)使我們的工作變得更加簡單。

        接下來是“顏色分割”的最重要一步,即“閾值分割”。這里我們將確定要提取的所有像素的閾值。使用OpenCV進(jìn)行顏色分割中最重要步驟——閾值分割,這可能是一個(gè)相當(dāng)繁瑣的任務(wù)。即使我們可能想到通過使用顏色選擇器工具來了解像素值,但是仍然需要進(jìn)行不斷的嘗試,以便在所有像素中獲取期望的像素,有些時(shí)候這也可能是一項(xiàng)艱巨的任務(wù)。具體操作如下:
        low_blue = np.array([55, 0, 0])high_blue = np.array([118, 255, 255])mask = cv.inRange(hsv, low_blue, high_blue)
        上面代碼中最后一行的“Mask”將所有不在描述對(duì)象范圍內(nèi)的其他像素進(jìn)行覆蓋。程序運(yùn)行結(jié)果如下圖所示:
        Mask

        接下來,運(yùn)行最后的代碼以顯示由Mask作為邊界的圖像。所使用的代碼和程序運(yùn)行結(jié)果在下面給出:
        res = cv.bitwise_and(img,img, mask= mask)
        從顏色分割中提取圖像

        那么通過上面的方式,我們就實(shí)現(xiàn)了基于顏色的圖像分割,感興趣的小伙伴們可以通過上面的代碼和步驟進(jìn)行嘗試,看看能否滿足自己的圖像分割需求。

        下載1:OpenCV-Contrib擴(kuò)展模塊中文版教程
        在「小白學(xué)視覺」公眾號(hào)后臺(tái)回復(fù):擴(kuò)展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴(kuò)展模塊教程中文版,涵蓋擴(kuò)展模塊安裝、SFM算法、立體視覺、目標(biāo)跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

        下載2:Python視覺實(shí)戰(zhàn)項(xiàng)目52講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):Python視覺實(shí)戰(zhàn)項(xiàng)目,即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計(jì)數(shù)、添加眼線、車牌識(shí)別、字符識(shí)別、情緒檢測、文本內(nèi)容提取、面部識(shí)別等31個(gè)視覺實(shí)戰(zhàn)項(xiàng)目,助力快速學(xué)校計(jì)算機(jī)視覺。

        下載3:OpenCV實(shí)戰(zhàn)項(xiàng)目20講
        小白學(xué)視覺公眾號(hào)后臺(tái)回復(fù):OpenCV實(shí)戰(zhàn)項(xiàng)目20講即可下載含有20個(gè)基于OpenCV實(shí)現(xiàn)20個(gè)實(shí)戰(zhàn)項(xiàng)目,實(shí)現(xiàn)OpenCV學(xué)習(xí)進(jìn)階。

        交流群


        歡迎加入公眾號(hào)讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動(dòng)駕駛、計(jì)算攝影、檢測、分割、識(shí)別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會(huì)逐漸細(xì)分),請(qǐng)掃描下面微信號(hào)加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請(qǐng)按照格式備注,否則不予通過。添加成功后會(huì)根據(jù)研究方向邀請(qǐng)進(jìn)入相關(guān)微信群。請(qǐng)勿在群內(nèi)發(fā)送廣告,否則會(huì)請(qǐng)出群,謝謝理解~


        瀏覽 70
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        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>
            日本熟妇HD | 91视频电影 | 国产在线综合视频 | www.激情五月 | 香蕉久久久 | 强伦女教师视频 | 免费的性爱视频 | 快穿各种被强h肉怀孕1v1 | 日BB视频 | 男女一起差差差网站 |