Asynchroniczne filtrowanie obrazu.

0

Cześć, jak w tytule dostałem za zadanie napisania programu który będzie asynchronicznie wykonywał 200 iteracji filtru splotowego na obrazie. Następna iteracja potrzebuje wyniku poprzedniej. To jest moim jedynym problemem nie wiem co zrobić aby następna iteracja mogła się wykonywać nie czekając na wynik poprzedniej, przychodzą Wam do głowy jakieś pomysły?

4

Nie wiem, czy dokładnie Ci chodzi o filtrowanie obrazu 200 razy, ale kolejną filtrację możesz zacząć już dla części obrazu. Jeśli robisz filtrację dla maski 3x3 to po obliczeniu wszystkich 9 punktów w masce, możesz już obliczyć na pewno punkt środkowy w następnej iteracji. A jeśli obliczysz obszar o rozmiarze 4x4 (przesuwasz maskę rzędami) to możesz w następnej iteracji liczyć wszystkie 9 punktów pierwszej maski (zakładam, że zaczynasz liczyć od górnego lewego rogu, a punkty brzegowe liczysz na podstawie mniejszej liczby sąsiadów). I ta zasada odnosi się do każdej kolejnej iteracji. Z tego wynika, że asynchronicznie nie filtruj całego obrazu, ale kolejne rzędy obrazu, po obliczeniu 2 pierwszych rzędów, możesz zacząć filtrować pierwszy rząd następnej iteracji, gdy obliczysz trzeci rząd pierwszej iteracji uruchamiasz filtrowanie drugiego rzędu drugiej iteracji itd. Zatem trzecią iterację możesz uruchomić gdy masz skończone dwa rzędy drugiej iteracji i trzy rzędy pierwszej. Czyli każdą następną iterację uruchamiasz z opóźnieniem jednego wiersza.

0

Też na taki pomysł wpadłem, ale chwilę mi to zajęło. Dzięki za odpowiedź ;)

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