Я новичок в Matlab и застрял в некоторых вещах. был бы признателен, если бы вы могли помочь мне с этим. я должен продолжить с техникой скользящего окна. предполагается, что главное окно представляет собой матрицу 40x40, а вспомогательная матрица, по которой я хотел бы скользить, представляет собой матрицу изображения окна 10x10. я хочу проверить, равны ли две матрицы, и я думаю, что функция «isequal()» является лучшим вариантом для проверки равенства двух матриц. Пожалуйста помоги.
Скользящее окно на матрицах двух изображений (основное изображение и дополнительное изображение)
Ответы (2)
вы можете использовать либо conv2
, либо, в более общем смысле, nlfilter
. Поскольку Дэн уже предложил conv2
, я приведу другой пример:
Если ваша матрица M
, а окно w
10x10:
f = @(x) isequall(x(:)),w(:));
Ans = nlfilter(M,[10 10],f);
person
Community
schedule
07.05.2013
Спасибо, сэр, но извините, так как я новичок в Matlab, у меня есть эти глупые сомнения. простите. так что я должен сделать, это сохранить эту матрицу изображения 10x10 в 'w'..? указав w= imread('image_file.jpg'); это нормально будет работать??
- person Harsh Gopal; 07.05.2013
Я предположил, что у вас уже есть
w
и M
под рукой... вы написали в вопросе, что хотите сдвинуть матрицу 10x10 на матрицу 40x40. Если вы не знаете, как это сделать, я предлагаю сначала прочитать базовую документацию по Matlab.
- person ; 07.05.2013
Попробуйте этот код
a=[1 : 8 ; 9 : 16 ; 17 : 24];
b=[1 : 8 ; 9 : 16 ; 17 : 24];
imw=size(a,2);
imh=size(a,1);
disp(imh);
disp(imw);
wh=1;
ww=3;
for j=1:imh-wh+1
for i=1:imh-ww+1
w1=a(j:j+wh-1,i:i+ww-1,:);
w2=b(j:j+wh-1,i:i+ww-1,:);
w3=w1-w2;
disp(w3);
end
end
Здесь размер окна взят как 1X3
вы можете изменить размер окна, изменив пределы цикла и значения ww, wh
если 2 матрицы похожи, то значения w3 будут равны нулю
person
sara
schedule
16.07.2013
conv2
весьма полезным (например, 2D свертка) - person Dan   schedule 07.05.2013