简而言之: 我有三张图片:参考图片和另外两张。参考图像用于将其他两个调整为适当的值。-这部分应该没问题。 然后我将另外两张图片(数组)相减,得到一个隐藏像素的数组 现在棘手的是:
这是我的方程,我想在每个像素分别解决,我的结果应该是“h”在一个新的数组,我将导出到excel 非常感谢你的帮助。你知道吗
import scipy
import numpy as np
from PIL import Image
from scipy.optimize import fsolve
P0 = Image.open('3kanaly0.tif')
m = scipy.misc.imread("3kanaly0.tif")
P0 = m[:,:,0]
print(P0)
P0_T = np.array(P0)/4
#1image
m = scipy.misc.imread("3.tif")
P1 = m[:,:,0]
print(P1)
P1_T = np.array(P1)/4
print(P1_T.shape)
print("P1_T (z)",type(P1_T))
print(P1_T)
#adjust
Texp = input()
Texp = int(Texp)
print("Start beta")
def beta(Texp,Tcal = 20):
return Texp/Tcal
b = beta(Texp)
print("beta :", b)
print(" beta")
print("Start alfa")
def alfa(A,B,C,D,b):
return A*b**3+B*b**2+C*b+D
wynik_alfa = alfa(0.0097,-0.08,-0.038,1.016,b)
print("alfa i:",wynik_alfa)
print(" alfa")
#
Tcal = 20
a = -10.978
b = 22.76
c = -19.317
d = 8.4634
Temp_T = Tcal*(a*(wynik_alfa*P1_T/P0_T)**3+b*(wynik_alfa*P1_T/P0_T)**2+c*wynik_alfa*P1_T/P0_T+d)
#2image
m = scipy.misc.imread("3kanaly2.tif")
P2 = m[:,:,0]
Temp_T2 = Tcal*(a*(wynik_alfa*P2_T/P0_T)**3+b*(wynik_alfa*P2_T/P0_T)**2+c*wynik_alfa*P2_T/P0_T+d)
r = np.subtract(Temp_T,Temp_T2)
a = 20
k = 400
Tpow = 80.0
ro = 8920
cp = 384
t = 2
print(type(k))
print(type(Tpow))
print(type(ro))
print(type(cp))
print(type(t))
print(type(P1_T))
print(type(r))
for i in range(len(Temp_T)):
for j in range(len(Temp_T2[0])):
fsolve((r[i][j] + (Tpow -Temp_T[i][j])*(1-exp(h**2)*exp(a*t/k**2)*h*(a**0.5*t**0.5)/k)))
啊,我明白了,你是在用fsolve解h。Fsolve将函数作为其初始参数,并将缺失值的初始猜测作为第二个参数。所以你需要把方程定义为一个函数:
然后将该函数传递给fsolve,以及h的初始猜测(在本例中为5):
根据您的图像,这可能需要很长时间来计算。你知道吗
你的帖子有点模棱两可,但不管怎样我都会尽力帮助你。如前所述,我对你的问题的“可解决性”不是很有信心,因为我对你作品的两种解读方式导致了两个不同的问题。据我所知,你正试图解决以下问题:
1)
R = A(h)*P1
其中A是将图像
P1
连接到残差R=P1-P2
的运算符,它取决于给定值的许多变量(A,k,t),此外,它还取决于要查找的量h
。你知道吗如果这是真的,有两种选择。首先,如果
h
对于每个像素都是独立的,那么您所追求的是h的N个值,那么您的问题基本上如下所示:2)
R[i][j] = A(h)[i][j] * P1[i][j]
N是像素数。注意2)不是矩阵方程,这里的乘法是按元素的,而不是矩阵乘法。所以我们在这里看到的是N个不相关的方程。由此看来,你不应该使用矩阵求解技术来寻找解决方案。如果您无法重写2)使其显式(即h=…),你将无法解h。如果你不能用数学为你的方程写解,你将无法写一个程序来解它。你知道吗
第二个选项是寻找单个值
h
。在本例中,您试图解决的问题是一个矩阵-向量方程,其大致形式如下:3)
R[:] = A(h)P1[:]
其中R和P1被重组为长度为N的向量,A是某种形式(稀疏或密集)的N×N矩阵。在这种情况下,我们不能解决这个问题,因为矩阵A不是唯一的;你有N个方程和N^2个未知数。h的多个值可能导致一个解,或者,该问题只能在最小二乘意义下解决。你知道吗
如果你要解决的问题与我上面写的两个不同,请试着用数学的方法写下你要解决的问题,我认为这对找到解决方案(如果存在的话)非常有帮助。你知道吗
相关问题 更多 >
编程相关推荐