wtorek, 21 października 2008

Operowanie na voxelach w CImg

Operowanie na voxelach, czyli punktach w obrazach przestrzennych, może być równie proste jak operowanie pikselami obrazów 2D. Oczywiście najlepiej jeśli dysponujemy narzędziem, które nas w tym będzie wspierać na każdym kroku. W tym momencie chciałbym ponownie zareklamować bibliotekę CImg, o której pisałem już jakiś czas temu. Ma ona kilka zalet, które sprawią, że nasza praca z danymi przestrzennymi będzie naprawdę przyjemna.
  1. Definicja nowego obrazka pozwala na określenie nie tylko szerokości oraz wysokości, ale również długości dla naszych danych

    CImg<> img(60,60,60); //x,y,z

  2. Część filtrów i funkcji posiada wsparcie dla obrazów przestrzennych. Dla przykładu, aby wykonać dylatację dla takich danych, należy wcześniej zdefiniować element strukturalny w 3D i przekazać go do funkcji.

    CImg<> mask(5,5,5,1,1);img.dilate(mask);

  3. CImg posiada zaimplementowany algorytm marching cubes, dzięki czemu możemy zrekonstruować dane do obiektu 3D.
  4. Korzystając z funkcji display_object3d mamy możliwość wyświetlania obiektu, a następnie przy pomocy myszki możemy go skalować, obracać i przesuwać.
Na poniższym obrazku możemy zobaczyć efekty dylatacji oraz erozji dla wcześniej przygotowanych danych przestrzennych.


Kod źródłowy tego przykładu jest dostępny na stronie Wiki.

0 komentarze:

Prześlij komentarz