
發(fā)布
注冊
/
登錄Canny邊緣檢測的案例
基于MATLAB的圖像處理與圓弧擬合技術(shù)
關(guān)鍵詞:MATLAB;圖像處理,Canny邊緣檢測,輪廓提取,最小二乘法擬合,圓弧識別
在現(xiàn)代工業(yè)和科研領(lǐng)域,對圖像進行精確分析和處理的需求日益增長。特別是在質(zhì)量控制、自動化檢測和機器視覺等領(lǐng)域,對圖像中特定形狀的識別和測量變得尤為重要。本文將介紹一種基于MATLAB的圖像處理技術(shù),該技術(shù)能夠?qū)D像進行Canny邊緣檢測,輪廓提取,并使用最小二乘法擬合圓弧,以實現(xiàn)對圖像中圓弧部分的精確測量。這一技術(shù)在汽車制造、航空航天以及精密儀器檢測等多個領(lǐng)域具有廣泛的應用前景。
技術(shù)概述
本技術(shù)的核心在于利用MATLAB的強大圖像處理功能,對給定的圖像進行Canny邊緣檢測,以識別圖像中的邊緣信息。Canny邊緣檢測是一種流行的邊緣檢測算法,以其良好的檢測效果和抗噪能力而被廣泛使用。通過此算法,我們可以清晰地識別出圖像中的邊緣部分,為后續(xù)的輪廓提取和圓弧擬合打下基礎(chǔ)。
實現(xiàn)步驟
圖像讀取與預處理:首先,我們讀取待處理的圖像,并將其轉(zhuǎn)換為灰度圖像,以減少計算復雜度并提高處理速度。
Canny邊緣檢測:利用MATLAB內(nèi)置的edge函數(shù),對灰度圖像應用Canny邊緣檢測算法,得到圖像的邊緣信息。
輪廓提取:通過bwboundaries函數(shù)提取圖像中所有輪廓的坐標點,并假設(shè)目標圓弧為最大輪廓,對其進行識別和提取。
最小二乘法擬合圓:對提取的圓弧輪廓點,使用最小二乘法擬合圓的方程,計算出圓心坐標和半徑。
結(jié)果輸出與顯示:最后,輸出擬合圓的半徑和圓心坐標,并在原圖上顯示擬合結(jié)果,以直觀展示圓弧擬合的準確性。
圖1 方法流程圖
最小二乘法擬合原理如下:
圓的方程
擬合圓的標準方程為:(x-xc)^2+(y-yc)^2=r^2
其中,(xc, yc)是圓心坐標,r是圓半徑。
展開 基于matlab機器學習圖像處理的傳統(tǒng)模擬儀表數(shù)字讀取系統(tǒng)
邊緣檢測:
用Canny邊緣檢測算法來識別圖像中的邊緣點,該算法通過多階段處理,包括梯度計算、非極大值抑制和雙閾值邊緣連接,以準確提取圖像中的邊緣特征。
表盤區(qū)域提取:
利用隨機霍夫變換(Random Hough Transform)檢測圖像中的圓形特征,通過隨機抽樣和概率技術(shù)提高圓形檢測的效率,確定表盤的位置和范圍。
指針骨架提取:
對表盤區(qū)域進行裁剪后,再次進行Canny邊緣檢測,然后使用形態(tài)學操作中的骨架提取技術(shù)(skel操作)來提取指針的中心線。
形態(tài)學處理:
使用bwmorph函數(shù)中的spur操作去除骨架上的細小分支(毛刺),通過閉運算填補小孔洞和斷裂點,改善圖像連通性,然后去除長度小于指定值的毛刺,清理圖像噪聲。
指針直線檢測:
應用霍夫變換檢測圖像中的直線,將每個點映射到參數(shù)空間,并找到參數(shù)空間中投票數(shù)最多的點,這些點代表了圖像中的直線。
指針定位:
根據(jù)指針是表盤中最長直線的特征,從檢測到的直線中篩選出指針。通過比較直線的長度,選擇最長的直線作為指針的位置。
算法實現(xiàn)與驗證:
在Matlab環(huán)境中實現(xiàn)上述算法,并通過仿真結(jié)果驗證指針提取的準確性。確保指針提取結(jié)果與實際指針高度擬合,滿足系統(tǒng)的識別要求。
指針提取算法的設(shè)計考慮了實際生產(chǎn)中圖像的復雜性,通過一系列圖像處理技術(shù),有效地從背景中提取出指針,為準確讀取儀表的示數(shù)提供了基礎(chǔ)。
圖像預處理
表盤提取
指針識別
圖3 指針提取與識別結(jié)果圖
示數(shù)讀取算法設(shè)計
示數(shù)讀取算法是本研究中將圖像信息轉(zhuǎn)換為可讀數(shù)值的核心部分。
展開 基于Python的復雜環(huán)境中車道線自動檢測系統(tǒng)
夜間版: 在馬路上尋找車道線并跟蹤
配置環(huán)境
conda create -n env_lane python=3.6
conda activate env_lane
pip install opencv-contrib-python==3.4.9.31 -i https://mirrors.aliyun.com/pypi/simple/
pip install matplotlib -i https://mirrors.aliyun.com/pypi/simple/
pip install sklearn -i https://mirrors.aliyun.com/pypi/simple/
pip install jupyter -i https://mirrors.aliyun.com/pypi/simple/
使用卡爾曼濾波器在夜間環(huán)境中進行車道檢測
自動駕駛計算機視覺技術(shù)的一個重要里程碑是在道路上尋找車道標記。在這里,我們描述了在夜間環(huán)境中檢測車道的過程。
挑戰(zhàn)性
·低光強度·難以調(diào)整各種光強度的參數(shù)·邊緣檢測不良·陰影,突然的高強度汽車大燈
我們的方法,這些步驟中描述了我們的方法:
1) 我們對每個視頻幀執(zhí)行伽瑪校正,以設(shè)置光強度
2) 從圖像中裁剪出“感興趣的區(qū)域”,因此我們只能在ROI部分上查找泳道。它有助于降低計算成本并提高fps。
3) 應用雙邊濾波器消除噪聲并平滑視頻幀,但保留邊緣。
4) 應用HSV濾鏡為固定范圍內(nèi)的像素創(chuàng)建蒙版
5) 經(jīng)過這些預處理(伽瑪校正和濾波)后,我們使用Canny邊緣檢測器檢測邊緣。
展開 基于OpenCV的生產(chǎn)日期字符識別研究
灰度均值 m 與標準方差 s:
然后是該點的閾值 Txy (, ) ,其中 T 的大小可以根據(jù)k 來調(diào)節(jié):
圖5 Sauvola對光照不均的處理
2.4 邊緣檢測
邊緣檢測是通過卷積或微分計算后得到的二值化圖像。
1)Laplacian 算子邊緣檢測
拉普拉斯算子被分成 4 個和 8 個鄰域,域是像素梯度需求鄰域的 4 個相鄰方向上的中央附近的方向和梯度[8](如圖 6)。
圖6 Laplacian的邊緣處理
2)Canny 邊緣檢測算法
Canny 從信噪比、單邊緣和定位性能方面來判定邊緣的優(yōu)劣,Canny 邊緣檢測算法可以分為以下 5 個步驟:
①圖像灰度化
通過 RGB 三個通道,為了降維,將圖片圖像進行灰度化。
②高斯模糊處理
此步驟是對圖像進行 smooth 處理,通過濾波器將高斯函數(shù)離散化[9],高斯函數(shù)與濾波器的計算:
③圖像梯度、梯度幅值、梯度方向計算該點通過計算當前像素與其附近的像素差值來進行位置判斷,接近這個差值稱為圖像梯度。首先計算一階導數(shù):
計算梯度幅值 M:
計算梯度值的方向:
④ NMS(非極大值抑制)
留存邊緣方向上具有極大值的像素,通過 NMS 找出其中的局部最大值,將其他位置的值取 0。
⑤雙閾值的邊界選取
梯度大于任何邊緣的最大閾值是真正的邊緣,而低于最小閾值的邊緣為非邊緣,非邊緣即舍去(如圖 7)。
展開 
37基于MATLAB平臺的圖像去噪,銳化,邊緣檢測,程序已調(diào)試通過,可直接運行。 ¥8.9
基于MATLAB平臺的圖像去噪,銳化,邊緣檢測,程序已調(diào)試通過,可直接運行。
一文概括機器視覺常用算法以及常用開發(fā)庫
(1)閾值分割(固定閾值分割、最優(yōu)/OTSU閾值分割、自適應閾值分割);
(2)基于邊界分割(Canny邊緣檢測、輪廓提取、邊界跟蹤);
(3)Hough變換(直線檢測、圓檢測);
(4)基于區(qū)域分割(區(qū)域生長、區(qū)域歸并與分裂、聚類分割);
(5)色彩分割;
(6)分水嶺分割;
5、圖像特征:
(1)幾何特征(位置與方向、周長、面積、長軸與短軸、距離(歐式距離、街區(qū)距離、棋盤距離));
(2)形狀特征(幾何形態(tài)分析(Blob分析):矩形度、圓形度、不變矩、偏心率、多邊形描述、曲線描述);
(3)幅值特征(矩、投影);
(4)直方圖特征(統(tǒng)計特征):均值、方差、能量、熵、L1范數(shù)、L2范數(shù)等;直方圖特征方法計算簡單、具有平移和旋轉(zhuǎn)不變性、對顏色像素的精確空間分布不敏感等,在表面檢測、缺陷識別有不少應用。
(5)顏色特征(顏色直方圖、顏色矩)
(6)局部二值模式( LBP)特征:LBP對諸如光照變化等造成的圖像灰度變化具有較強的魯棒性,在表面缺陷檢測、指紋識別、光學字符識別、人臉識別及車牌識別等領(lǐng)域有所應用。由于LBP 計算簡單,也可以用于實時檢測。
展開 特斯拉Autopilot系統(tǒng)安全研究
T_cuda_std_tmrc有幾個輸出,包括:
* linear_signal, 經(jīng)過HDR轉(zhuǎn)換和距離壓縮的原始圖像;
* detail_layer,邊界檢測的結(jié)果,可能會使用canny邊緣檢測器并進行一些改進;
* bilateral_output,可能是某些雙邊過濾器的結(jié)果;
此外,輸出還包含一些其他層,但由于它與我們的研究沒有太大關(guān)系,我們不在這里提及它們。
對不同相機的預處理可能不同。雖然目前我們只注意到代碼中的去馬賽克控制布爾值,但我們相信為不同的相機添加不同的預處理過濾器很容易。
預處理后的圖像輸出根據(jù)其類型和位置通過幾個不同的模塊進行處理。目前,我們觀察到三種不同的類型,通過枚舉來表示所有攝像頭的為位置,如圖4所示。
圖4 通過枚舉來表示不同的攝像頭
圖5 從左到右分別為主攝像頭,長焦,魚眼攝像頭
通常,這些處理過的圖像都會被寫入到它們對應的神經(jīng)網(wǎng)絡(luò)的輸入緩沖區(qū)中。每個神經(jīng)網(wǎng)絡(luò)解析輸入圖像,并為 tesla::t_inference_engine<float>。各種后處理程序接收這些結(jié)果,并向控制器提供控制提示。這些后置處理器負責多項工作,包括識別汽車、物體和車道,繪制周圍環(huán)境的地圖,以及確定降雨量。令我們驚訝的是,這些工作大部分都是在一個感知神經(jīng)網(wǎng)絡(luò)內(nèi)完成的。
自動駕駛?cè)蝿盏膹碗s性需要為不同的相機分配不同的推理引擎,配置不同的檢測器,并填充幾種不同的配置。因此,Tesla 使用大類來管理這些功能。
展開 用于自動泊車的鳥瞰圖的邊緣線的語義SLAM系統(tǒng)
鳥瞰邊緣提取
從圖3(a)中的鳥瞰圖樣本圖像中發(fā)現(xiàn),地面上有大量的道路標記,這些標記對于SLAM系統(tǒng)來說是很好的路標信息,然而,圖像也被地面反射的強光所污染,此外,在用于視圖合成的IPM中,地面上這些對象的輪廓會發(fā)生顯著扭曲,因此,我們的鳥瞰邊緣線的提取模塊的作用是從輸入的鳥瞰視圖和可行駛區(qū)域圖像中檢測并保留高質(zhì)量的邊緣,這是整個SLAM系統(tǒng)的基礎(chǔ),在邊緣提取過程中,兩個子模塊連接在一起,首先,從輸入圖像中檢測原始邊緣線,然后在視圖合成中考慮IPM的畸變效應,對這些邊緣進行分割,去除噪聲和畸變。
圖3,在鳥瞰圖上檢測到的原始邊緣和考慮視圖合成和可行駛區(qū)域分割的邊緣。
A.原始邊緣檢測
輸入圖像上的原始邊緣可以通過傳統(tǒng)邊緣檢測算法(如Canny邊緣檢測器)進行檢測。如圖3(a)所示,一方面,道路標記的邊緣線以及物體足跡在整體上被成功檢測;另一方面,此類探測器通常無法區(qū)分SLAM任務的有用邊緣與周圍車輛、支柱或眩光的無用和嘈雜邊緣,借助于可行駛空間分割,可以刪除地面上對象內(nèi)部的邊,然而,如圖3(b)所示,其余部分仍然包含大量來自眩光和被IPM扭曲的物體的干擾邊緣,因此,在發(fā)送到建圖和里程計模塊之前,需要對遮罩邊緣進行進一步處理,否則,接下來的程序的性能將顯著降低。
展開 實戰(zhàn):車牌識別之車牌定位
圖片預處理
圖片預處理部分是最重要的,這里面所有做的操作都是給有效地尋找包絡(luò)服務的,其中用到了高斯模糊來降低噪聲,開操作和加權(quán)來強化對比度,二值化和Canny邊緣檢測來找到物體輪廓,用先閉后開操作找到整塊整塊的矩形。
難以置信!一篇文章就梳理清楚了 Python OpenCV 的知識體系
15
邊緣檢測
邊緣檢測可以提取圖像重要輪廓信息,減少圖像內(nèi)容,可用于分割圖像、特征提取等操作。
邊緣檢測的一般步驟:
濾波:濾出噪聲対檢測邊緣的影響 ;
增強:可以將像素鄰域強度變化凸顯出來—梯度算子 ;
檢測:閾值方法確定邊緣 ;
常用邊緣檢測算子:
Canny 算子,Canny 邊緣檢測函數(shù) cv2.Canny();
Sobel 算子,Sobel 邊緣檢測函數(shù) cv2.Sobel();
Scharr 算子,Scharr 邊緣檢測函數(shù) cv2.Scahrr() ;
Laplacian 算子,Laplacian 邊緣檢測函數(shù) cv2.Laplacian()。
展開 無人車行駛環(huán)境圖像的幾何測距
2.1 邊緣檢測
因為不同的物體在紋路和顏色方面有些許差異,使用通用的檢測參數(shù)與檢測方法并不能獲得最優(yōu)的效果。故該方法首先通過上文中物體檢測獲得的物體標簽信息將物體進行分類,根據(jù)不同的物體種類設(shè)置不同的檢測參數(shù)與檢測流程,以此來獲得最優(yōu)檢測效果。主要變動的參數(shù)包括:邊緣檢測閾值、色彩空間提取的RGB顏色范圍、Hough直線檢測線段閾值。主要的檢測流程包括:中值濾波消去噪聲、使用Canny函數(shù)進行邊緣檢測、使用色彩空間過濾顏色、使用OSTU算法進行圖像二值化處理、使用Hough變換檢測直線,以此得到物體的邊緣信息,具體參數(shù)如表3所示。
表3 主要方法與主要參數(shù)
2.2 邊緣擬合
通過滑動窗口的二次多項式擬合算法可有效提取與擬合多邊形邊緣,為提高擬合效果,在此對算法進行改進,加入了k、l1、l2、r1、r2感興趣區(qū)域的參數(shù),具體過程如下。
首先,統(tǒng)計圖片某部分的每列像素之和,以左右兩邊的感興趣區(qū)域為范圍搜尋像素值和的最大值作為滑動窗口的起始點。
式中:Pij為圖像的像素矩陣P第i行、第j列的值;m、n為圖像的像素寬度與高度;hj為每列像素之和;B l、B r為滑動窗口的左右初始點;k、l1、l2、r1、r2為感興趣區(qū)域的參數(shù)。
根據(jù)式(1)獲得初始點之后,算法根據(jù)一個矩形面積向上生長,根據(jù)矩形中像素最大值確定生長方向以及下一個初始點,以此迭代,最后通過多項式擬合方法對每一個矩形的中心點進行擬合,最終得到邊界信息,設(shè)矩陣4個頂點坐標分別為(w1,h1)、(w1,h2)、(w2,h2)和(w2,h1),迭代過程如式(2)所示。
式中:N為矩形內(nèi)像素之和;cj為矩形內(nèi)每列像素之和;Bc為滑動窗口的迭代后的初始點。
展開 