Wpis z mikrobloga

Hej mirki z #programowanie,
Potrzebuję w #php wykrywać na obrazku png białą plamę o znacznych rozmiarach.
Poglądowy obrazek poniżej, chcę poznać współrzędne środka białego wyciętego elementu względem całej szerokości obrazka i się zastanawiam jak się za to zabrać.
Jak nikt nie podsunie pomysłu na #php to może być ewentualnie #python.
Z góry dzięki za każde nakierowanie, pomysł czy może gotowiec do przeanalizowania
sebask - Hej mirki z #programowanie,
Potrzebuję w #php wykrywać na obrazku png białą...

źródło: comment_1584365169pA0nsxWJb65mdR9LFl8V69.jpg

Pobierz
  • 8
  • Odpowiedz
@sebask: (algorytm wymyśliłem minutę temu, więc może zawierać jakieś przypadki które należy uwzględnić ale nie powinien być to jakiś wielki kłopot) Jeżeli kolor jest znany, możesz zrobić pustą listę bounding boxów i zrobić pętlę po x,y
jeżeli dany piksel jest szukanego koloru to:
1. Jeżeli piksel po lewej jest częścią bounding boxa, to rozszerz tego bounding boxa o obecny piksel
2. Jeżeli piksel u góry jest częścią bounding boxa, to rozszerz
  • Odpowiedz
@furelsom: Rozwiązanie @furelsom'a czyli zwykłe przeszukiwanie możesz łatwo mocno zoptymalizować poprzez wstępne szukanie białego piksela co N pikseli na zasadzie siatki punktów.
N musi wynosić nie więcej niż minimalny rozmiar "plamy", którą jesteś zainteresowany. W ten sposób, jeśli taka plama jest, to musi zahaczyć o któryś z przeszukiwanych punktów.

Jak już masz biały piksel, to wtedy przeszukujesz piksele dookoła czy też są białe aż do momentu, gdy nie są -
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@sebask: Dla każdego piksela o wartości koloru białego, zrób flood fila począwszy od tego piksela, dzięki któremu zamarkujesz dany obszar na obrazie inną etykietą (w sensie innym kolorem). Potem zrób statystykę ile pikseli jest o danej etykiecie i wybierasz tę o największej ilości pikseli.
  • Odpowiedz
zrób flood fila


@Defined: on już właściwie jest zamarkowany na biały i zazwyczaj nie ma innych tak dużych białych elementów, pytanie jak to wybrać z reszty obrazka
  • Odpowiedz
via Wykop Mobilny (Android)
  • 1
@sebask: no właśnie o to chodzi, że robisz flood fila o innym kolorze dla każdego białego obszaru, a potem liczysz piksele z wartościami, którymi je pokolorowałeś. Najlepiej obraz zbinaryzować wcześniej - wszystko co nie białe staje się czarne.
  • Odpowiedz