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