Применение пороговой маски

#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 [в данном случае]).