如何使用 Vispy 将视觉图像转换为极坐标
How to convert visuals image to polar using Vispy
我正在尝试使用 Vispy 将我的视觉图像转换为极坐标形式
类似于下图的内容..
使用以下 Vispy 代码生成的原始图像
scene.visuals.Image(self.img_data,interpolation=interpolation,parent = self.viewbox.scene, cmap=self.cmap, method='subdivide', clim=(-65,40))
所需的极地图像:
我曾尝试使用 PolarTransform Example from Vispy 实现 polarTransform 但未能成功。
任何人都可以指导我如何使用 Vispy 将上述图像的 polarTransform 转换为 Polar。
谢谢
回复@djhoese:
Vispy 在 PolarTransform 之前生成的图像
Vispy PolarTransform后生成的图像
PolarTransform 代码:
self.img.transform = PolarTransform()
ImageVisual
和 PolarTransform
没有一些推动就不能很好地合作。
VisPy有两种绘图方法,subdivide
和impostor
。我将在这里专注于 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
- 将转换为极坐标图像中心的边(对于 top
或 bottom
取值 0、1
下面四个STTransform肯定可以简化。它们被分开以显示不同的更改以及必须如何应用它们。
稍后将在 VisPy 示例部分添加示例。
我正在尝试使用 Vispy 将我的视觉图像转换为极坐标形式
类似于下图的内容..
使用以下 Vispy 代码生成的原始图像
scene.visuals.Image(self.img_data,interpolation=interpolation,parent = self.viewbox.scene, cmap=self.cmap, method='subdivide', clim=(-65,40))
所需的极地图像:
我曾尝试使用 PolarTransform Example from Vispy 实现 polarTransform 但未能成功。
任何人都可以指导我如何使用 Vispy 将上述图像的 polarTransform 转换为 Polar。
谢谢
回复@djhoese:
Vispy 在 PolarTransform 之前生成的图像
Vispy PolarTransform后生成的图像
PolarTransform 代码:
self.img.transform = PolarTransform()
ImageVisual
和 PolarTransform
没有一些推动就不能很好地合作。
VisPy有两种绘图方法,subdivide
和impostor
。我将在这里专注于 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
- 将转换为极坐标图像中心的边(对于top
或bottom
取值 0、1
下面四个STTransform肯定可以简化。它们被分开以显示不同的更改以及必须如何应用它们。
稍后将在 VisPy 示例部分添加示例。