RSS Feed

Seam Carving (3)

Zupdatowałem źródło projekciku Seam Carving.

Troszeczkę przesadziłem z designem aplikacji. No ale od czegoś trzeba zacząć. Już wiem z czym to się je.

Aplikacja Rozdzielona jest na trzy moduły.

-UI w Formsach
-Silnik Algorytmu
-Silnik Graficzny

Silnik Graficzny:


IEnergyCalculator: – interfejs klasy liczącej energię
EnergyCalGradient – liczenie gradientu
IImageProcessor – interfejs klasy przetwarzającej obraz
GdiImageProcess – przetwarzanie przy pomocy GDI+ i LockBitów
IPixelManipulator – interfejs klasy modyfikującej pixele
PixelColor -kolorowanie pixeli
PixelRemove – usuwanie pixeli

Silnik Algorytmu


ISeamManipulator : – interfejs klasy operującej na Seamach
DynamicSeamManipulator – dynamiczne usuwanie seama
DynamicSeamManipulatorWithMark – to samo ale z zaznaczaniem seama
StaticSeamManipulator – statyczne seamy [nie obsługiwane]
StaticSeamManipulatorWithMark

Psuedo kod aplikacji:


for 1 to n do
{
1. Wczytanie Obrazka
2. Wybranie Parametrów przetwarzania bitmapy
3. Wywołanie algorytmu SeamCarving
4. Wywołanie metody ManipulateSeam ISeamManipulatora
5. Wyliczenie Energi Obrazka wywołanie metody Energy silnika graficznego ktora jako jeden parametr przyjmuje interfejs IEnergyCalculator
6. Wyznaczenie Seama
7. Wywołanie silnika graficznego i metody przetwarzającej obrazek na podstawie seama.
}

Zastosowanie interfejsów pozwoliło mi stworzyć mniej powiązane klasy. Teraz np jak chcę policzyć Energię inną funkcją wystarczy , że stworzę klasę i odpowiednio zaimplementuje interfejs.W paru miejscach oczywiście przesadziłem m.in łamiąc regułę YAGNI ( You Aren’t Gonna Need It)

Testy

Energia

Obrazek Po Skalowaniu

Na razie projekcik jest na wstrzymaniu. Jak ktoś ma jakieś uwagi , pytania to proszę pisać.
Projekt “SeamCarving”

Advertisements

2 Comments on “Seam Carving (3)”

  1. Piotrek says:

    czy aby troszke na tym obrazku lewa czesc nie zostala na chama ucieta :)?

    • LaM says:

      Ano rzeczywiście takie można odnieść wrażenie 😀 Przyjadę do Wrocławia to pozmieniam przykłady ;]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s