L'axe des coordonnées du pixel de coordonnées? (Matlab)
Comment puis-je convertir l'axe des coordonnées en pixel de coordonnées? J'ai un ensemble de données qui comprennent les négatifs et les valeurs flottantes, j'ai besoin de mettre toutes les données dans l'image. Mais le pixel de coordonnées sont tous les entiers positifs. comment résoudre le négatif question?
Ce genre de complot avez-vous besoin pour générer? Nuages de points, à la ligne, etc ... Aussi, ce formulaire est à vos données? X et & vecteurs, Nx2 matrice, etc.
Les ensembles de données [X,Y] sont les points de coordonnées qui peuvent faire jusqu'à l'ellipse.Je peux tracer l'ellipse,mais pour le moment, je suis confronté à la difficulté de mettre toutes les coordonnées dans l'image(pixels de coordonnées).Je suis censé attirer l'ellipse dans l'image.
J'ai posté une réponse basée sur votre commentaire..
Les ensembles de données [X,Y] sont les points de coordonnées qui peuvent faire jusqu'à l'ellipse.Je peux tracer l'ellipse,mais pour le moment, je suis confronté à la difficulté de mettre toutes les coordonnées dans l'image(pixels de coordonnées).Je suis censé attirer l'ellipse dans l'image.
J'ai posté une réponse basée sur votre commentaire..
OriginalL'auteur Elsie | 2011-10-11
Vous devez vous connecter pour publier un commentaire.
Vous pouvez passer des vecteurs de coordonnées à
scatter
.Si vous avez besoin de la matrice de l'image,
Vous pouvez également utiliser
print
pour économiser de l'intrigue à un fichier (ou simplement à l'exportation à partir de la figure de la fenêtre), puis utilisezimread
pour lire le fichier.Il est également cette ensemble de m-files à partir du Fichier d'Échange, qui sont déjà très proche de ce que vous avez besoin.
Enfin, voici un moyen simple d'obtenir ce que vous voulez, à l'intérieur d'une précision spécifiée:
La "précision" paramètre détermine le nombre de décimales des valeurs à virgule flottante seront conservés, et donc la résolution et la précision de l'image. Le casting de
uint32
peut-être inutile.Si vous avez un
Nx3
matrice de valeurs RVB pour chaqueN
points:J'ai testé mon ellipse en utilisant les codes ci-dessus.Mais je ne comprend pas 'round(x*précision) + 1'. Ce que fait ce code? Quel est le '+1'? C'est une sorte de conversion?
Après la soustraction de la minimale, la nouvelle valeur minimale est égale à zéro. Une fois que nous sommes prêts à utiliser
x
ety
que les indices, nous avons besoin d'ajouter1
depuis MATLAB index à partir de1
.J'ai commenté le bloc de code, j'espère que c'est plus clair. Rechercher-remplacer le hachage des caractères si nécessaire.
OriginalL'auteur reve_etrange
De ce que je comprends, vous avez un ensemble de points représentant une ellipse, et vous auriez à les dessiner directement à l'intérieur d'une image matricielle (et pas seulement de les afficher sur l'écran).
Pour cela, vous pouvez utiliser le POLY2MASK fonction pour convertir l'ellipse en un masque binaire. Puis par le calcul de son périmètre, ce qui nous donnera un masque binaire représentant les pixels qui constituent l'ellipse, qui est appliqué à l'image pour définir la couleur des pixels.
Prenons l'exemple ci-dessous. Je suis l'aide de la fonction calculateEllipse.m à partir d'une précédente question ici DONC:
Cela devrait vous donner des résultats supérieurs à simplement arrondir les coordonnées de
x
ety
(de plus, il gère hors de la limite de points pour nous). Assurez-vous de lire l'algorithme de la section de POLY2MASK pour voir comment il fonctionne à un niveau sous-pixel.EDIT:
si vous travaillez avec une image RVB (matrice 3D), la même chose s'applique, il vous suffit de modifier la dernière partie où l'on utilise le masque binaire :
Ici est encore une autre façon:
c'est juste une question de l'indexation, voir mon montage ci-dessus (l'un utilisant la logique de l'indexation, de l'autre linéaire des indices)
OriginalL'auteur Amro