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

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

提问人:Khashayar 提问时间:10/24/2021 最后编辑:Khashayar 更新时间:10/24/2021 访问量:538

问:

如下实验所示,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()

enter image description here

python 图像处理 scikit-image

评论

2赞 Marat 10/24/2021
改变极地翘曲的方向只会垂直翻转生成的图像

答:

0赞 barker 10/24/2021 #1

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

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()  

output

评论

0赞 Khashayar 10/24/2021
不。如果我从 3 开始并在反向时钟方向上执行极坐标变换,那么下一个即将到来的数字(在 3 之后)将是 2(如问题中所示)。
1赞 Khashayar 10/24/2021 #2

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

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

enter image description here