自定义matlab目标匹配

function ipar =selfmatchpiont(features1,features2,Movement_features_1,Movement_features_2)
[m1,~] = size(features1);
[m2,~] = size(features2);
v1 = Movement_features_1(2,:); %用于竖向限制
v2 = Movement_features_2(2,:);
Similarity = zeros(m1,m2); %确定匹配矩阵
deta_v = zeros(m1,m2);
for i = 1:m1
    for j=1:m2
        Similarity(i,j) = norm(double(features1(i,:)-features2(j,:)));
        deta_v(i,j) = abs(v1(i)-v2(j));  
    end
end
Mix_similarities = (Similarity+0.01*deta_v); % 特征相似性和竖向的共同约束
temps = (Similarity+0.01*deta_v); %由于后期会改变变量,暂存一个未改变的以便后续查询
ipar = [];
if m1<=m2
    for l = 1:min([m1,m2])
        Mix_similarities =Mix_similarities';
        maxs = max(Mix_similarities,[],'all');
    [mn1,mn2] = find(Mix_similarities == min(Mix_similarities,[],'all'));
    ipar = [ipar;mn2,mn1];
    Mix_similarities(:,mn2) = maxs;
    Mix_similarities(mn1,:) = maxs;
    end
    for ml = 1:min([m1,m2])
similarities(ml) = temps(ipar(ml,1),ipar(ml,2));
deta_vs(ml) = deta_v(ipar(ml,1),ipar(ml,2));
end
else
    for l = 1:min([m1,m2])
    maxs = max(Mix_similarities,[],'all');
    [mn1,mn2] = find(Mix_similarities == min(Mix_similarities,[],'all'));
    ipar = [ipar;mn1,mn2];
    Mix_similarities(mn1,:) = maxs;
    Mix_similarities(:,mn2) = maxs;
    end
    for ml = 1:min([m1,m2])
similarities(ml) = temps(ipar(ml,1),ipar(ml,2));
deta_vs(ml) = deta_v(ipar(ml,1),ipar(ml,2));
end
end
h=1;
lipar= find(similarities<=h);
ldeta_vs = find(deta_vs<8);
ls =  intersect(lipar,lipar);
ipar = ipar(ls,:);

在双目匹配中,matlab给定算法未出结果。遂自编,欢迎交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值