Перекрывающееся скользящее окно поверх изображения с помощью blockproc или im2col?
Я должен подать заявкуdct2
к маленьким окнам моего изображения, предпочтительно используя перекрывающееся окно.
Я обнаружил, что в Matlab есть две функции, которые могут сделать это возможнымblockproc
а такжеim2col
, У меня тоже проблемы с пониманием, и я был бы признателен за разъяснения.
blockproc
может быть использован для реализации моей функции на скользящем окне с помощьюBorderSize
а такжеTrimBorder
аргументы.
B = blockproc(A,[64,64],fun,'BorderSize',[5,5], 'TrimBorder', 'false');
Я понимаю, что это создает блок[64 + 2*5, 64 + 2*5]
и применяет функцию@fun
на каждом блоке. Но так как я не могу войти в свою функцию@fun
в отладке, чтобы проверить правильность работы, я не могу быть уверен, что это то, что мне нужно. Правильный ли мой код для того, что мне нужно? Я знаю, что получаю объединенный результат вB
но это должно быть на перекрывающем скользящем блоке. Будет ли это достичь того, что мне нужно?
Второйim2col
. im2col(A,[m n],block_type)
разделит блок на m блоков по n и расположит их в столбцах, поэтому каждый столбец является блоком? Если да, то как контролируется перекрытие? И если каждый блок представляет собой столбец, могу ли я успешно применитьdct2
функция на каждом столбце? Потому что я сомневаюсь, что в качестве входных данных будут использоваться векторы?
Некоторые разъяснения будут с благодарностью.