Filtr pliku *.bmp w Builderze

0

Jestem studentem 3-go roku informatyki. Na zajęciach z grafiki komputerowej dostałem do napisania program w C++Builder6, która ma za zadanie odczytać plik *.bmp w rozdzielczości 1024x768 w 256 kolorach. Program ma posiadać menu plików. Jakoś napisałem ten program (z pomocą kolegi). Na pewno nie jes on trudny, ale dla mnie TAK, bo niestety wcześniej nie miałem styczności z Builderem.

I teraz mam pytanie:
Jak do tego programu dołączyć jakiś filtr orazu? Filtr może być dowolny.

Bardzo proszę o wskazówki lub komendy potrzebne do uzyskania takiego filtru.

Pozdrawiam.

0

Dowolny filtr?
To polecam np. prosty do wykonania filtr konwolucyjny lub medianowy - prawie taki sam algorytm.

Załóżmy wielkość filtru: 3
taki pseudokod:

for (i=0; i<obraz.szerokość; i++)
for (j=0; j<obraz.wysokość; j++)
NowyObraz[i,j] = sumuj(obraz[i-1,j-1,i+1,j+1]) / 9;

Jest to najprostszy filtr konwolucyjny z '1' w każdym polu maski - rozmywa on obraz. Czyli pobierasz 9 (3x3) wartości pixeli - wyliczany i 8 jego sąsiadów, sumujesz ich wartości i dzielisz przez 9 (to zwykła średnia arytmetyczna). Otrzymaną wartość wstawiasz w miejsce wyliczanego pixela. Oczywiście przy krawędziach nie da się pobrać 9 wartości - pobierasz tyle ile można (np. 4 w samym rogu) i dzielisz przez ilość pobranych pól (4 w rogu, 6 przy krawędzi).

Na google znajdziesz dziesiątki gotowych rozwiązań, ale spróbuj sam.
Powodzenia :]

1 użytkowników online, w tym zalogowanych: 0, gości: 1