【发布时间】:2016-12-01 01:36:02
【问题描述】:
您好,我有一个关于 sciKit 图像转换模块的问题:
我正在尝试找到可以使我的图像变平的最佳变换参数。允许最多三次变换,即 20 个参数。我想对我的三阶多项式进行初步猜测,该猜测应从已经获得的二阶多项式中推导出来。但是我无法理解哪些参数分配在哪里:
import numpy as np
import matplotlib.pyplot as plt
from skimage.transform import warp
from skimage.transform import AffineTransform
from skimage.transform import PolynomialTransform
def polynomialTransform(a0,a1,a2,a3,a4,a5,b0,b1,b2,b3,b4,b5):
array = np.zeros((2,6))
array[0][0] = a0
array[0][1] = a1
array[0][2] = a2
array[0][3] = a3
array[0][4] = a4
array[0][5] = a5
array[1][0] = b0
array[1][1] = b1
array[1][2] = b2
array[1][3] = b3
array[1][4] = b4
array[1][5] = b5
return(PolynomialTransform(array))
def polynomialTransform2(a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,b0,b1,b2,b3,b4,b5,b6,b7,b8,b9):
array = np.zeros((2,10))
array[0][0] = a0
array[0][1] = a1
array[0][2] = a2
array[0][3] = a3
array[0][4] = a4
array[0][5] = a5
array[0][2] = a6
array[0][3] = a7
array[0][4] = a8
array[0][5] = a9
array[1][0] = b0
array[1][1] = b1
array[1][2] = b2
array[1][3] = b3
array[1][4] = b4
array[1][5] = b5
array[1][2] = b6
array[1][3] = b7
array[1][4] = b8
array[1][5] = b9
return(PolynomialTransform(array))
现在我试图了解二阶的哪些参数对应于三阶多项式中的哪些系数。我已经运行了几个测试:
def doTransfrom(cubeROI): #Enter any image in the format of an n*m numpy array
x0 = np.asarray([1,1,0,0,0,0,0,0,1,1,1,1])
pCubic = np.asarray([1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1])
quadratic=warp(cubeROI,polynomialTransform(x0[0],x0[1],x0[2],x0[3],x0[4],x0[5],x0[6],x0[7],x0[8],x0[9],x0[10],x0[11]))
cubic=warp(cubeROI,polynomialTransform2(pCubic[0],pCubic[1],pCubic[2],pCubic[3],pCubic[4],pCubic[5],pCubic[6],pCubic[7],pCubic[8],pCubic[9],pCubic[10],pCubic[11],pCubic[12],pCubic[13],pCubic[14],pCubic[15],pCubic[16],pCubic[17],pCubic[18],pCubic[19]))
plt.imshow(quadratic)
plt.show()
plt.imshow(cubic)
plt.show()
如您所见,前 2 个和后 4 个参数相互对应……但是我正在努力找出二次变换中剩下的 5 个参数。事实上,我觉得 'a1' 之后的参数没有任何作用 - 因此我相信我的问题源于我将 an/bn 输入 PolynomialTrasnsform 的方式!我做错了什么?!
我真正想要做什么: 为了更好地理解 - 我试图找到一个坐标系,其中一组图像与其中值的差异最小:
min_(an,bn): chi^2 = (Delta - I(f(x,y,a_n,b_n))^2
【问题讨论】:
-
您对哪种坐标变换感兴趣?成功变形的图像会是什么样子?您能否澄清“一组图像与其中值的差异”的描述?您是否正在尝试注册图像?
-
你好 Stefan,我有一组 200 张天文图像,它们是从中间图像中减去的:pixel(i,j)_median=median(all pixel(i,j)) 显示出轻微的失真。我想使用坐标变换将它们展平:因此我正在寻找最佳(在 chi**2 意义上)坐标变换系数 a_n,b_n。我所做的是让最小二乘拟合器最小化(Median-wrap(Image_N,polytransform))。由于这需要数值微调,我从一阶多边形开始,将拟合的 a_n,b_n 传递给二阶拟合函数,而不是将这些值传递给三阶。但我已经解决了我的问题!
标签: python numpy scikit-image