时空图像模式方向的确定

2024-04-29 04:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

如何获得下图所示图案的平均方向。它是红色箭头相对于黄色(水平)线的方向。有什么办法吗?我想不出办法接近。这是从视频中创建的时空图像。谢谢您。在

Figure A

这是我的原始图像:enter image description here


Tags: 图像视频水平箭头方向时空图案红色
3条回答

我建议尝试一下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度。在

例如,请参见以下木纹图像和生成的变换图像: Horizontal Wood grain

Transformed image

别担心这两条线。图像是对称的,所以只需忽略图像的3/4就可以了。在

相关问题 更多 >