这个问题可能有点。。。大的。我受到了that的启发,不知道是否可以用python实现:
按照它的想法,我首先得到了图像的边缘,把它作为一个矩阵,并评估了点的位置,然后尝试使它连续,像那样(显然不漂亮…):
(如果我不这样做的话,用线来画他们会是这样的:)
然后对x和y坐标做fft,得到:
[ 92897.00000000 +0.j -16312.65365042 -5708.43473681j
6403.02886691-11902.98323505j ...
我想这些数字代表下面的数字:
所以我用这些复数来构造一个公式:
^{pr2}$给了我这个:
185794.0+17282.618327763143*np.sin(2*t+-2.804972121911925)+13515.908721371954*np.sin(4*t+-1.0772633933209355)+11927.354784757847*np.sin(6*t+1.847507468889795)+...
我对它做了eval(),认为这就是公式,总代码如下:
x, y = getBorder('target.png', maxRes = 256)
x, y = sortNearest(x, y, maxDistance = 15)
fx = np.fft.fft(x)
fy = np.fft.fft(y)
equaX = generateEqua(fx) #the codes beyond
equaY = generateEqua(fy)
t = np.linspace(0, len(x), 10000)
fsX = eval(equaX)
fsY = eval(equaY)
fig = plt.figure(figsize = (15, 15))
plt.plot(fsX, fsY, linewidth = 0.5)
plt.show()
在这里我不是在问细节,只是想知道哪里可能不正确,我的概念是错误的吗?缺少什么?或者我用错了选择?在
如果我没有完全错的话,你应该看到,如果你分散图像,有些x值有多个y值。这将违反笛卡尔坐标系的基本原理。因此,您无法为图像推导一个公式。在
在处理图像时,通常使用二维坐标数组,然后对每个x-y坐标应用函数。在
相关问题 更多 >
编程相关推荐