#matlab
#matlab
Вопрос:
я делаю сжатие изображения в matlab.
После того, как я применил DCT к изображению и у меня была матрица img, я хочу применить пороговую маску к этой матрице.
mask = [1 1 1 1 0 0 0 0
1 1 1 0 0 0 0 0
1 1 0 0 0 0 0 0
1 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0];
maskedImg = blkproc(img,[8 8],mask );
Я использовал эту функцию, но она не сработала, и я получаю сообщение об ошибке:
Ошибка в ==> blkproc на 67 [a, block, border, fun, params, padval] = parse_inputs(varargin{:});
Комментарии:
1. Вы читали документы для
blkproc
? В частности, описаниеfun
аргумента?2. я пробовал, что myAveFun = @(mask) size(маска); maskedImg = blkproc(C,[8 8], myAveFun) . Но это все еще не работает
Ответ №1:
Согласно последней Matlab
документации; ближайший синтаксис blockproc (для вашего случая) B = blockproc(A,[M N],fun)
. Так что, по-видимому, ваша mask
действительно должна быть функцией!
Однако, я вспоминаю, что некоторое время назад эта blkproc
функция была допустимой Matlab
, поэтому дважды проверьте правильный способ ее вызова, введя (в командной строке) > help blkproc
. (В любом случае, я вполне уверен, что он разделит сигнатуру вызова с blockproc
[в данном случае]).