lines_gauss
:檢測影象中的線條及其寬度,在視覺表面檢測方面應用廣泛。
lines_gauss(image : lines : sigma, low, high, lightdark, extractwidth, linemodel, completejunctions : )
image
:輸入影象;
lines
:提取出的亞畫素精度線條;
sigma
:應用的高斯平滑的係數;
low:後滯閾值分割的低值;
high
:後滯閾值分割的高值;
lightdark
:提取影象中的亮色或者暗色線條;
extractwidth
:是否提取線條的寬度;
linemodel
:提取線條的模式,有
'none', 'bar-shaped', 'parabolic', 'gaussian'
四種。completejunctions
:是否新增能夠提取的接合點(
junction)。當
linemodel
被設定為除
'none'
以外的其他值時,
lines_gauss
linemodel
的'bar-shaped'
引數是正確的選擇,
'parabolic'
引數常用來提取邊緣比較銳利的線條(比如背光照明的影象中的線條),
'gaussian'
linemodel
僅在引數
extractwidth
被設定為
'true'
時才有意義。
以下是大恆影象的培訓資料中
linemodel
引數的解釋:
因為幾何演算法的原因,線條提取器(即
lines_gauss
運算元)不可能提取出所有確定的接合點,當
completejunctions
被設定為
'true'
時,運算元會試圖通過不同的演算法提取出那些能夠提取出來的接合點。
線條提取演算法通過影象與乙個高斯掩膜的卷積的偏導數來決定影象中的每個點在
x方向和
y方向的泰勒二次多項式的引數。引數
sigma
指定了高斯掩膜的引數(平滑程度)。高的
sigma
值代表對影象進行大尺度的平滑處理,但由此可能造成提取線條的定位失準。一般來說,在具有對比性的引數下,
lines_guass
能比lines_facet
返回更加準確的線條位置。泰勒二次多項式的引數被用來計算每個畫素點的線條方向。那些二階偏導數在垂直於線條方向上具有區域性最大值的點被標記為線條上的點,這些點隨後被連線成亞畫素精度輪廓。如果被標記的點的二階偏導數值大於引數
high
,其被認為是線條上的點而被立即接受,如果低於引數
low,其被認為不是線條上的點而被立即捨棄,如果其大於引數
low但小於引數
high
,則僅在此點能夠通過某一路徑與已經被接受的點相連時這些點才被接受。(參考
hysteresis_threshold)。
在選在引數
high
和引數low
時,應該注意,二階偏導數受線條幅度和寬度影響的同時,也受引數
sigma
的影響。二階偏導數對線條幅度呈近似線性響應(即幅度值越大,二階偏導數越大)。而對線條寬度的響應卻差不多呈反指數關係(即線條的寬度越寬,二階偏導數越小),這跟對引數
sigma
值的大小響應差不多(即
sigma
值越大,得到的二階偏導數越小)。這就意味著對於乙個大的
sigma
值,應該選擇乙個比較小的
high
值和low
值。兩個例子說明這個問題,對於乙個幅度值大於
100的
5個畫素寬的線條,如果
sigma=1.5
,那麼引數
high
應該大於
14。而對於乙個幅度值大於
100的
10個畫素寬的線條來說,如果
sigma=3
,那麼引數
high
應該大於
3.5。引數
low的值選在
0.25high
到0.5high
之間比較合適。
在提取線條的同時,
lines_guass
運算元還提取線條上每個點的以下屬性: 如果
extractwidth='false':
(1)'angle':
垂直於線條的方向的角度 (
2)'response':
二階偏導數的幅度值 如果
extractwidth='true',
下面的屬性也會被提取出來: (
3)'width_left':
線條左側的寬度 (
4)'width_right':
線條右側的寬度 如果
linemodel
沒有被設定為
'none'
,那麼下面的屬性也會被提取出來: (
5)'asymmetry':
線條的不對稱度 (
6)'contrast':
線條的對比度
上面這些引數能夠通過
get_contour_attrib_xld
運算元得到。
注意:一般來說,特別是在需要提取線條寬度的時候,引數
sigma
的選擇應該滿足
sigma >= w/sqrt(3)(w
代表影象中線條的寬度(線條直徑的一半)),最小允許值是
sigma >= w/2.5
。例如,對於乙個寬度為
4個畫素(直徑為
8個畫素)的線條來說,
sigma >= 2.3
是合適的引數。
python add argument 用法解析
argparse argparse 是 python 內建的乙個用於命令項選項與引數解析的模組,通過在程式中定義好我們需要的引數,argparse 將會從 sys.ar 中解析出這些引數,並自動生成幫助和使用資訊。當然,python 也有第三方的庫可用於命令列解析,而且功能也更加強大,比如 doco...
Docker Dockerfile用法全解析
dockerfile基本的指令 from workdir copy 本地目錄移動 add url目錄等 run 映象構建執行shell 語句 cmd 容器執行執行的shell 語句 entrypoint docker inspect nginx latest 檢視nginx的一些配置資訊,發現指定了...
memset函式用法精解
需要的標頭檔案 在c中 在c 中 void memset void s,int ch,size t n 函式解釋 將s中後n個位元組 typedef unsigned int size t 用ch替換並返回s.函式作用 在一段記憶體塊中填充某個給定的值,它是對較大的結構體或陣列進行清零操作的一種最快...