Я пытаюсь запустить настраиваемый фильтр через изображение, используя функцию colfilt. Этот фильтр в основном запускает окно nxn через изображение и заменяет центральный пиксель на половину его минимальной и максимальной суммы. Это то, что код выглядит следующим образом:Ошибка использования функции colfilt в MatLab/Octave
colfilt(image, 3, "sliding", @(x) (min(x(:))+max(x(:)))/2)
Однако, я получаю эту ошибку:
error: col2im: can't resize B in matrix sized (A_SIZE - BLOCK_SIZE +1)
error: called from:
error: /usr/share/octave/packages/image-2.2.1/col2im.m at line 143, column 9
error: /usr/share/octave/packages/image-2.2.1/colfilt.m at line 152, column 9
Если я заменить функцию на nfilter, как ниже
nlfilter(image, [n n], @(x) (min(x(:))+max(x(:)))/2)
Это отлично работает, но это слишком медленно, поэтому я думаю, что первый вариант должен работать лучше.
Кто-нибудь знает, как заставить его работать?
Заранее спасибо.
Похоже, что размер матрицы, к которой вы назначаете результат 'colfilt', должен быть размером A - blocks_size (3 в вашем случае) + 1 = размер A - 2, и у него нет таких Габаритные размеры. – Cheery
Но я не назначаю результат какой-либо переменной – gcolucci
Вы - нет, но col2im вызывается colfilt, и это так. Каковы размеры исходного изображения? Попробуйте использовать не только '3', но' [3 3] ' – Cheery