GradientOrientationFilter[data,r]
给出局部方向平行于 data 的梯度,使用像素半径为 r 的高斯离散导数进行计算,返回的值介于
和
.
GradientOrientationFilter[data,{r,σ}]
使用标准差为 σ 的高斯核.
GradientOrientationFilter
GradientOrientationFilter[data,r]
给出局部方向平行于 data 的梯度,使用像素半径为 r 的高斯离散导数进行计算,返回的值介于
和
.
GradientOrientationFilter[data,{r,σ}]
使用标准差为 σ 的高斯核.
更多信息和选项
- GradientOrientationFilter 用于纹理、指纹分析、以及对象检测和识别等应用中获取快速密度变化的方向.
- data 可以是:
-
list 任意阶的数值数组 image 任意 Image 或 Image3D 对象 - GradientOrientationFilter[data,r] 使用标准差
. - GradientOrientationFilter[data,…] 返回以超球极坐标角度表示的方向. 对于维度为
的数据数组,对于
所得的数组维度为
. 所得数组中的
元组表示
球体角度. - 默认情况下,定义的角度在区间
中返回,并且数值
用于未定义的方向角度. - 对于单个通道图像或者对于数据,像素位置处的梯度
使用每个维度上的高斯离散导数近似. - 对于多通道图像,定义雅克比矩阵
为
,其中
是通道
的梯度. 方向基于具有最大幅值特征值的
的特征向量的方向. 这是将像素值的变差最大化的方向. - 对于
维 data 数组,假定采用对应于 Part 索引的坐标系统,满足坐标 {x1,…,xn} 对应于data[[x1,…,xn]]. 对于图像,滤波器实际上应用于 ImageData[image]. - 在一维空间中,非零梯度的方向总是 {0},否则未定义.
- 在二维空间中,方向是角度
满足
是与
平行的单位向量. - 在三维空间中,方向由角度
表示,满足
是与计算梯度平行的单位向量. - 对于
维数据,其中
,方向由角度
给出,并满足
是计算梯度方向上的单位向量. - GradientOrientationFilter[image,…] 对于 2D 图像总是返回单通道图像,对于 3D 图像返回双通道图像. 结果与 image 有同样的维度.
- 可以指定下列选项:
-
Method Automatic 卷积核 Padding "Fixed" 填充方法 WorkingPrecision Automatic 所使用精度 - 可以对 Method 给出下列子选项:
-
"DerivativeKernel" "Bessel" 卷积核 "UndefinedOrientationValue" 
当方向未定义时,返回数值 - "DerivativeKernel" 的可能设置包括:
-
"Bessel" 标准贝塞尔导数核,用于 Canny 边缘检测 "Gaussian" 标准高斯导数核,用于 Canny 边缘检测 "ShenCastan" 指数的一阶导数 "Sobel" Sobel 边缘检测核的二项推广 {kernel1,kernel2,…} 每个维度指定的显式核 - 设置为 Padding->None,GradientOrientationFilter[data,…] 一般给出比 data 更小的数组或图像.
范例
打开所有单元 关闭所有单元基本范例 (3)
GradientOrientationFilter[[image], 4]//ImageAdjustGradientOrientationFilter[[image], 2]GradientOrientationFilter[(| | | | | |
| - | - | - | - | - |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |), 1]//MatrixForm范围 (7)
数据 (5)
GradientOrientationFilter[{1, 1, 0, 1, 0, 1, 1}, 1]GradientOrientationFilter[{{a, b}, {a, b}}, 1]//SimplifyGradientOrientationFilter[[image], 1]GradientOrientationFilter[[image], 11]GradientOrientationFilter[[image], 2]选项 (8)
Padding (3)
GradientOrientationFilter[[image], 5]//ImageAdjustGradientOrientationFilter[[image], 5, Padding -> "Periodic"]//ImageAdjustGradientOrientationFilter[[image], {19, 3}, Padding -> None]Method (2)
b = GradientOrientationFilter[[image], 2]s = GradientOrientationFilter[[image], 2, Method -> "ShenCastan"]b - sGradientOrientationFilter[{1, 1, 0, 1}, 1, Method -> {"UndefinedOrientationValue" -> None}]WorkingPrecision (3)
默认情况下,MachinePrecision 与整数数组一起使用:
GradientOrientationFilter[{1, 1, 0, 1, 0, 1, 1}, 1]GradientOrientationFilter[{1, 1, 0, 1, 0, 1, 1}, 1, WorkingPrecision -> ∞]GradientOrientationFilter[N[{1, 1, 0, 1, 0, 1, 1}, 2], 1]滤波图像时,忽略 WorkingPrecision:
GradientOrientationFilter[[image], 5, WorkingPrecision -> Infinity]ImageType[%]应用 (5)
img = [image];
o = Flatten@ImageData@GradientOrientationFilter[img, 3];
w = Flatten@ImageData@GradientFilter[img, 3];𝒜 = WeightedData[o, w];
𝒟 = HistogramDistribution[𝒜];
Plot[PDF[𝒟, x], {x, -π / 2, π / 2}, Filling -> Axis, PlotRange -> All, Ticks -> {Range[-π / 2, π / 2, π / 4]}]计算图像的有向梯度的直方图,其中每个像素表示对应于局部方向中的箱中的梯度幅值为权值的投票:
HOG[img_, nbins_] :=
Module[{mag, ori, mat},
mag = GradientFilter[img, 1];
ori = GradientOrientationFilter[img, 1, Method -> {"UndefinedOrientationValue" -> 0}];
mat = ImageCooccurrence[{mag, ImageAdjust[ori]},
nbins, {{1}}];
BarChart[Total[mat * Range[0, 1 - 1 / nbins, 1 / nbins]], ChartLabels -> Join[{-(π/2)}, Table["", {nbins - 2}], {(π/2)}], Axes -> {True, False}]
];hog = HOG[[image], 10]img = [image];
dims = ImageDimensions[img];
dirs = ImageData[GradientOrientationFilter[img, 5]];
magnitudes = ImageData[GradientFilter[img, 5]];
orientations = MapThread[#1{-Sin[#2], Cos[#2]}&, {magnitudes, dirs}, 2];
Show[img, ListVectorPlot[MapIndexed[{{#2[[2]], dims[[2]] - #2[[1]]}, #1}&, orientations, {2}], VectorColorFunction -> (Yellow&), VectorScaling -> Automatic]]i = [image];
orientation = ImageData[GradientOrientationFilter[i, 5]];
orientation = Image@ArcTan[Sin[orientation], -Cos[orientation]];pos = RandomChoice[ImageValuePositions[MorphologicalPerimeter[Binarize[i, {0, .5}]], 1], 25];
Show[i, Graphics[Table[{Orange, Arrowheads[{-.02, .02}],
o = ImageValue[orientation, p];
Arrow[p + # * {Cos[o], Sin[o]}& /@ {-15, 15}]}, {p, pos}]]]i = [image];r = RidgeFilter[i, 1.5]//ImageAdjustc = (o = GradientOrientationFilter[%, 4])//ImageAdjust//ColorizeImageCompose[i, {c, .5}]属性和关系 (2)
GradientOrientationFilter 对于数据中的数字大小是不变的:
GradientOrientationFilter[(| | | | | |
| - | - | - | - | - |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |), 1]//MatrixFormGradientOrientationFilter[10(| | | | | |
| - | - | - | - | - |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 |
| 0 | 0 | 1 | 0 | 0 |), 1]//MatrixFormGradientOrientationFilter[[image], 3]ImageType[%]相关指南
文本
Wolfram Research (2012),GradientOrientationFilter,Wolfram 语言函数,https://reference.wolfram.com/language/ref/GradientOrientationFilter.html (更新于 2015 年).
CMS
Wolfram 语言. 2012. "GradientOrientationFilter." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2015. https://reference.wolfram.com/language/ref/GradientOrientationFilter.html.
APA
Wolfram 语言. (2012). GradientOrientationFilter. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/GradientOrientationFilter.html 年
BibTeX
@misc{reference.wolfram_2026_gradientorientationfilter, author="Wolfram Research", title="{GradientOrientationFilter}", year="2015", howpublished="\url{https://reference.wolfram.com/language/ref/GradientOrientationFilter.html}", note=[Accessed: 15-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_gradientorientationfilter, organization={Wolfram Research}, title={GradientOrientationFilter}, year={2015}, url={https://reference.wolfram.com/language/ref/GradientOrientationFilter.html}, note=[Accessed: 15-November-2026]}