Я не видел, чтобы это было написано в документации (ни на help colfilt
, ни на docs colfilt
), но я думаю, что вы можете использовать colfilt
только как nlfilter
с одноканальными изображениями. Так что, если вы попытаетесь запустить пример кода, представленный на help colfilt
, на 3-канальном изображении, скажите:
I = imread('peppers.png'); % 'peppers.png' is just a demo color image usually provided with matblab
figure, imshow(I)
I2 = uint8(colfilt(I,[5 5],'sliding',@mean));
figure, imshow(I2)
Вы получаете ошибку, которую вы опубликовали:
Ошибка при использовании >= Размеры матрицы должны совпадать.
Ошибка в colfilt (строка 135) if all(block>=size(a)), % Обработать сразу всю матрицу.
Если вы попробуете это вместо этого, которое использует только первый канал (или любую другую комбинацию каналов), это просто сработает.
% which is one of the example images usually provided with matlab
J = imread('peppers.png');
I = J(:,:,1);
figure, imshow(I)
I2 = uint8(colfilt(I,[5 5],'sliding',@mean));
figure, imshow(I2)
надеюсь, это поможет
person
Drodbar
schedule
17.04.2012