1. 邊緣和輪廓檢測——計算機視覺的應(yīng)用

        共 3505字,需瀏覽 8分鐘

         ·

        2021-10-09 05:43

        ↑ 點擊藍字?關(guān)注極市平臺

        作者丨磐懟懟
        來源丨深度學(xué)習(xí)與計算機視覺
        編輯丨極市平臺

        極市導(dǎo)讀

        ?

        計算機視覺的重點是從計算機中的視頻和圖像中提取有意義的信息。在本文中,我們將從初學(xué)者開始探索一個使用 OpenCV 的出色計算機視覺項目。對于此項目,你還將看到描述、源代碼和圖像分類。?>>加入極市CV技術(shù)交流群,走在計算機視覺的最前沿

        邊緣檢測

        邊緣檢測是一種用于定位圖像中對象邊界的圖像處理技術(shù)。最流行和廣泛使用的算法之一是 Canny 邊緣檢測器。
        Canny 邊緣檢測器是一種立足點檢測算子,它使用多階段算法來檢測圖像中的各種邊緣。
        主要階段是:
        1. 使用高斯模糊算法,過濾掉圖像。
        2. 在 Sobel 濾波器的幫助下,找出邊緣的強度和方向。
        3. 通過應(yīng)用非極大值抑制來隔離更強的邊緣并將它們細化為一條像素寬的線。
        4. 使用滯后來隔離最簡單的邊緣。
        下面我們安裝 OpenCV :
        pip3?install?opencv-python?matplotlib?numpy
        打開一個 Python 文件并按照以下步驟操作:
        import?cv2
        import?numpy?as?np
        import?matplotlib.pyplot?as?plt
        現(xiàn)在為了檢測它的邊緣,我們必須讀取圖像:
        #?read?the?image
        image?=?cv2.imread("little_flower.jpg")
        首先,我們必須將圖像轉(zhuǎn)換為灰度,然后,我們可以繼續(xù)將圖像繞過 Canny 邊緣檢測器。
        我們來看一下:
        #?convert?it?to?grayscale
        gray?=?cv2.cvtColor(image,?cv2.COLOR_BGR2GRAY)
        讓我們來看看它:
        #?show?the?grayscale?image
        plt.imshow(gray,?cmap="gray")
        plt.show()
        在 Canny 算法的幫助下,我們必須標(biāo)記作為輸入的圖像中的邊緣。
        輸入圖像首先傳遞給 cv2.Canny() 函數(shù),然后用于邊緣檢測。
        #?perform?the?canny?edge?detector?to?detect?image?edges
        edges?=?cv2.Canny(gray,?threshold1=30,?threshold2=100)
        閾值 1 和閾值 2 之間的最小值用于邊緣鏈接。最重要的值用于尋找強邊緣的初始段。
        讓我們看看結(jié)果圖像:
        有趣的是,嘗試微調(diào)邊緣值,看看你是否會讓它變得更好。
        如果你想使用實時攝像頭,這里是完整的代碼:
        import?NumPy?as?np
        import?cv2
        cap?=?cv2.VideoCapture(0)
        while?True:
        ????_,?frame?=?cap.read()
        ????gray?=?cv2.cvtColor(frame,?cv2.COLOR_BGR2GRAY)
        ????edges?=?cv2.Canny(gray,?30,?100)
        ????cv2.imshow("edges",?edges)
        ????cv2.imshow("gray",?gray)
        ????if?cv2.waitKey(1)?==?ord("q"):
        ????????break
        cap.release()
        cv2.destroyAllWindows()
        檢測邊緣的最終目的是捕捉重要事件并在行星屬性內(nèi)執(zhí)行所需的更改。它是圖像處理、圖像模式識別和計算機視覺技術(shù)的基本步驟之一。

        輪廓檢測

        一個輪廓可以描述為一條曲線,將所有具有相同顏色或強度的連續(xù)點組合在一起。基本上,它們顯示圖片中包含的對象的形狀。輪廓檢測可能是一種用于形狀分析和對象檢測和識別的有用技術(shù)。
        輪廓檢測并不是圖像分割的唯一算法,還有很多其他算法,例如目前最先進的語義分割、霍夫變換和 K-Means 分割。
        為了獲得更好的準(zhǔn)確性,我們將遵循以下整個流程來成功檢測圖像中的輪廓:
        • 輸入圖像的標(biāo)準(zhǔn)化是它應(yīng)該始終是二進制形式。這就是為什么我們需要將其轉(zhuǎn)換為二進制格式。
        • 用于查找輪廓的 OpenCV 函數(shù)是 findContours()。
        • 最后,我們必須繪制這些輪廓來顯示圖像。
        好吧,讓我們開始吧。
        首先,讓我們?yōu)檫@個項目安裝所有必需的依賴項:
        pip3?install?matplotlib?opencv-python
        在這里,我們導(dǎo)入所需的模塊:
        import?cv2
        import?matplotlib.pyplot?as?plt
        讓我們加載本教程中使用的圖像:
        #?read?the?image
        image?=?cv2.imread("thumbs_up_down.jpg")
        將其轉(zhuǎn)換為 RGB,然后轉(zhuǎn)換為灰度:
        #?convert?to?RGB
        image?=?cv2.cvtColor(image,?cv2.COLOR_BGR2RGB)
        #?convert?to?grayscale
        gray?=?cv2.cvtColor(image,?cv2.COLOR_RGB2GRAY)
        正如本教程前面提到的,我們要創(chuàng)建一個二值圖像,這表明圖像的每個像素要么是黑色的,要么是白色的。
        你可以將其進行比較,就像查找輪廓與檢測黑板上的白色物體更相似。我們要找的物體是白色的,所以黑板需要是純黑色的。
        #?create?a?binary?thresholded?image
        _,?binary?=?cv2.threshold(gray,?225,?255,?cv2.THRESH_BINARY_INV)
        #?show?it
        plt.imshow(binary,?cmap="gray")
        plt.show()
        通過禁用像素(即將其設(shè)置為0)和啟用像素(即將其設(shè)置為225),創(chuàng)建二進制圖像。以下是輸出圖像:
        現(xiàn)在,對于 OpenCV 來說,這通常很容易檢測輪廓:
        #?find?the?contours?from?the?thresholded?image
        contours,?hierarchy?=?cv2.findContours(binary,?cv2.RETR_TREE,?cv2.CHAIN_APPROX_SIMPLE)
        #?draw?all?contours
        image?=?cv2.drawContours(image,?contours,?-1,?(0,?255,?0),?2)
        上述代碼很容易找到二值圖像中的輪廓,最后借助粗綠線將它們輸出到圖像中,讓我們展示一下:
        #?show?the?image?with?the?drawn?contours
        plt.imshow(image)
        plt.show()
        輸出圖像:
        為了在不同的世界圖像上獲得良好的結(jié)果,你需要調(diào)整閾值或執(zhí)行邊緣檢測。例如,對于煎餅圖像,我將邊緣減少到 127,結(jié)果如下:

        輪廓檢測和邊緣檢測的區(qū)別

        輪廓檢測的目標(biāo)是確定閉合物體的形狀,特別是因為對于具有相同顏色強度的連續(xù)點,尋找輪廓的方法是確定的,而邊緣檢測是通過檢測顏色強度內(nèi)的變化來進行的。對整個圖像進行邊緣檢測,而僅對圖像內(nèi)的對象進行輪廓檢測。

        結(jié)論

        這個項目是初學(xué)者級別的,面向數(shù)據(jù)科學(xué)愛好者。本文旨在讓你熟悉最簡單的計算機視覺項目,以增強你在計算機視覺方面的知識。


        如果覺得有用,就請分享到朋友圈吧!

        △點擊卡片關(guān)注極市平臺,獲取最新CV干貨

        公眾號后臺回復(fù)“CVPR21檢測”獲取CVPR2021目標(biāo)檢測論文下載~


        極市干貨
        神經(jīng)網(wǎng)絡(luò):視覺神經(jīng)網(wǎng)絡(luò)模型優(yōu)秀開源工作:timm庫使用方法和最新代碼解讀
        技術(shù)綜述:綜述:神經(jīng)網(wǎng)絡(luò)中 Normalization 的發(fā)展歷程CNN輕量化模型及其設(shè)計原則綜述
        算法技巧(trick):8點PyTorch提速技巧匯總圖像分類算法優(yōu)化技巧


        #?CV技術(shù)社群邀請函?#

        △長按添加極市小助手
        添加極市小助手微信(ID : cvmart4)

        備注:姓名-學(xué)校/公司-研究方向-城市(如:小極-北大-目標(biāo)檢測-深圳)


        即可申請加入極市目標(biāo)檢測/圖像分割/工業(yè)檢測/人臉/醫(yī)學(xué)影像/3D/SLAM/自動駕駛/超分辨率/姿態(tài)估計/ReID/GAN/圖像增強/OCR/視頻理解等技術(shù)交流群


        每月大咖直播分享、真實項目需求對接、求職內(nèi)推、算法競賽、干貨資訊匯總、與?10000+來自港科大、北大、清華、中科院、CMU、騰訊、百度等名校名企視覺開發(fā)者互動交流~



        覺得有用麻煩給個在看啦~??


        瀏覽 23
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
          
          

            1. 人妻97| 日韩欧美国产高清91 | 91成人视频18 | 操操久久 | 国产熟妇毛多 久久久久一区 |