Matlab просеивает ключевые точки нескольких изображений, отображаемых на одном изображении

Я пытаюсь отобразить ключевые точки просеивания из 4 одновременных видеокадров на одно изображение. Я смог определить ключевые точки каждого изображения, однако хотел бы отобразить все эти наборы ключевых точек на последнем изображении вместо 4 отдельных изображений, чтобы отслеживать движение отображаемого грузовика. Код, который я написал, выглядит следующим образом:

I1 = imread('6.jpg');     
g = rgb2gray(I1);    
imwrite(g, '10.png','PNG');    
[I1, D, L] = sift('C:\Users\Xaiver\Documents\MATLAB\10.png');    
showkeys(I1, L)    
I2 = imread('7.jpg');    
g = rgb2gray(I2);    
imwrite(g, '11.png','PNG');    
[I2, D, L] = sift('C:\Users\Xaiver\Documents\MATLAB\11.png');    
showkeys(I2, L)    
I3 = imread('8.jpg');    
g = rgb2gray(I3);    
imwrite(g, '12.png','PNG');    
[I3, D, L] = sift('C:\Users\Xaiver\Documents\MATLAB\12.png');    
showkeys(I3, L)    
I4 = imread('9.jpg');    
g = rgb2gray(I4);    
imwrite(g, '13.png','PNG');    
[I4, D, L] = sift('C:\Users\Xaiver\Documents\MATLAB\13.png');    
showkeys(I4, L)

Как получить ключевые точки SIFT из изображений I1, I2, I3 и I4, отображаемые только на изображении I4?


person user1413957    schedule 24.05.2012    source источник
comment
Пожалуйста, не используйте заглавные буквы и форматируйте свои вопросы. Я сделал это для вас сейчас. Посмотрите на разницу.   -  person Bart    schedule 24.05.2012
comment
хаха спасибо! извините, ребята, кричать не собирался.   -  person user1413957    schedule 24.05.2012
comment
Я думаю, вам придется открыть исходный код showkeys() и повозиться с ним самостоятельно. Посмотрите в документах Matlab, в частности, «рисунок» и «держись».   -  person Alex    schedule 24.05.2012
comment
Привет всем... Наконец-то я понял это. Мне пришлось отредактировать функцию showkeys() и мой код. Спасибо.   -  person user1413957    schedule 25.05.2012


Ответы (1)


Ну, я понятия не имею, как работает процедура showkeys, так как вы не предоставили код, но что-то мне подсказывает, что вы можете использовать hold on между вызовами, и это сработает:

[I1, D, L1] = sift('C:\Users\Xaiver\Documents\MATLAB\10.png');
[I2, D, L2] = sift('C:\Users\Xaiver\Documents\MATLAB\11.png');
[I3, D, L3] = sift('C:\Users\Xaiver\Documents\MATLAB\12.png');
[I4, D, L4] = sift('C:\Users\Xaiver\Documents\MATLAB\13.png');
showkeys(I1, L1);
hold on;
showkeys(I2, L1);
showkeys(I3, L1);
showkeys(I4, L1);
person Andrey Rubshtein    schedule 24.05.2012
comment
Андрей, ваше предложение не работает. Самое близкое, что я смог получить, это написать: showkeys(I4, L) showkeys(I4, M) showkeys(I4, N) showkeys(I4, O) Это дает каждую из ключевых точек изображений, отображаемых только на изображении I4. однако он выводит 4 отдельных изображения I4 с ключевыми точками, а не только одно изображение со всеми точками, отображаемыми одновременно. Дайте мне знать, если у вас есть другие предложения. Спасибо! - person user1413957; 24.05.2012
comment
showkeys(image, locs) Эта функция отображает изображение с наложенными ключевыми точками SIFT. Входные параметры: image: имя файла изображения (оттенки серого) locs: матрица, в которой каждая строка указывает положение ключевой точки (строка, столбец, масштаб, ориентация). - person user1413957; 24.05.2012