środa, 22 października 2008

Wyświetlanie obieków 3D w CImg

0 komentarze
Korzystając z CImg dane przestrzenne (po uprzedniej rekonstrukcji algorytmem marching cubes) można zwizualizować na kilka sposobów. CImg obsługuje następujące tryby:
Na poniższej animacji możemy zobaczyć jak to działa:



Szczegóły najlepiej wyjaśni kod źródłowy:)

wtorek, 21 października 2008

Operowanie na voxelach w CImg

0 komentarze
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.

niedziela, 19 października 2008

Jeden za wszystkich: Multixterm

2 komentarze
Zarządzanie systemem linuksowym, z którego korzysta bardzo wielu użytkowników może być wymagające. Dodatkowo gdy uwzględnimy fakt, że takich systemów mamy kilkadziesiąt, to bez wprowadzenia dodatkowych narzędzi, zarządzanie tym wszystkim może być uciążliwe.

Jako przykład weźmy pod uwagę sale komputerowe na Uczelni. Zakładając, że mamy jedno konto, z którego korzystają wszyscy studenci, wystarczy przed każdymi zajęciami skasować i ponownie utworzyć konto student. Możemy to zrobić za pomocą poleceń:

sudo deluser studentsudo adduser student

Bardzo pomocne w tym celu może okazać się połączenie przez SSH, które pozwoli nam na wykonanie tych operacji z jednego komputera, po kolei na wszystkich maszynach. Wcześniej jednak musimy zainstalować serwer SSH, na każdym komputerze z osobna, co niestety będzie wymagało zalogowania się na konto z uprawnieniami administratora i wpisania następującego polecenia w okienku terminala:

sudo apt-get install ssh openssh-server

Pomimo tego, że mamy już skonfigurowany SSH i możemy podłączyć się do każdego komputera nie ruszając się z miejsca, to problem ciągle istnieje. Musimy powtórzyć te same operacje, dla każdej maszyny osobno.

Rozwiązaniem tego problemu może być skrypt Multixterm, będący częścią pakietu Expect. Instalację przeprowadzamy wpisując w terminalu:

sudo apt-get install expect expect-dev expectk

Następnie przygotowujemy skrypt Multixterm, który po domyślnej instalacji w Ubuntu 8.04 z niewiadomych przyczyn znajduje się w archiwum (w Ubuntu 6.10 było wszystko OK).

sudo gunzip /usr/share/doc/expect-dev/examples/multixterm.gz
sudo chmod +x /usr/share/doc/expect-dev/examples/multixterm
sudo ln -s /usr/share/doc/expect-dev/examples/multixterm /bin/multixterm

W tym momencie możemy przetestować jego działanie wpisując następujące polecenie:

multixterm -xc "ssh administrator@%n" adres_ip_1 adres_ip_2 adres_ip_n

Użytkownika administrator zmieniamy na innego, który ma możliwość zarządzania komputerem.

Polecenie to otwiera otwiera nam tyle okenek terminala ile podaliśmy adresów IP. Dodatkowo pojawia się jedno okienko główne do wpisywania poleceń.


Jest już całkiem nieźle. Mamy to o co nam chodziło od samego początku - zarządzamy wszystkimi komputerami tak, jakbyśmy pracowali na jednym. Jest jeszcze jeden mały problem. Podczas zakładania użytkownika, program adduser odpytuje nas o informacje o użytkowniku, takie jak login, hasło, i inne. Najlepiej jakby udało się to w jakiś sposób ominąć i wpisać wszystko w linii komend. Takie możliwości ma inny skrypt do zakładania użytkowników: useradd. Jego użycie znacznie ułatwi nam przygotowanie automatycznego skryptu do czyszczenia konta studenta. Gotowy skrypt może wyglądać np. tak:

#!/bin/bash

echo "Kasowanie uzytkownika student"
sudo rm -r /home/student/
sudo deluser student
sudo delgroup student

echo "Dodawanie uzytkownika student"
sudo useradd -m -d /home/student -s /bin/bash -c "student" student
(echo "student:haslo")|sudo chpasswd
sudo rm /home/student/Desktop/*
sudo rm /home/student/Pulpit/*

Taki skrypt możemy zapisać na każdym komputerze w katalogu domowym użytkownika z uprawnieniami administratora i po zalogowaniu za pomocą Multixterm wystarczy go uruchomić.

Na koniec warto skonfigurować połączenie SSH w taki sposób, aby łączyć się z poszczególnymi komputerami bez podawania hasła. Więcej można o tym przeczytać na polskim forum Ubuntu w howto "ssh tips".

Prawdopodobnie cały ten proces da się jeszcze bardziej usprawnić. Jeśli macie jakieś pomysły to proszę o podpowiedź w komentarzu.

czwartek, 9 października 2008

CMake w Ubuntu Hardy

3 komentarze
Instalacja CMake z domyślnych repozytoriów w Ubuntu 8.04 nie daje satysfakcjonujących efektów - brakuje nam dwóch aplikacji: ccmake i cmake-gui. Pierwsza z nich to interfejs konsolowy (biblioteka: ncurses), natomiast druga to interfejs okienkowy (biblioteka: Qt).

Lepiej już sytuacja wygląda gdy sami skompilujemy wersję źródłową. Pojawia się ccmake, ale ciągle nie ma cmake-gui.

Dlatego najlepszym rozwiązaniem wydaje się skorzystanie z przygotowanej wersji binarnej, którą możemy pobrać ze strony projektu. Po pobraniu rozpakowujemy archiwum i przechodzimy do katalogu:

tar -xzvf cmake-2.6.2-Linux-i386.tar.gz
cd cmake-2.6.2-Linux-i386/

W następnym kroku kopiujemy poszczególne katalogi w odpowiednie miejsca w naszej strukturze plików:

sudo cp bin/* /usr/bin/
sudo cp -R doc/cmake-2.6/ /usr/share/doc/
sudo cp -R man/man1/ /usr/share/man/
sudo cp -R share/* /usr/share/

Teraz już powinno wszystko działać bez zarzutów. Warto sprawdzić czy programy cmake, ccmake, cmake-gui są dostępne z linii komend i czy w Aplikacjach, w dziale Programowanie widnieje skrót do cmake.

środa, 8 października 2008

Why Linux is Better?

0 komentarze
Jeśli korzystanie z Linuksa stało się dla Ciebie zupełnie naturalne i dawno nie miałeś do czynienia z alternatywnymi systemami operacyjnymi (Windows, Mac OS) to możesz nie czuć różnicy. W dodatku kiedy znajomi pytają Cię dlaczego właśnie Linuks i czy ten system może być odpowiedni również dla nich, sporą listę argumentów znajdziesz na stronie: www.whylinuxisbetter.net (dostępna polska wersja językowa).

poniedziałek, 6 października 2008

Czas na zmiany - KDE 4

0 komentarze
Po zainstalowaniu ostatniej wersji Ubuntu (8.04.1) na domowym komputerze, nadszedł również czas na zmiany na laptopie, którego używam na co dzień. Jak dotąd korzystałem na nim z niewspieranej od jakiegoś czasu wersji 6.10 oraz Windowsa XP, od którego nie zdążyłem się jeszcze zupełnie odzwyczaić. Skoro i tak postanowiłem już zmienić swoje środowisko pracy, to dlaczego nie pójść na całość i nie wybrać czegoś zupełnie świeżego? KDE w wersji 4.1 - bo to właśnie o nim mowa - jest już na tyle stabilnym środowiskiem graficznym, że nadaje się do codziennego użytku, chociaż do stabilności Gnome jeszcze trochę mu brakuje.

Początek oczywiście nie był łatwy: myszka odruchowo wędrowała do lewego górnego rogu ekranu w poszukiwaniu menu programów, zegara również szukałem na górze, a szaro-czarny motyw okien z niebieską tapetą to nie było to do czego się przyzwyczaiłem w Gnome. Moje oczy latały w kółko nie mogąc przyzwyczaić się do nowego wyglądu.

Kiedy już minął pierwszy etap asymilacji, przyszedł czas na bliższe poznanie systemu i jego możliwości, szczególnie w kontekście czynności, które wykonuję na co dzień.

Internet:

Już na początku zaskoczył mnie nie najlepszy wygląd Firefoxa, który w Linuksie korzysta z kontrolek GTK. Wystarczyło jednak skonfigurować gtk-qt-engine-kde4 oraz zainstalować motyw graficzny kde-firefox, aby otrzymać w miarę natywny wygląd.

Praca zdalna:

Bardzo miłą niespodzianką była dla mnie znakomita obsługa serwerów FTP oraz SSH w menadżerze plików Dolphin, który czyni pracę ze zdalnymi katalogami prawie tak naturalną jak z katalogami lokalnymi. Najlepszym tego przykładem może być możliwość edycji plików na serwerze FTP bez ich kopiowania tam i z powrotem. Kolejną nowością jest dla mnie możliwość oglądania filmów wprost z serwera, z czym całkiem nieźle radzi sobie JuK.

Konsola:

Długo nie musiałem szukać zamiennika dla interaktywnej konsoli Tilda, do której przyzwyczaiłem się w Gnome. Yakuake w KDE świetnie się spisuje.
Edytor tekstu:

W Gnomie zawsze brakowało mi naprawdę dobrego edytora tekstu. Ratunkiem okazał się JEdit, który pomimo tego, że miał wszystko czego potrzebowałem, w wielu zastosowaniach po prostu okazywał się za ciężki. Kate w końcu wypełniła tą lukę. Jakby nie okresowe zawieszenia przy obsłudze sesji, byłbym w pełni usatysfakcjonowany.

Po dwóch tygodniach korzystania z KDE jestem z niego naprawdę zadowolony i polecam wszystkim, którzy z jednej strony potrzebują wydajnego systemu do codziennej pracy, a z drugiej strony nie boją się eksperymentować. W tym czasie tylko kilka razy zdarzyło mi się przełączyć na Gnome i ani razu na Windowsa.

Na koniec zamieszczam jeszcze screen z Dolphina, z włączoną opcją podglądu dla aktualnie zaznaczonego pliku. Co ciekawe nie widzimy kodu html, tylko już wyrenderowaną stronę z uwzględnieniem styli i naniesionymi obrazkami.