答案 0 :(得分:0)
R ^ n中n维向量的两点之间的最小距离可以如下找到(例如:x = [1 3 5],y = [4 -4 7] 3-D点)
function result = minDistance (x, y) {
if ~isvector(x)
error('Input must be a vector')
result = sqrt(sum((x-y).^2))
end
如果需要任何其他信息,请解释公式,然后解决方案可以填满。
答案 1 :(得分:0)
根据您的澄清,我认为您只需要一个循环来完成这项工作。循环将遍历图片中的每个像素或点,将其与所有其他像素进行比较并计算位移矢量。
例如,如果你有10x10的图片,这意味着图片中有100个像素。对于每个像素,您可以计算99个位移矢量。对于整个图片,您将拥有99 * 100个位移矢量。
% read your picture
im = imread('myImage.jpg');
imageSize = size(im);
xsize = imageSize(1);
ysize = imageSize(2);
% construct pixel matrix
pixelPosXM = repmat(1:xsize, ysize, 1);
pixelPosYM = repmat(1:ysize, 1, xsize);
% convert into array
pixelPosX = pixelPosXM(:);
pixelPosY = pixelPosYM(:);
nsize = length(pixelPosX);
for i = 1:nsize
% construct matrix for calculation
px = repmat([pixelPosX(i), pixelPosY(i)], nsize - 1, 1);
otherPixels = [pixelPosX, pixelPosY]; otherPixels(i,:) = [];
% calculate displacement vectors
displacementVectors(:,:,i) = [px - otherPixels];
end
如果您不熟悉三维矩阵,可以替换
displacementVectors(:,:,i) = [px - otherPixels];
带
displacementVectors{i} = [px - otherPixels];