Скользящее окно на матрицах двух изображений (основное изображение и дополнительное изображение)

Я новичок в Matlab и застрял в некоторых вещах. был бы признателен, если бы вы могли помочь мне с этим. я должен продолжить с техникой скользящего окна. предполагается, что главное окно представляет собой матрицу 40x40, а вспомогательная матрица, по которой я хотел бы скользить, представляет собой матрицу изображения окна 10x10. я хочу проверить, равны ли две матрицы, и я думаю, что функция «isequal()» является лучшим вариантом для проверки равенства двух матриц. Пожалуйста помоги.


person Harsh Gopal    schedule 07.05.2013    source источник
comment
Какого равенства вы ищете? Какие данные есть в windows. Вы сравниваете скользящее окно 10x10 с подмножеством 10x10 основного окна? Кстати, в зависимости от того, что вы пытаетесь сделать, вы можете найти conv2 весьма полезным (например, 2D свертка)   -  person Dan    schedule 07.05.2013
comment
Да, сэр, я сравниваю матрицу изображения 10x10 с подмножеством 10x10 матрицы основного изображения размером 40x40.   -  person Harsh Gopal    schedule 07.05.2013


Ответы (2)


вы можете использовать либо conv2, либо, в более общем смысле, nlfilter. Поскольку Дэн уже предложил conv2, я приведу другой пример:

Если ваша матрица M, а окно w 10x10:

f = @(x) isequall(x(:)),w(:));
Ans = nlfilter(M,[10 10],f);
person Community    schedule 07.05.2013
comment
Спасибо, сэр, но извините, так как я новичок в Matlab, у меня есть эти глупые сомнения. простите. так что я должен сделать, это сохранить эту матрицу изображения 10x10 в 'w'..? указав w= imread('image_file.jpg'); это нормально будет работать?? - person Harsh Gopal; 07.05.2013
comment
Я предположил, что у вас уже есть 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