1

我正在尝试使用 Vispy 将我的视觉图像转换为极坐标形式

类似于下图的东西..

使用下面的 Vispy 代码生成的原始图像

scene.visuals.Image(self.img_data,interpolation=interpolation,parent = self.viewbox.scene, cmap=self.cmap, method='subdivide', clim=(-65,40)) 

使用 Vispy 生成的图像

所需的极地图像: 所需的极地图像

我确实尝试使用 Vispy 的PolarTransform Example来实现 polarTransform,但没有成功。

谁能指导我如何使用 Vispy 将上述图像的极坐标转换为极坐标。

谢谢

回复@djhoese: Vispy在PolarTransform之前生成的图 Vispy 在 PolarTransform 之前生成的图像

PolarTransform 后 Vispy 生成的图像 PolarTransform 后 Vispy 生成的图像

PolarTransform 的代码:

self.img.transform = PolarTransform()
4

1 回答 1

0

ImageVisual如果没有一些轻推,PolarTransform就不能很好地一起玩。

VisPy 有两种绘图方法,subdivideimpostor. 我会集中在subdivide这里。这不适用于impostor.

首先,创建ImageVisual这样的:

img = visuals.ImageVisual(image, 
                          grid=(1, N),           
                          method='subdivide')

对于 N,请使用合理的高数(例如 360)。使用该数字,您将立即看到极地分辨率如何受到影响。

此外,您需要设置一些特定的转换链:

transform = (
             # move to final location and scale to your liking
             STTransform(scale=(scx,scy), translate=(xoff,yoff))

             # 0
             # just plain simple polar transform
             *PolarTransform()

             # 1
             # pre scale image to work with polar transform
             # PolarTransform does not work without this
             # scale vertex coordinates to 2*pi
             * STTransform(scale=(2 * np.pi / img.size[0], 1.0))

             # 2
             # origin switch via translate.y, fix translate.x
             * STTransform(translate=(img.size[0] * (ori0 % 2) * 0.5,                                                                   
                                      -img.size[1] * (ori0 % 2)))

             # 3
             # location change via translate.x
             * STTransform(translate=(img.size[0] * (-loc0 - 0.25), 0.0))

             # 4
             # direction switch via inverting scale.x
             * STTransform(scale=(-dir0, 1.0))

            )
# set transform
img.transform = transform
  • dir0- 方向 cw/ccw(分别取值 -1/1)
  • loc0- 零位置(0 到 2 * np.pi 之间的值,逆时针)
  • ori0- 将被转换为极坐标图像中心的一侧(取值为 0、1topbottom

底部的四个 STTransform 肯定可以简化。它们被分开以显示不同的更改以及如何应用它们。

稍后将在 VisPy 示例部分添加一个示例。

于 2021-07-15T08:35:54.027 回答