2016-08-10 2 views
0

J'ai un ensemble de points discrets en 2D, qui ont besoin de calculer la surface interne, ou simplement la longueur et la hauteur, n'a pas d'importance évidemment. Mais le point de cette question est: pas nécessairement nous avons des bords tranchants qui façonnent la surface interne. J'ai essayé les commandes boundary et inpolygon, mais semble ne sont pas les bonnes pour ce problème. Que diriez-vous des bords que nous n'avons pas des bords droits, comme des arcs ou des demi-cercles.Calcul de l'aire des points discrets dans Matlab

https://drive.google.com/file/d/0B-DuVkE6qbU3ZnJsbWdQNjVmVkk/view?usp=sharing

Les fichiers fournis à l'intérieur de lien:

  • Fichier 1 sont constitués de coordonnées XYZ, plus l'intensité (fourni par les données numérisées laser) Valeurs
  • dossier 2 se composent de coordonnées XYZ, plus l'intensité , alors que toutes les valeurs Z et d'intensité sont fixées dans le fichier.
  • Les figures 1-1, 1-2, 1-3, 1-4 représentent les données en 3D avec des valeurs d'intensité associées. Différentes valeurs d'intensité affichent différents matériaux. Les flèches blanches présentent la profondeur des différentes parties du segment.
  • Les figures 2-1, 2-2 représentent les données en 2D avec une seule valeur d'intensité. En fait, dans cette étape, les données 3D ont été projetées en 2D et toutes les valeurs d'intensité ont changé à une seule valeur, en outre, la partie interne de la fenêtre a été supprimée. La zone de la partie interne est de l'intérêt à calculer.

Ça a été un défi pour moi! Quelqu'un pourrait-il conseiller s'il vous plaît?

+1

Un point est, par définition, quelque chose avec zéro région. À moins que vous ne vouliez dire autre chose et que vous ne le montrez pas. Est-ce le traitement d'image? pouvons-nous voir les images? Qu'avez-vous essayé? –

+0

Pourrais-je vous conseiller comment télécharger une capture d'écran de points ou le fichier ASCII? En fait, ce n'est pas une structure d'image, c'est-à-dire pas un format de pixel. ce sont juste des points discrets, des coordonnées x, y, mais évidemment pas connectés. – Sophia

+0

Dans l'éditeur de questions, vous avez un bouton pour télécharger des images.Ou vous pouvez télécharger l'image dans un site externe et fournir un lien (il y a un bouton pour les liens aussi) –

Répondre

0

Peut-être que vous pouvez utiliser imclose, imdilate ou imerode fonctions afin d'obtenir un « objet » unique et vous pouvez calculer la zone en additionnant toutes les valeurs diferent de 0 ou 255, en fonction de votre mise en œuvre. Je suppose que l'image est en noir et blanc, sinon convertissez-la en premier. documentation Matlab:

+0

Cher RCaetano, J'ai fourni un lien vers les données, aussi plus d'explications au problème. – Sophia

+0

Ce n'est pas un problème d'image. Dans le fichier ASCII, il y a des coordonnées xyz plus une valeur d'intensité. L'intensité est une propriété du point qui est liée à certains paramètres tels que le matériau. – Sophia

0

Si vos points sont les coordonnées des sommets d'un polygone, vous pouvez utiliser polyarea pour retourner la zone de ce polygone.

Ex:

Area = polyarea(pointsX, pointsY) 

Prenez en compte que l'ordre des points la matière, et ils doivent former un polygone valide (segments ne doit pas traverser)

+0

Cher Sembei, j'ai fourni un lien vers les données, aussi plus d'explications sur le problème. – Sophia

+0

Comme il peut être vu dans le fichier ASCII, il n'y a pas d'ordre particulier entre les points enregistrés pour construire le fichier ASCII. Ils ont été enregistrés au hasard. – Sophia

+0

Vous pouvez placer un seuil dans la coordonnée Z (profondeur). donc vous finirez avec une image binaire avec les objets à une certaine profondeur. Une fois que vous avez l'image binaire, vous aurez probablement besoin d'une certaine morphologie pour le nettoyer, et ensuite vous pouvez utiliser 'bwarea'. Jetez un oeil à http://ch.mathworks.com/help/images/ref/bwarea.html –