pole obszaru - plik graficzny??

0

mam prosty (np. jedna figura) plik graficzny, w jaki spoosb najlatwiej/najszybcjej obliczyc jego pole
ogolnie chyba trzeba policzyc jakas calke, nawet chyba podwojna ;)
plik otworzyc binarnie???
dzieki za rady

0

Wedlum mnie sa dwa wyjscia:

1.analityczne: czyli skanujesz plik po 'x', znajdujac dla kazdej linii pionowej zapalone pixele(lepiej, zeby bylo czarno-biale), robisz z nich tablice, aproksymujesz np. wielomianem i liczysz calke z wielomianu. Problemow moze byc kilka:

  • punkty blisko siebie powinny byc brane jako jeden, wiec trzeba ustawic jakis margines
  • punkty nalezace do dwoch krzywych powinny byc w oddzielnych tablicach - wiec tablic tyle samo co linii
  • samo wyliczenie calki
  1. Lopatologiczne, czyli policzenie pixeli znajdujacych sie w zamknietym obszarze... :)

pozdrawiam
johny

0

ale zeby moc skanowac, trzeba chyba ten plik otowrzyc binarnie (w jaki sposob)???
zalozmy, ze prosty obrazek (kolo, elipsa ..) jest czarny (ale tlo), chce obliczyc pole (obwod) tego obszaru
po otwarciu pilku binarnie, ładuje ja do tablicy????
dzieki za pomoc !!!

0

No tak, wypadaloby go otworzyc, zeby moc czytac :) Poczytaj sobie o klasach BufferedImage i metodzie getRGB, ImageReader i read(), ImageIO i getImageReadersby...
Jesli obrazek jest prosty i chcesz obliczyc obwod, to najlatwiej chyba poszukac pierwszego zapalonego pixela, pozniej liczyc pole do ostatniego pixela w tej linii (oczywiscie suma).
Jesli figura bardziej skomplikowana, to musi byc obszar zamkniety czyli ilosc zapalonych pikseli w linii musi byc parzysta (kazdy otwierajacy ma do pary zamykajacy).
Jesli obwod to policzyc tylko zapalone piksele - oczywiscie jesli wszedzie linia jest jednopikselowa, bo jesli nie to obowiazuje to co pisalem wczesniej o marginesie 'bledu' np. 5 sasiadujacych ze soba zapalonych pikseli to jedna linia.

pozdrawiam
johny

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