Сглаживание краев в цветовой карте - PullRequest
2 голосов
/ 16 ноября 2010

У меня есть квадратная матрица размера 'n', которая состоит из чисел (от 1 до N) нерегулярно, но сгруппировано. Например, все 7 вместе, все 10 вместе и т. Д., Но нерегулярно.Используя команду «image and colormap», я получаю матрицу, в которой каждый кластер окрашен по-разному, но с квадратными краями. Теперь я хочу вывести края так, чтобы между каждым цветом была гладкая граница.В основном мне нужны пандусы вместо ступеней!Я новичок в MATLAB.Pl Help ...........

Ответы [ 3 ]

3 голосов
/ 17 ноября 2010

Вы можете свертывать свой массив с любым типом фильтра нижних частот (то есть сглаживания). Если вы хотите, чтобы ваши пандусы были прямыми, вы можете использовать средний фильтр; если вы хотите, чтобы скаты были сигмоидальными, вы можете использовать фильтр Гаусса. Размер окна фильтра определяет ширину рампы.

Например, чтобы использовать средний фильтр 3x3 (который даст линейные изменения ширины 3 пикселя), вы должны сделать следующее:

%# pad the image by twice replicating borders to avoid border effects
%# use padarray instead if you have the image processing toolbox
tmp = img([1 1 1:end end end],[1 1 1:end end end]);
%# apply the convolution. Normalize the filter so that the sum
%# of all pixels in the filter is 1, and use the 'valid' option
%# to automatically discard the padding.
smoothImg = conv2(tmp,ones(3)/9,'valid');
0 голосов
/ 17 ноября 2010

отобразите изображение, используя pcolor, затем введите interp * shading shading

pcolor(matrix); %or pcolor(x,y,matrix)
shading interp;
0 голосов
/ 16 ноября 2010

Вы можете попробовать передискретизировать изображение и пропустить его через фильтр нижних частот.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...