当前位置: 首页 > 知识库问答 >
问题:

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

司空学智
2023-03-14

如下面的实验所示,科学图片素材库的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()

共有2个答案

金瑞
2023-03-14

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

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()  
纪成礼
2023-03-14

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

import numpy as np
pol = np.flip(pol,0)
 类似资料:
  • 我在将图像转换为极坐标时遇到问题。在Photoshop中很容易:)所以这对我来说是一个新领域。 我有以下图片: 结果应该是这样的: 我在这里看了一下,了解了一些基本知识,但仍然对圆的平方有点困惑: 我几乎不知道如何重新绘制图像。还有一个警告:由于管理限制,我想避免使用像Numpy这样的外部库。

  • 我正在尝试将极坐标的图像转换为笛卡尔坐标。 将图像转换为极坐标的示例显式执行-想要一个光滑的矩阵方法 我原以为使用上述方法是小菜一碟,但事实并非如此!!如果有人发现我的代码有错误,请告诉我! 我发现非常奇怪的是,当我改变phi时,它会做出根本性的改变,而不是以我期望的方式! 干杯

  • 好吧,这可能有点愚蠢,但我真的很难理解Matlab中的图像坐标。 所以,在一个数学方程中,f(x,y)f是图像函数,其中x和y是图像的坐标。例如,在matlab代码中,我们可以: 其中,img(1,4)等效于函数f(x,y)。现在,在Matlab中,有一个选项可以使用cart2pol()函数将笛卡尔坐标(x,y)转换为极坐标(rho,theta)。 现在,这就是我不明白的地方。是否可以应用f(ρ,

  • 我知道这个问题已经被回答了很多次,但是我不知道我做的是好是坏。 我得到了一个带有缺陷位置和图像ID的文件。图像大小为96*96。起源是(48,48) 由此计算R和T 然后,我为每个图像创建大小为96×96的空矩阵,对于图像1(例如),我在每个坐标(R,T)处赋值0 当我绘制矩阵时,我的结果很奇怪。。我错过了什么重要的事情吗?

  • 我无法将[R,theta]格式的图像转换为[x,y] 我正在尝试使用interp2。 然后我会: 最后: 但图像不正确! 以下是输入图像(图1)(带R,θ几何): 我想在笛卡尔网格上重建它(使用interp2),所以它看起来像这样(图2): 极坐标图像(图1)中的所有数据应映射到笛卡尔图像的红色部分(图2)。

  • 问题内容: 在过去一个月左右的时间里,我一直在努力地解决这个错误。每当我认为我已修复它时,它似乎都会以某种形式返回。 这是旧的Android“图像旋转90度”错误。我在这里(StackOverFlow)上阅读了无数篇文章,还尝试了许多方法,但似乎无法修复它。 我仍然收到旋转不正确的图像。 在我的应用程序中,用户选择他/她的个人资料图片,然后将其设置为ImageView。该图像是从“电话图库”中选择