Работа с Colfit в Matlab

Я хотел рассчитать гистограмму и локальное выравнивание гистограммы входного изображения, используя colfit. Но когда я запускаю код, я получаю следующую ошибку. ??? Ошибка при использовании ==> ge Размеры матрицы должны совпадать.

Ошибка в ==> colfilt at 135 if all(block>=size(a)), % Обработать сразу всю матрицу.

Ошибка в ==> localhist в 10 z=colfilt(f,[w w],'sliding',@std);

Пожалуйста, предоставьте некоторые идеи.


person tortuga    schedule 17.04.2012    source источник
comment
Можете ли вы показать входные данные (и размеры входных данных), которые вы передали функции colfilt, пожалуйста?   -  person Richante    schedule 17.04.2012
comment
colfilt(f,[3 3],'sliding',@std); w - размер окна соседства, введенный пользователем   -  person tortuga    schedule 17.04.2012


Ответы (1)


Я не видел, чтобы это было написано в документации (ни на 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