filtr konwolucyjny

0

Czesc!
Czy ktos wie jak napisac taki program, który wyswietla wybraną przez uzykownika mape bitową oraz rezultat zastosowania do niej filtru konwolucyjnego?Uzytkownik moze ustalac rozmiar jadra konwolucji oraz wartosc filtru i podzielnika. Program pozwala takze wybrac ustawienia spoposrod predefiniowanych kilku typowych rodzajow filmu.
Byloby milo jakby ktos wiedzial jak sie do tego zabrac, bo ja na razie noga z programowania ;)
Dzieki :)

0

Tak, ja wiem jak sie do tego zabrać...

  1. Wczytać bitmape do tablicy dwuwyiarowej (jeśli nie wiesz jak: Google prawde Ci powie)
  2. Wczytac filtr tez do tablicy dwywymiarowej np. 3x3.
  3. Zastosowac na bitmapie filtr konwolucyjny, tj. stworzyc w pamieci pusta bitmape o tych samych rozmiarach i przejchac filtrem po oryginalnej zapisujac wyniki w drugiej.

Idea:

int Podzielnik = ...;

for (int X = 1; X < SzerokoscBitmapy - 1; X++)
for (int Y = 1; Y < WysokoscBitmapy - 1; Y++) {
    int Suma = 0;
    for (int I = -1; I <= 1; I++)
	for (int J = -1; J <= 1; J++) 
		Suma += Bitmapa[X + I][Y + J] * Filtr[I + 1][J + 1];
    Suma /= Podzielnik;     
    KopiaBitmapy[X][Y] = Suma;
}

Trzeba by jeszcze dodac zabezpieczenie przed przekroczeniem zakresu 0-255. Oczywiscie filtr stosujesz na kazdym kanale RGB osobno, jesli masz bitmape kolorowa.

0

Dzieki wielkie, wiem juz dalej o co chodzi :)
Miło było i pozdrawiam!!!

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