Mam teoretyczne zrozumienie, jak wykonuje się dylatację w obrazie binarnym.implementacja erozji, rozszerzenie w C, C++
AFAIK, Jeśli mój SE (elementem struktury) jest to
0 1
1 1.
gdzie. stanowi centrum, a mój obraz (binarny jest to)
0 0 0 0 0
0 1 1 0 0
0 1 0 0 0
0 1 0 0 0
0 0 0 0 0
więc wynikiem dylatacji jest
0 1 1 0 0
1 1 1 0 0
1 1 0 0 0
1 1 0 0 0
0 0 0 0 0
mam powyżej wyniku poprzez przesunięcie obrazu w 0, +1 (w górę) i i - 1 (lewy) kierunek, według SE, i połączenie wszystkich tych trzech zmian.
Teraz muszę dowiedzieć się, jak zaimplementować to w C, C++. Nie wiem, jak zacząć i jak wziąć zestaw związków. Myślałem o reprezentowaniu oryginalnego obrazu, trzech przesuniętych obrazów i końcowego obrazu uzyskanego przez wzięcie zjednoczenia; wszystko za pomocą macierzy.
Czy jest jakieś miejsce, w którym mogę uzyskać przykładowe rozwiązanie lub pomysły na kontynuowanie?
Dzięki.
A co z przypadkiem, w którym mamy rozmiar jądra MxN = 1x3 gdzie M to szerokość, a N to wysokość? – svlada
Kod miał być jedynie zarysem, a nie rzeczywistą implementacją. Ale jeśli przyjrzysz się uważnie, zobaczysz, że mam do czynienia tylko z jądrami N * N, gdzie N jest liczbą nieparzystą. – Amro
:) Tak, widzę to. Chciałem tylko powiedzieć, że możesz ulepszyć swój kod, dodając kernelWidth kernelHeght i sprawdzając granice. – svlada