gpt4 book ai didi

matlab - 如何在Matlab中通过MSER和HOG进行匹配

转载 作者:太空宇宙 更新时间:2023-11-03 20:05:12 25 4
gpt4 key购买 nike

我想知道在 Matlab 中是否有完整的 MSER 和 HOG 图像匹配实现。目前我正在使用 VLFeat但在进行图像匹配时发现了困难。有帮助吗?

顺便说一句,我已经在 VLFeat -Matlab 环境中尝试了以下代码,但遗憾的是无法执行匹配。

%Matlab code
%
pfx = fullfile(vl_root,'figures','demo') ;
randn('state',0) ;
rand('state',0) ;
figure(1) ; clf ;

Ia = imread(fullfile(vl_root,'data','roofs1.jpg')) ;
Ib = imread(fullfile(vl_root,'data','roofs2.jpg')) ;

Ia = uint8(rgb2gray(Ia)) ;
Ib = uint8(rgb2gray(Ib)) ;

[ra,fa] = vl_mser(I,'MinDiversity',0.7,'MaxVariation',0.2,'Delta',10) ;
[rb,fb] = vl_mser(I,'MinDiversity',0.7,'MaxVariation',0.2,'Delta',10) ;

[matches, scores] = vl_ubcmatch(fa, fb);

figure(1) ; clf ;
imagesc(cat(2, Ia, Ib));
axis image off ;
vl_demo_print('mser_match_1', 1);

figure(2) ; clf ;
imagesc(cat(2, Ia, Ib));

xa = ra(1, matches(1,:));
xb = rb(1, matches(2,:)) + size(Ia,2);
ya = ra(2, matches(1,:));
yb = rb(2,matches(2,:));

hold on ;
h = line([xa ; xb], [ya ; yb]);
set(h, 'linewidth', 1, 'color', 'b');

vl_plotframe(ra(:,matches(1,:)));
rb(1,:) = fb(1,:) + size(Ia,2);
vl_plotframe(rb(:,mathces(2,:)));
axis image off ;

vl_demo_print('mser_match_2', 1);

%%%%%%

最佳答案

有几个问题。首先,代码有几个错误并且不能按原样运行。我在下面粘贴了我的工作版本。

更重要的是,您正在尝试使用 SIFT 特征匹配函数来匹配 MSER 椭球。这根本行不通,因为 SIFT 会根据局部图像梯度给出一个非常高维的特征向量,而 MSER 检测器只会给你一个边界椭圆体。

VLFeat 似乎不包含 MSER 匹配函数,因此您可能必须自己编写。查看原始 MSER 论文以了解他们是如何进行匹配的:

"Robust wide-baseline stereo from maximally stable extremal regions", Matas et al. 2002

% Read the input images
Ia = imread(fullfile(vl_root,'data','roofs1.jpg')) ;
Ib = imread(fullfile(vl_root,'data','roofs2.jpg')) ;

% Convert to grayscale
Ia = uint8(rgb2gray(Ia)) ;
Ib = uint8(rgb2gray(Ib)) ;

% Find MSERs
[ra,fa] = vl_mser(Ia, 'MinDiversity',0.7,'MaxVariation',0.2,'Delta',10) ;
[rb,fb] = vl_mser(Ib, 'MinDiversity',0.7,'MaxVariation',0.2,'Delta',10) ;

% Match MSERs
[matches, scores] = vl_ubcmatch(fa, fb);

% Display the original input images
figure(1); clf;
imagesc(cat(2, Ia, Ib));
axis image off;
colormap gray;

% Display a second copy with the matches overlaid
figure(2) ; clf ;
imagesc(cat(2, Ia, Ib));
axis image off;
colormap gray;

xa = fa(1, matches(1,:));
ya = fa(2, matches(1,:));
xb = fb(1, matches(2,:)) + size(Ia,2);
yb = fb(2, matches(2,:));

hold on ;
h = line([xa ; xb], [ya ; yb]);
set(h, 'linewidth', 1, 'color', 'y');

关于matlab - 如何在Matlab中通过MSER和HOG进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13716485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com