2010-11-16 13 views
2

J'ai une matrice carrée de taille 'n' qui est faite de nombres (1 à N) irréguliers mais groupés. Par exemple tous les 7 ensemble, tous les 10 ensemble, etc., mais irrégulièrement. En utilisant la commande "image et colormap", j'obtiens une matrice où chaque groupe est coloré différemment mais avec des bords carrés. Maintenant, je veux ébouriffer les bords de sorte qu'il y ait une frontière lisse entre chaque couleur. Fondamentalement, j'ai besoin de rampes à la place des marches! Je suis un débutant en MATLAB. AideLissage des bords dans une image de colormap

Répondre

0

Vous pouvez essayer de suréchantillonner votre image et l'alimenter via un filtre passe-bas.

3

Vous pouvez convolver votre réseau avec n'importe quel type de filtre passe-bas (c'est-à-dire de lissage). Si vous voulez que vos rampes soient droites, vous pouvez utiliser un filtre moyen; Si vous voulez que les rampes soient sigmoïdales, vous pouvez utiliser un filtre gaussien. La taille de la fenêtre de filtre détermine la largeur de la rampe.

Par exemple, pour utiliser un filtre à moyenne 3x3 (qui donnera des rampes de largeur 3 pixels), vous souhaitez effectuer les opérations suivantes:

%# 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
affichage

l'image à l'aide pcolor, puis tapez ombrage interp

pcolor(matrix); %or pcolor(x,y,matrix) 
shading interp;