1.高斯模糊演算法
blur_gray =cv2.gaussianblur(gray,(kernel_size,kernel_size),0)
數學上講,對影象做高斯模糊等同於將影象與高斯函式卷積。
由於高斯分布的傅利葉變換仍然是高斯分布,使用高斯模糊就減少了影象的高頻分量,因此高斯模糊是低通濾波器。
引數:
gray為灰度圖;
(kernel_size,kernel_size):表示高斯矩陣的長與寬都是kernel_size,第三個引數0為高斯矩陣的標準差。
高斯模糊本質上是低通濾波器,輸出影象的每個畫素點是原影象上對應畫素點與周圍畫素點的加權和,原理並不複雜,就是用高斯分布權值矩陣與原始影象矩陣做卷積運算而已。類似神經網路中卷積層的卷積。
這裡(kernel_size,kernel_size)表示高斯矩陣的長與寬都是kernel_size,標準差取0時opencv會根據高斯矩陣的尺寸自己計算。概括地講,高斯矩陣的尺寸越大,標準差越大,處理過的影象模糊程度越大。
2.canny邊緣檢測演算法
edges =cv2.canny(blur_gray, low_threshold, high_threshold)
引數:
blur_gray為模糊後的灰度圖;
low_threshold為閾值下界;
high_threshold閾值上界;兩閾值用來判斷梯度大小。
canny演算法的基本思想是找尋一幅影象中灰度強度變化最強的位置。所謂變化最強,即指梯度最大。平滑後的影象中每個畫素點的梯度可以由sobel運算元(一種卷積運算)來獲得(opencv中有封裝好的函式,可以求影象中每個畫素點的n階導數)。
首先,利用如下的核來分別求得沿水平(x)和垂直(y)方向的梯度g_x和g_y。
k_ = [-1 0 1; -2 0 2; -1 0 1], k_ = [-1 -2 -1; 0 0 0; 1 2 1]
之後,便可利用公式來求得每乙個畫素點的梯度值, g=
gx2+
gx2‾
‾‾‾‾
‾‾‾‾
‾√g =g
x2+g
x2
有時為了計算簡便,也會使用g_x和g_y的無窮大範數來代替二範數。把平滑後的影象中的每乙個點用g代替後,便得到梯度圖。
canny演算法中應用了一種叫雙閾值的技術。即設定乙個閾值上界和閾值下界(opencv中通常由人為指定的),影象中的畫素點如果大於閾值上界high_threshold則認為必然是邊界(稱為強邊界,strong edge),小於閾值下界low_threshold則認為必然不是邊界,兩者之間的則認為是候選項(稱為弱邊界,weak edge),需進行進一步處理。
3.霍夫變換
lines = cv2.houghlinesp(edges, rho, theta, threshold, np.array(),
min_line_length, max_line_gap)
引數:
edges:必須是二值影象,推薦使用canny邊緣檢測的結果影象;
rho:線段以畫素為單位的距離精度,double型別的,推薦用1.0;
theta:線段以弧度為單位的角度精度,推薦用np.pi/180;
threshold:累加平面的閾值引數,int型別,超過設定閾值才被檢測出線段,值越大,基本上意味著檢出的線段越長,檢出的線段個數越少;
np.array()這個引數為佔位符,對結果無影響;
min_line_length:線段以畫素為單位的最小長度,根據應用場景設定;
max_line_gap:同一方向上兩條線段判定為一條線段的最大允許間隔(斷裂),超過了設定值,則把兩條線段當成一條線段,值越大,允許線段上的斷裂越大,越有可能檢出潛在的直線段。
車道線檢測之3D車道線檢測
可參考文獻 有相機座標系ccamera和道路座標系croad,作者假定兩個座標系的roll和yaw一致,僅存pitch的差異,那麼,兩座標係之間的轉換關係tc2r將由h cam和camera pitch確定,其中,h cam和camera pitch由模型 輸入為相機採集的影象,輸出分為2部分,第一...
matlab車道線檢測 車道線檢測簡易版
第一次接觸式車道線檢測時嘗試的實現,整理上傳下 1 提取原圖邊緣,可以看出車輛前方的車道線在整個影象下方的梯形區域,提取這個roi 2 在roi區域進行輪廓查詢,按照輪廓周長和面積過濾掉干擾項,最後應該剩下兩條分布在影象中線左右兩側的兩條車道線 3 對左右兩條車道線點集做直線擬合,最後得出兩條車道線...
opencv車道線檢測
二值化 先變化為灰度圖,然後設定閾值直接變成二值化影象。形態學濾波 對二值化影象進行腐蝕,去除噪點,然後對影象進行膨脹,彌補對車道線的腐蝕。邊緣檢測 canny變化 sobel變化和laplacian變化中選擇了效果比較好的canny變化,三者在 中均可以使用,canny變化效果稍微好一點。按鍵控制...