平滑得到的灰度直方圖
sigma := 0.3
create_funct_1d_array (grayvalues, function) //將離散的灰度值連成函式
smooth_funct_1d_gauss (function, sigma, smoothedfunction)
對平滑後的灰度直方圖進行求導
derivate_funct_1d (smoothedfunction, 'first', firstderivative)
zero_crossings_funct_1d (firstderivative, zerocrossings)
導數為0的點就是邊緣點。但是如果直接找0點的話,會找到很多,我們不太好篩選,所以我們選擇求二階導數找最大值來篩選。先設定乙個閾值,大於這個閾值的點才被定為邊緣點。
minimummagnitudeofsecondderivative := 8
positionofsalientline :=
for i := 0 to |zerocrossings|-1 by 1
get_y_value_funct_1d (secondderivative, zerocrossings[i], 'constant', y)
if (y > minimummagnitudeofsecondderivative)
positionofsalientline := [positionofsalientline,zerocrossings[i]]
endif
endfor
通過得到的邊緣點對應的值positionofsalientline算出座標點
下面是【solution_guide_iii_a_1d_measuring.pdf】 第四章高階測量:模糊測量物件的一部分內容:
模糊測量物件是標準測量物件的擴充套件,可以通過特定的權重函式選擇邊緣和邊緣對。
模糊隸屬度函式可以通過位置,大小或灰度值等特徵選擇合適的邊緣對。如例程
fuzzy_measure_switch.hdev
通過運算元create_funct_1d_pairs建立乙個隸屬度函式
create_funct_1d_pairs ([7,9,11], [0.0,1.0,0.0], sizefunction)
通過運算元set_fuzzy_measure將乙個標準測量物件轉為模糊物件
settype := 'size'\\通過邊緣對包圍區域的大小選擇邊緣對
set_fuzzy_measure (measurehandle, settype, sizefunction)
應用模糊物件進行測量
sigma := 0.9
ampthresh := 12
fuzzythresh := 0.5
transition := 'negative'
select := 'all'
fuzzy_measure_pairs (image, measurehandle, sigma, ampthresh, fuzzythresh, \
transition, rowedgefirst, columnedgefirst, \
amplitudefirst, rowedgesecond, columnedgesecond, \
amplitudesecond, rowedgecenter, columnedgecenter, \
fuzzyscore, intradistance, interdistance)
fuzzythresh 超過給定的值 0.5的邊緣對將被返回。
Halcon 1D測量之一
學習如何使用halcon進行1d測量,可以參考 1 halcon自帶的文件 solution guide iii a 1d measuring.pdf 2 halcon例程 measure switch.hdev 其中 solution guide iii a 1d measuring.pdf 第一...
Halcon 2D測量之二
影象分割得到感興趣的區域 可以用以下運算元 各種各樣的閾值運算元可以通過灰度值將灰度值影象或者多通道影象的其中乙個通道分割出感興趣的區域,如 auto threshold,bin threshold,dyn threshold,fast threshold,threshold.獲取的灰度值的可以用g...
halcon二維測量
halcon二維測量的基本步驟 1.預處理,這裡指的是的濾波等手段,使要測量的特徵凸顯化,有效去除噪點干擾等。2.閾值化,通過閾值化抽取出影象的特徵,通常使用灰度閾值化,但halcon中沒有特意的將轉換成灰度圖,而是直接呼叫閾值化處理函式。同時灰度直方圖能幫助開發人員快速找到閾值範圍。3.閾值化之後...