目錄
- sobel_amp(算子)
- 描述
- 參數
sobel_amp(算子)
sobel_amp - 使用Sobel算子檢測邊緣(幅度)。
sobel_amp(圖片:邊緣圖像:濾波器方式,掩膜大小:)
描述
sobel_amp計算圖像的一階導數,并用作邊緣檢測器。
過濾器基于以下過濾器掩碼:
A =
1 2 1
0 0 0
-1 -2 -1
B =
1 0 -1
2 0 -2
1 0 -1
根據所選的過濾器類型,這些掩碼的使用方式不同。 (在下文中,a和b表示將圖像與A和B卷積為一個特定像素的結果。)
這里,thin(x)分別對應于垂直最大值(掩模A)和水平最大值(掩模B)的x,否則為0。因此,對于’thin_sum_abs’和’thin_max_abs’,漸變圖像被稀疏化。
對于過濾器類型’x’和’y’,如果輸入圖像是byte類型,則輸出圖像的類型為int1,否則為int2類型。
對于尺寸為3x3的Sobel算子,直接應用相應的濾波器A和B,而對于較大的濾波器尺寸,首先使用尺寸為Size-2的高斯濾波器(參見gauss_image)或二項式濾波器(參見binomial_filter)對輸入圖像進行平滑處理。
為上述FilterType值選擇高斯濾波器。這里,必須使用Size = 5,7,9,11或13。
通過將“_binomial”附加到FilterType的上述值來選擇二項式過濾器。這里,可以在5到39之間選擇大小。
此外,可以通過在Size中傳遞兩個值來選擇不同的平滑列和行方向的量。這里,Size的第一個值對應于掩模寬度(列方向上的平滑),而第二個值對應于二項式濾波器的掩模高度(行方向的平滑)。
二項式濾波器只能用于byte,uint2和real類型的圖像。由于平滑減小了邊緣幅度,在這種情況下,邊緣幅度乘以因子2以防止信息丟失。因此,
sobel_amp(I,E,過濾式,S)
for Size > 3在概念上等同于
scale_image(I,F,2,0)gauss_image(F,G,S-2)sobel_amp(G,E,FilterType,3)
or to
scale_image(I,F,2,0)binomial_filter(F,G,S[0]-2,S[1]-2)sobel_amp(G,E,FilterType,3).
對于sobel_amp,實現了使用SIMD技術的FilterType =‘sum_abs’的特殊優化。這些特殊優化的實際應用由系統參數’mmx_enable’控制(參見set_system)。如果’mmx_enable’設置為’true’(并且SIMD指令集可用),則使用SIMD技術執行內部計算。請注意,SIMD技術在大型緊湊輸入區域表現最佳。根據輸入區域和硬件的功能,使用SIMD技術執行sobel_amp甚至可能比非使用SIMD技術花費更多時間。
sobel_amp可以在OpenCL設備上執行,用于過濾器類型’sum_abs’,‘sum_sqrt’,‘x’和’y’(以及它們的二項式變體)。請注意,當對Size> 3使用高斯過濾時,結果可能與CPU實現不同。
支持OpenCL計算設備。
多線程類型:可重入(與非獨占運算符并行運行)。
多線程范圍:全局(可以從任何線程調用)。
在元組級別自動并行化。
在通道級別自動并行化。
在域級別自動并行化。
參數
Image (input_object)(多通道 - )圖像(-array)→對象(byte / int2 / uint2 / real)
輸入圖像。
EdgeAmplitude(output_object)(多通道 - )圖像(-array)→對象(int1 / int2 / uint2 / real)
邊緣幅度(梯度幅度)圖像。
FilterType (input_control)string→(string)
過濾器類型。
默認值:‘sum_abs’
值列表:
‘sum_abs’,‘sum_abs_binomial’,‘sum_sqrt’,‘sum_sqrt_binomial’,‘thin_max_abs’,‘thin_max_abs_binomial’,‘thin_sum_abs’,‘thin_sum_abs_binomial’,‘x’,‘x_binomial’,‘y’,'y_binomial “
值列表(用于計算設備):
‘sum_abs’,‘sum_sqrt’,‘x’,‘y’,‘sum_abs_binomial’,‘sum_sqrt_binomial’,‘x_binomial’,‘y_binomial’
Size (input_control)整數(-array)→(整數)
濾波掩膜的大小。
默認值:3
值列表:3,5,7,9,11,13,15,17,19,21,23,25,27,29,31,33,35,37,39