使用 scikit-image 在反向时钟方向上对图像执行极坐标变换

Performing a polar transformation on an image in reverse clock direction using scikit-image

如以下实验所示,scikit-image 库的 warp_polar 函数执行时钟方向的极坐标变换。但是,我想在 反向时钟方向 上执行极坐标变换。我可能应该以某种方式翻转或旋转图像以获得所需的最终结果。但是,我不确定该怎么做。我将不胜感激任何有效的解决方案。

在正确的解决方案中,转换后的图像将具有以下数字序列:3、2、1、12、11、10....

from matplotlib import pyplot as plt
import matplotlib.image as mpimg
import matplotlib.gridspec as gridspec
from skimage.transform import warp_polar
import cv2

testImg = cv2.cvtColor(mpimg.imread('clock.png'), cv2.COLOR_BGR2GRAY)
pol = warp_polar(testImg, radius=min(testImg.shape)/2)

# Create 2x2 sub plots
gs = gridspec.GridSpec(1, 2)

fig = plt.figure()
ax1 = fig.add_subplot(gs[0, 0]) # row 0, col 0
ax1.imshow(testImg)
ax1.set_title("Original Image")

ax2 = fig.add_subplot(gs[0, 1]) # row 0, col 1
ax2.imshow(pol)
ax2.set_title("Polar Transformation")

plt.show()

您可以在输入之前在轴上翻转图像,然后 运行 您当前的极坐标扭曲以获得如下结果:

from matplotlib import pyplot as plt
import matplotlib.image as mpimg
import matplotlib.gridspec as gridspec
from skimage.transform import warp_polar
import cv2

testImg = cv2.cvtColor(mpimg.imread('clock.png'), cv2.COLOR_BGR2GRAY)
horizontal_flip = testImg[:, ::-1]
pol = warp_polar(horizontal_flip, radius=min(horizontal_flip.shape)/2)

# Create 2x2 sub plots
gs = gridspec.GridSpec(1, 2)

fig = plt.figure()
ax1 = fig.add_subplot(gs[0, 0]) # row 0, col 0
ax1.imshow(horizontal_flip)
ax1.set_title("Original Image")

ax2 = fig.add_subplot(gs[0, 1]) # row 0, col 1
ax2.imshow(pol)
ax2.set_title("Polar Transformation")

plt.show()  

感谢评论,我发现解决方案比我想象的要简单得多。垂直翻转 warp_polar 的结果相当于在反向时钟方向应用极坐标变换。

import numpy as np
pol = np.flip(pol,0)