2024-04-29 04:35:25 发布
网友
如何获得下图所示图案的平均方向。它是红色箭头相对于黄色(水平)线的方向。有什么办法吗?我想不出办法接近。这是从视频中创建的时空图像。谢谢您。在
这是我的原始图像:
我建议尝试一下Hough变换,它在OpenCv中可用。Hough变换将直线映射到角度,可能对您的情况很有用。在
最简单的方法是计算梯度向量(x导数和y导数)并在每个像素处找到它的方向(atan2(y,x))。平均方向是你想要的,而不是平均方向(会抵消掉)。所以应用模量pi,然后在图像上取平均值。在
atan2(y,x)
计算图像渐变的最佳方法是通过Gaussian gradients。在
{a2}完成这一任务的方式更稳健。简而言之,它计算梯度向量的局部平均值以减少噪声的影响。它是通过计算梯度向量的外积来实现这一点的,它产生了一个对称矩阵。然后,可以对该矩阵的各个分量进行局部平均(即应用平滑滤波器)。这类似于计算向量的角度,将角度加倍,使相反方向的向量相等,然后求平均值。在
请注意,您可以在3D中应用这些解决方案中的任何一个(您可以将视频数据看作2D+time=3D)。这样,就可以计算2D帧中运动的速度和方向,而不仅仅是沿着问题中显示的2D图像提取方向的速度。图像梯度和结构张量的概念很容易推广到三维,这种方法类似于光流的Lucas-Kanade方法。如果你沿着维基百科的链接,你会看到它使用了二维的结构张量,并沿着时间维度添加了梯度。在
尝试傅里叶变换可能有用。 在您的例子中,当在图像中垂直移动时,应该在变换后的图像中间得到两条垂直线,对应于信息。 另一方面,不应该有一条水平线,因为当在图像中水平移动时,几乎没有信息(几乎没有变化)
例如,您可以使用此在线站点来玩傅立叶变换: https://www.ejectamenta.com/Fourifier-fullscreen/
听起来问题似乎没变,但事实上现在要容易得多。 二维图案被转换成在变换后的图像中很容易找到的主导线。 例如,您可以搜索图像中最强的像素,并简单地确定它们更可能是水平线还是垂直线,或者确定主导线的角度。然后旋转90度。在
例如,请参见以下木纹图像和生成的变换图像:
别担心这两条线。图像是对称的,所以只需忽略图像的3/4就可以了。在
我建议尝试一下Hough变换,它在OpenCv中可用。Hough变换将直线映射到角度,可能对您的情况很有用。在
最简单的方法是计算梯度向量(x导数和y导数)并在每个像素处找到它的方向(
atan2(y,x)
)。平均方向是你想要的,而不是平均方向(会抵消掉)。所以应用模量pi,然后在图像上取平均值。在计算图像渐变的最佳方法是通过Gaussian gradients。在
{a2}完成这一任务的方式更稳健。简而言之,它计算梯度向量的局部平均值以减少噪声的影响。它是通过计算梯度向量的外积来实现这一点的,它产生了一个对称矩阵。然后,可以对该矩阵的各个分量进行局部平均(即应用平滑滤波器)。这类似于计算向量的角度,将角度加倍,使相反方向的向量相等,然后求平均值。在
请注意,您可以在3D中应用这些解决方案中的任何一个(您可以将视频数据看作2D+time=3D)。这样,就可以计算2D帧中运动的速度和方向,而不仅仅是沿着问题中显示的2D图像提取方向的速度。图像梯度和结构张量的概念很容易推广到三维,这种方法类似于光流的Lucas-Kanade方法。如果你沿着维基百科的链接,你会看到它使用了二维的结构张量,并沿着时间维度添加了梯度。在
尝试傅里叶变换可能有用。 在您的例子中,当在图像中垂直移动时,应该在变换后的图像中间得到两条垂直线,对应于信息。 另一方面,不应该有一条水平线,因为当在图像中水平移动时,几乎没有信息(几乎没有变化)
例如,您可以使用此在线站点来玩傅立叶变换: https://www.ejectamenta.com/Fourifier-fullscreen/
听起来问题似乎没变,但事实上现在要容易得多。 二维图案被转换成在变换后的图像中很容易找到的主导线。 例如,您可以搜索图像中最强的像素,并简单地确定它们更可能是水平线还是垂直线,或者确定主导线的角度。然后旋转90度。在
例如,请参见以下木纹图像和生成的变换图像:
别担心这两条线。图像是对称的,所以只需忽略图像的3/4就可以了。在
相关问题 更多 >
编程相关推荐