邊緣和輪廓檢測——計算機視覺的應用

2022-01-12 深度學習與計算機視覺
計算機視覺的重點是從計算機中的視頻和圖像中提取有意義的信息。在本文中,我們將從初學者開始探索一個使用 OpenCV 的出色計算機視覺項目。其標題是「使用計算機視覺進行邊緣和輪廓檢測」。對於此項目,你還將看到描述、原始碼和圖像分類。邊緣檢測邊緣檢測是一種用於定位圖像中對象邊界的圖像處理技術。最流行和廣泛使用的算法之一是 Canny 邊緣檢測器。Canny 邊緣檢測器是一種立足點檢測算子,它使用多階段算法來檢測圖像中的各種邊緣。在 Sobel 濾波器的幫助下,找出邊緣的強度和方向。通過應用非極大值抑制來隔離更強的邊緣並將它們細化為一條像素寬的線。
pip3 install opencv-python matplotlib numpy

import cv2
import numpy as np
import matplotlib.pyplot as plt

# read the image
image = cv2.imread("little_flower.jpg")

首先,我們必須將圖像轉換為灰度,然後,我們可以繼續將圖像繞過 Canny 邊緣檢測器。
# convert it to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# show the grayscale image
plt.imshow(gray, cmap="gray")
plt.show()

在 Canny 算法的幫助下,我們必須標記作為輸入的圖像中的邊緣。輸入圖像首先傳遞給 cv2.Canny() 函數,然後用於邊緣檢測。
# perform the canny edge detector to detect image edges
edges = cv2.Canny(gray, threshold1=30, threshold2=100)

閾值 1 和閾值 2 之間的最小值用於邊緣連結。最重要的值用於尋找強邊緣的初始段。有趣的是,嘗試微調邊緣值,看看你是否會讓它變得更好。
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()

檢測邊緣的最終目的是捕捉重要事件並在行星屬性內執行所需的更改。它是圖像處理、圖像模式識別和計算機視覺技術的基本步驟之一。輪廓檢測一個輪廓可以描述為一條曲線,將所有具有相同顏色或強度的連續點組合在一起。基本上,它們顯示圖片中包含的對象的形狀。輪廓檢測可能是一種用於形狀分析和對象檢測和識別的有用技術。輪廓檢測並不是圖像分割的唯一算法,還有很多其他算法,例如目前最先進的語義分割、霍夫變換和 K-Means 分割。為了獲得更好的準確性,我們將遵循以下整個流程來成功檢測圖像中的輪廓:輸入圖像的標準化是它應該始終是二進位形式。這就是為什麼我們需要將其轉換為二進位格式。用於查找輪廓的 OpenCV 函數是 findContours()。
pip3 install matplotlib opencv-python

import cv2
import matplotlib.pyplot as plt

# read the image
image = cv2.imread("thumbs_up_down.jpg")

# convert to RGB
image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
# convert to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY)

正如本教程前面提到的,我們要創建一個二值圖像,這表明圖像的每個像素要麼是黑色的,要麼是白色的。你可以將其進行比較,就像查找輪廓與檢測黑板上的白色物體更相似。我們要找的物體是白色的,所以黑板需要是純黑色的。
# create a binary thresholded image
_, binary = cv2.threshold(gray, 225, 255, cv2.THRESH_BINARY_INV)
# show it
plt.imshow(binary, cmap="gray")
plt.show()

通過禁用像素(即將其設置為0)和啟用像素(即將其設置為225),創建二進位圖像。以下是輸出圖像:現在,對於 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()

為了在不同的世界圖像上獲得良好的結果,你需要調整閾值或執行邊緣檢測。例如,對於煎餅圖像,我將邊緣減少到 127,結果如下:輪廓檢測和邊緣檢測的區別輪廓檢測的目標是確定閉合物體的形狀,特別是因為對於具有相同顏色強度的連續點,尋找輪廓的方法是確定的,而邊緣檢測是通過檢測顏色強度內的變化來進行的。對整個圖像進行邊緣檢測,而僅對圖像內的對象進行輪廓檢測。結論這個項目是初學者級別的,面向數據科學愛好者。本文旨在讓你熟悉最簡單的計算機視覺項目,以增強你在計算機視覺方面的知識。如果看到這裡,說明你喜歡這篇文章,請轉發、點讚。微信搜索「uncle_pn」,歡迎添加小編微信「 woshicver」,每日朋友圈更新一篇高質量博文。

相關焦點

  • 一文全覽深度學習在計算機視覺領域的應用
    計算機視覺不是深度學習最早看到突破的領域,真正讓大家大吃一驚的顛覆傳統方法的應用領域是語音識別,做出來的公司是微軟,而不是當時如日中天的谷歌。計算機視覺應用深度學習堪稱突破的成功點是2012年ImageNet比賽,採用的模型是CNN,而不是Hinton搞的RBM和DBN之類,就是Hinton學生做出來以他命名的AlexNet。
  • 深度學習在計算機視覺領域應用一覽(附連結)
    計算機視覺不是深度學習最早看到突破的領域,真正讓大家大吃一驚的顛覆傳統方法的應用領域是語音識別,做出來的公司是微軟,而不是當時如日中天的谷歌。計算機視覺應用深度學習堪稱突破的成功點是2012年ImageNet比賽,採用的模型是CNN,而不是Hinton搞的RBM和DBN之類,就是Hinton學生做出來以他命名的AlexNet。
  • 機器視覺邊緣檢測算法詳解
    :  1、濾波:邊緣檢測算法主要是基於圖像強度的一階和二階導數,但導數的計算對噪聲很敏感,因此必須使用濾波器來改善與噪聲有關的邊緣檢測器的性能。需要指出,大多數濾波器在降低噪聲的同時也導致了邊緣強度的損失,因此,增強邊緣和降低噪聲之間需要折中。  2、增強:增強邊緣的基礎是確定圖像各點鄰域強度的變化值。增強算法可以將鄰域(或局部)強度值有顯著變化的點突顯出來。邊緣增強一般是通過計算梯度幅值來完成的。
  • OpenCV(四)邊緣檢測
    點擊「藍字」關注我們上一章節,我們在使用圖像輪廓發現的時候使用了圖像邊緣檢測,一次來提高圖像輪廓發現的準確率。事實上在計算機的各個領域都有圖像邊緣檢測的身影。邊緣檢測一大優點就在於可以大幅度減少數據量,並且提出可以認為不相關的信息,保留了圖像的結構屬性。
  • 深度學習在計算機視覺領域(包括圖像,視頻,3-D點雲,深度圖)的應用一覽
    計算機視覺不是深度學習最早看到突破的領域,真正讓大家大吃一驚的顛覆傳統方法的應用領域是語音識別,做出來的公司是微軟,而不是當時如日中天的谷歌。計算機視覺應用深度學習堪稱突破的成功點是2012年ImageNet比賽,採用的模型是CNN,而不是Hinton搞的RBM和DBN之類,就是Hinton學生做出來以他命名的AlexNet。
  • 基於Python的OpenCV輪廓檢測聚類
    授權OpenCV的「findContours」功能經常被計算機視覺工程師用來檢測物體。OpenCV的存在,使得我們只需要編寫幾行代碼就可以檢測輪廓(對象)。然而,OpenCV檢測到的輪廓通常是分散的。例如,一個功能豐富的圖像可能有數百到數千個輪廓,但這並不意味著圖像中有那麼多對象。一些屬於同一對象的輪廓是單獨檢測的,因此我們感興趣的是對它們進行分組,使一個輪廓對應一個對象。
  • 10個流行的Python計算機視覺工具
    我們列出了開發人員可以用於計算機視覺10個流行流行的Python庫或平臺,以幫助開發人員自動化開發任務,其中包括檢測和可視化。連結:https://www.reactivip.com/image-processing/3 | ImutilsImutils是一個計算機視覺軟體包,包括一系列OpenCV +方便的功能,使基本的圖像處理功能,如平移,旋轉,調整大小,骨架化,顯示Matplotlib圖像,排序輪廓,檢測邊緣等相當容易。
  • 計算機視覺的典型應用
    以下介紹了目前計算機視覺的大致應用領域。模式識別模式識別(Pattern Recognition)是通過計算機數位技術方法研究模式的自動處理和判別。客觀世界中的客體統稱為「模式」,隨著計算機技術及人工智慧的發展,有可能對客體作出識別,它主要是視覺和聽覺的識別,這就是模式識別的兩個重要方面。
  • 基於OpenCV的實戰:輪廓檢測(附代碼解析)
    利用輪廓檢測物體可以看到物體的各種顏色,在這種情況下放置在靜態和動態物體上。如果是統計圖像,則需要將圖像加載到程序中,然後使用OpenCV庫,以便跟蹤對象。每當在框架中檢測到物體時,都會為該物體繪製輪廓,該輪廓將代表物體的輪廓。下一步是找到對象的質心,標識找到影像矩所需的質心坐標,圖像力矩是圖像像素強度的加權平均值。
  • 【建議收藏】16個OpenCV函數開始你的計算機視覺之旅
    圖像有不同的形狀和大小2.數據獲取中一直存在的問題。在建立計算機視覺模型之前,我們應該收集更多圖像嗎?3.學習深度學習對建立計算機視覺模型是否必不可少?我們可以不使用機器學習技術嗎?4.我們可以在自己的機器上建立計算機vsiion模型嗎?並非每個人都可以使用GPU和TPU!
  • 英特爾OpenVINO工具包實現網絡邊緣的計算機視覺
    來源:siliconANGLE英特爾正在加緊推進人工智慧,並發布了一個新的工具包,讓開發人員能夠在網絡邊緣部署計算機視覺,以用於攝像頭和物聯網設備
  • 機器視覺在工業檢測中的應用現狀
    可分為「視」和「覺」兩部分原理,「視」是將外界信息通過成像來顯示成數位訊號反饋給計算機,需要依靠一整套的硬體解決方案,包括光源、相機、圖像採集卡、視覺傳感器等;「覺」則是計算機對數位訊號進行處理和分析,主要是軟體算法。機器視覺在工業上應用領域廣闊,核心功能包括:測量、檢測、識別、定位等。產業鏈可以分為上遊部件級市場、中遊系統集成/整機裝備市場和下遊應用市場。
  • 基於OpenCV的簡單邊緣檢測模型
    邊緣檢測通常用於理解圖像中的對象,幫助機器做出更好的預測。編寫邊緣檢測程序是了解機器如何看待外界的好方法。現在就讓我們使用python進行邊緣檢測吧。我們將為該項目使用兩個主要模塊:Numpy,Matplotlib和OpenCV。Matplotlib是一個完整的庫,用於在Python中生成靜態,動畫和交互式可視化。OpenCV是一個高度優化的庫,專注於實時應用程式。
  • 雷射三角測量法在工業視覺檢測上的應用
    3D檢測算法。本文主要從應用層次來闡述,包括相機和雷射選型、搭接方式的優劣點分析、軟體開發過程中的注意事項等。1. 原理及演示將一條單線細雷射光線投射到物體表面,由於物體表面高度發生變化,使得雷射線發生了彎曲,根據這個線的變形,可以計算出精確的物體表面三維輪廓。
  • 在計算機視覺項目中選擇OpenCV還是MATLAB
    計算機視覺被用來開發能夠自動完成諸如獲取、處理、分析和理解數字圖像等任務的技術。它也被用來從現實世界中提取高維數據來產生符號信息。簡單地說,計算機視覺使計算機能夠像人類一樣看到、理解和處理圖像和視頻。硬體、機器學習工具和框架的巨大進步導致了計算機視覺在物聯網、製造業、醫療保健、安全等各個領域的實現。
  • 計算機視覺方向簡介 | 基於RGB-D的3D目標檢測
    前言CNN(convolutional neural network)在目標檢測中大放異彩,R-CNN系列,YOLO,SSD各類優秀的方法層出不窮。在2D圖像的目標檢測上,不少學術界提出的框架已經投入商用。但是,具體落實到自動駕駛、機器人這類應用場景上時,2D場景下的目標檢測對於3D真實世界的場景描述依然不夠。
  • 分享 | 數字圖像處理:邊緣檢測(Edge detection)
    本文篇幅較長,用了大量圖與公式幫助大家深入理解各種邊緣檢測算子,希望大家能看完哈,測試編譯器為Matlab,作為入門計算機視覺(Computer
  • 面向初學者的10個熱門計算機視覺項目
    人工智慧最具挑戰性的課題之一是計算機視覺技術。近年來,隨著計算機視覺應用的日益廣泛,計算機視覺技術在機器人、監控、醫療等領域得到了廣泛的應用。在本文中,我們列出了十個流行的計算機視覺項目以及它們的可用數據集,供初學者學習:在此項目中,模型的目標是檢測圖像中的每種顏色。模型的目標是檢測圖像中的每種顏色,一種流行的顏色檢測項目是使用OpenCV的隱形鬥篷。
  • 邊緣AI+計算機視頻,正給木板架行業帶來全新面貌
    隨著數據採集速度的提升,更靠近邊緣位置的計算遷移方案,能夠在降低延遲以及減少基礎設施成本的前提下,更加高效地利用數據資源。另一方面,計算機視覺則是人工智慧中的一大分支,旨在通過訓練機器幫助其解釋及理解視覺內容。計算機視覺的目標之一,在於利用機器通過與人類相同的方式查看並處理圖像。
  • 六大維度讓你徹底明白機器視覺與計算機視覺的區別!
    以下是他的回答:學科:機器視覺作為一門系統工程"學科",有別於計算機視覺,是計算機科學基礎的一種形式;計算機視覺屬於計算機"科學",涉及到從圖像中提取信息的人工系統背後的理論,她跨學科。領域:機器視覺是計算機視覺在工廠自動化中的應用,傳統的機器視覺主要應用於工業領域,計算機視覺不限於工業領域。從狹義的視覺系統角度出發,計算機視覺屬於機器視覺系統的一部分。