一、邊緣提取
1、設定roi興趣區域
2、快速二值化,並連線相鄰區域。
這樣做的目的是進一步減少目標區域,通過二值化將目標區域大概輪廓提取出來
3、提取最接近目標區域的輪廓
常用函式有boundary,gen_contour_region_xld
4、根據自己的需求提取需要的初步輪廓
5、將初步提取的初步輪廓進行膨脹操作
6、將膨脹後的區域和原圖進行減操作(在這步之前有可能需要對原圖進行高斯濾波)。這樣就能得到只
有邊緣的真實影象
7、用canny或其他運算元(根據需要)提取亞畫素輪廓,一般使用edges_sub_pix函式
8、處理和計算
得到真實的邊緣xld後你可能需要進一步處理得到你想要的線、弧等。
你可能用到的函式segment_contours_xld(分割) union_collinear_contours_xld(聯合相鄰或相同
角度直線)select_contours_xld(提取想要的輪廓) union_cocircular_contours_xld(聯合相同圓)
等等得到輪廓後如果你不知道怎麼處理後得到你想要的東西(線、弧、圓、角、矩形)你都可以將輪廓轉化
為點,然後用點集合來擬合任何你想要的東西。
二、blob分析檢測(前面一篇有詳細講解,本騙只講思路)
(1)應用roi,可以使blob分析加速。
(2)匹配roi區域或影象,詳將guideiib以形狀為基礎的匹配。
(3)校正影象《經常用來去除鏡頭畸變或把影象轉換到參考點視角,如雙目視覺時的影象校正》
(4)影象前處理
(5)引用分割引數
(6)分割影象
(7)區域處理
(8)特徵提取
(9)把提取的結果轉換到世界座標中
(10)結果視覺化。
相機的標定和矯正不在本篇的學習之中。直接講提取blob
1、一般先使用均值濾波去噪
2、利用去噪影象與平滑影象的offset提取區域邊緣,常見函式dyn_threshold
3、提取連通域dyn_threshold
4、根據形狀或是灰度等特徵來提取你想要的blob。
另一種方法就是分水嶺演算法
watersheds (imagegauss, basins, watersheds)/
1、對影象進行高斯濾波
還有的圖形更簡單直接二值化就可以啦
bin_threshold (fin, dark) //分割影象,輸出dark區域,fin已經被處理為區域//
difference (fin, dark, background) //計算fin與dark兩個區域的補集//
還有個函式應該說是讓你高興還是沮喪呢,以為乙個函式就可以直接提取你想要的,但是引數很難調整
lines_gauss(image, lines, 6, 0.3, 0.5, 'light', 'true', 'gaussian', 'true')
三、贓物檢測
1、得到兩個不同高斯標準差的高斯積卷
2、對原始影象進行傅利葉變換'to_fre'
3、用之前的積卷對影象做積卷濾波
4、傅利葉反變換『from_fre』
Python opencv邊緣提取
題目描述 利用opencv或其他工具編寫程式實現影象的邊緣提取。實現過程 import cv2 import numpy as np imread 兩個引數 1 路徑。img cv2.imread r c users pc desktop test1.bmp cv2.imshow img img r...
Halcon特徵提取
最簡單的區域特徵是區域的面積。重心用來描述區域的位置。運算元area center用來得到面積和重心。橢圓的長軸半徑 短軸半徑 以及相對於橫軸的夾角,用來定義區域的方位和範圍。長軸半徑 短軸半徑比 各向異性。在區域縮放時保持不變。用來描述區域的細長程度。運算元elliptic axis用來獲取橢圓引...
邊界輪廓提取(邊緣提取)例項
邊緣提取,指數字影象處理中,對於輪廓的乙個處理。對於邊界處,灰度值變化比較劇烈的地方,就定義為邊緣。也就是拐點,拐點是指函式發生凹凸性變化的點。二階導數為零的地方。並不是一階導數,因為一階導數為零,表示是極值點。邊緣提取 邊緣檢測的基本思想首先是利用邊緣增強運算元,突出影象中的區域性邊緣,然後定義象...