Работа с colfit в matlab

Исках да изчисля хистограмата и изравняването на локалната хистограма на входно изображение, използвайки colfit. Но когато стартирам кода, получавам следната грешка. ??? Грешка при използване на ==> ge Размерите на матрицата трябва да съвпадат.

Грешка в ==> colfilt при 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