我有两个图像,比如P和S,大小为 8192×200,我想计算它们之间的自定义“欧几里德距离”。目前我使用以下步骤:
将图像重塑为一对列向量和行向量:
Ip = Ip(:).';
Is = Is(:);
Run Code Online (Sandbox Code Playgroud)计算一个度量矩阵,G,其条目由公式给出
G(i,j) = 1/(2*pi*r*r) * exp((-d*d)/(2*r*r));
Run Code Online (Sandbox Code Playgroud)
其中r是一个从 0 到 20 变化的全局参数,例如,d是 pixeli和 pixel之间的距离j。例如,如果像素i是(k,l)并且像素j是(k1,l1),则d = sqrt((k-k1)^2 + (l-l1)^2);。像素 1 将是(1,1),像素 2 将是(1,2),依此类推。因此,矩阵的大小G将为1638400×1638400。
计算两个图像之间的最终(标量)欧几里得距离,使用:
ImEuDist = sqrt( (Ip-Is) * G * (Ip-Is).' );
Run Code Online (Sandbox Code Playgroud)我已经使用 mex 函数编写了一些代码,但是在给出结果之前花费的时间太长(5-6 小时) - 请参阅此 SO …