OpenImageIO - otwarta biblioteka do odczytu i zapisu plików graficznych
Wczoraj minął termin składania aplikacji na GSoC, więc spokojnie, bez strachu o konkurencję, mogę napisać coś o projekcie do ktorego aplikowałem;)
Otóż OIIO to - jak wspomniałem w tytule notki - otwarta biblioteka do odczytywania i zapisywania obrazów 2D, wraz z dostarczonym prostym i uniwersalnym API. Cale API jest niezależne od formatu odczytywanego bądź zapisywanego pliku a obsługa nowych formatów oparta jest na prostm i przyjemnym systemie wtyczek.
Wraz z biblioteką dostarczonych jest kilka aplikacji demonstrujących jej zastosowanie:
- iv - przeglądarka plików graficznych oparta na QT4.5
- iinfo - aplikacja wyciągająca szczegółowe informacje z pliku
- iconvert - aplikacja konwertująca pliki z jednego formatu na inny
- idiff - aplikacja porównująca obrazy
- igrep - aplikacja wyszukująca obrazy, których metadane pasują do podanych
Wszystkie te aplikacje mogą działać na plikach w dowolnym formacie - pod warunkiem, że jest do niego dostępna wtyczka. Obecnie obsługiwane są: TIFF, JPEG/JFIF, OpenEXR, PNG oraz HDR/RGBE
Do projektu przyciągneło mnie kilka rzeczy: wieloplatformowość biblioteki - obecnie działa na Linuksach i OS Xach, jednak z pewnością jeden z aplikujących studentów będzie miał możliwość przeprotowania tego cuda na Windows. Potecjanla liczba użytkowników jest więc całkiem spora.
Drugim powodem są ludzie, którzy nad projektem pracują: pracownicy NVidii, Google(?) oraz Sony Pictures ImageWorks. Kto jak nie oni mogą odpowiednio pokierować człowiekiem, który dopiero zaczyna swoją przygodę z wielkim światem OpenSource? W branży pracują pewnie dłużej niż ja jestem na świecie, więc ich doświadczenie musi być ogromne.
Trzecim jest wielkość projektu. OIIO to nie KDE, GNOMe, ImageMagic czy inny, duży otwarty projekt. Nie ma miliona lini kodu (chociaż trzeba przyznać, że trochę tego kodu jest). Nadal jest tu dużo do zrobienia - także rzeczy prostych (jak drobne poprawki kodu). Dodatkowo powaliła mnie dokumentacja - jak na młody projekt jest całkiem zaawansowana i bardzo szybko wprowadza w tajniki projektu:)
A czwarty powód, który zaważył na tym, że chcę zostać ich deweloperem to licencja. BSD! Owszem - jestem zwolennikiem otwartego oprogramowania. Ale rozumiem też, że są ludzie, którzy chcą tworzyć zamknięte oprogramowanie. Czemu mamy im kazać otwierać swój kod tylko dlatego, że chcą skorzystać z naszego rozwiązania? Jak wolność to wolność. Niech każdy robi z moim kodem to co chce, pod warunkiem, że szanuje moje prawa autorskie do niego!
Jeżeli zainteresowałem Cię projektem - poswięc czas na przejżenie Wikii OIIO. Zajrzyj na dev-liste. Ściągnij kod i zacznij działać:)
Komentarze do wpisu
Możesz śledzić odpowiedzi poprzez kanał RSS. Możesz dodać komentarz lub zostawić ślad (trackback) ze swojego bloga.
Fluxid
Hmm... Czym się ta biblioteka różni od takiego ImageMagick, devil itp? Ostatnio pilnie potrzebowałem załadowania do pamięci tablicy pikseli, przez które mógłbym przeiterować bez jakichś większych problemów. Zacząłem od ImageMagick którego lubię ze względu na jego narzędzia (convert, mogrify) ale okazuje się że jego API, zarówno nisko- jak i wysokopoziomowe jest tak skomplikowane, że sobie dałem spokój. Przejrzałem dokumentacje kilku innych bibliotek, jedne miały wiele funkcji do czytania różnych typów grafik, inne za to wymagały albo podania deksryptora pliku albo załadowania pliku do pamięci i podania wskaźnika, co IMO jest idiotyczne... Zostałem przy GdkPixbuf, który dla moich potrzeb był w zasadzie idealny.
Może się zainteresuję OIIO, w najbliższym czasie pewnie będę potrzebował znowu czegoś do czytania grafik :)
04 kwietnia 2009, 13:17:52
Matthew
@1: Co do tej wieloplatformowości nie jestem całkiem przekonany. Podejrzewam, że będą stosowali hacki by podnieść wydajność biblioteki na kartach GeForce.
@2: Akurat po świecie OpenSource to powinien Ciebie kierować ESR (polecam Katedrę i bazar) lub inni założyciele tego ruchu.
@3: Problem z małymi projektami jest taki, że mają mniej slotów a co za tym idzie jak dużo osób wpadnie na pomysł żeby się do niego zapisać jest trudniej. W dużych projektach jest trudno od początku, ale dostanie się daje większą radochę. :)
@4: To pozostaje pytanie: a co jeżeli ktoś z OpenSource chciałby wykorzystać zamknięty kod? Myślę, że lepszą licencją jest LGPL. Ludzie tworzący zamknięty soft nadal mogą z tego korzysać a jednocześnie nie zabierają Ci tworzej twórczości nie dając nic w zamian.
04 kwietnia 2009, 13:58:28
matekm
@Fluxid: założeniem tego projektu jest własnie proste API: odczytywanie i zapisywanie obrazków, proste manipulacje na nich (wyciąganie jednego kanału, rotacje względem osi). Bardziej skomplikowane rzeczy będzie mógł wykonywać klient, korzystając z tych podstawowych operacji. Zalookaj w dokumentację - masz tam wszystko świetnie opisane: http://www.openimageio.org/openimageio.pdf.
Oczywiście - obecnie biblioteka nie dorasta do pięt ImageMagic, ale kto wie - może za rok, dwa, trzy to się zmieni;)
@Matthew:
ad1: w jaki sposób hacki, by podnieśc wydajność na kartach Nvidii jest sprzeczna z tym, że biblioteka będzie działać na wielu platformach? Ja nie widzę problemu, żeby dołaczył ktoś, kto chciałby podnieść wydajność tej biblioteki na kartach ATI/AMD czy innych producentów. Przecież wszystko jest do zrobienia. O ile ktoś chce faktycznie coś robić.
ad4: Ty wolisz zmuszać ludzi do innych rzeczy tylko dlatego, że korzystają z Twojej pracy. Spoko, tak można. Ja od nich wymagam tylko tego, żeby podali, iż autorem pewnej części programu jestem ja. Jeżeli to zrobią - mogą nawet zarabiać na tym miliony a kod trzymać w najmniej dostępnym świecie na ziemi, mnie to przeszkadzać nie będzie. Rózni ludzie, rózne światopoglądy.
04 kwietnia 2009, 14:24:58
Zal
@Matthew: Co do licencji to aplikując do projektów Tcl-a założeniem było, aby wszystko było realizowane w oparciu o BSD/MIT itp. Tak, aby nic, dosłownie nic, ich nie ograniczało m.in. w przypadku chęci komercyjnego wykorzystania tego, co tam w Tcl-u siedzi ;]
Co do moich projektów to uderzyłem w końcu w dwa:
- Tcl, stworzenie klienta BitTorrenta w oparciu Tcl/Tk oraz zewnętrznych bibliotek napisanych w C, o ile to możliwe - w przeciwnym przypadku zrobienie takiej biblioteki w czystym Tcl-u,
- GNU, zrealizowanie dla MyServer aplikacji w Pythonie i PyGTK do zarządzania serwerem.
Średnio skomplikowane zadania ;] Zobaczymy, co z tego wyjdzie. Większej konkurencji w tych tematach nie mam. Wszystko zależy od slotów oraz preferencji danej organizacji, która określi priorytet tych zadań i może przydzieli im slot ;p
04 kwietnia 2009, 14:32:24
matekm
@Zal: też chciałem aplikować do Tcl-a. Przeraziła mnie jednak "jasność" kodu aplikacji napisanych w tym cudzie;) Ale tak, po pobieżnym zapoznaniu się z Tcl-em, ten klient BitTorrenta może być całkiem ciekawym zadaniem jak bedziesz musiał robić bibliotekę w czystym Tclu. W każdym razie - powodzenia!
04 kwietnia 2009, 14:39:50
Matthew
@1: problem z podnoszeniem wydajności jest taki, że dużo zależy od sterowników. nVidia ludzi robić w sterach hacki na konkretnie aplikacje (a to nagle zaczyna działać jakaś funkcja, lub w innej dostajemy większą wydajność mimo że cała reszta się nie zmienia). To trochę tak jak z Mono i .NET, niby otwarte, niby każdy może robić i rozwijać, niby m$ jest temu przychylne, ale Mono nigdy nie osiągnie możliwości oryginalnego .NETu a co za tym idzie będzie bezużyteczne pod względem przenośności.
@4: Tu nie chodzi o kwestię zmuszania. To oni sami się zmuszają. Nikt im nie każe wybierać akurat mojego kawałka kodu. Po prostu uważam, że skoro już ktoś wziął coś z OpenSource to powinien także dać coś od siebie. Tym bardziej że firmy biorą a później nagle mogą Cie potraktować patentami.
Co do kwesti zmuszania to akurat masz więcej na sumieniu niż ja. Ja stawiam sprawę jasne: korzystam z X, przy pomocy Y, z wykorzystaniem narzędzia Z. Co reszta z tym tym zrobi to już nie mój problem. Nigdy nie powiem, że ktoś powinien używać A czy B, najwyżej powiem, żę jest głupi że używa C. ;]
Ty za to otwarcie mówisz, że wszyscy powinniśmy używać VS i że reszta ssie. Że nie ma alternatywy. Sorry, Linux za free dostarcza mi lepszych narzędzi do kodzenia niż VS.
A do co bibliotek to polecam GIL'a przygotowanego przez ludzi z Adobe (projekt jest również używany w narzędziach Adobe).
04 kwietnia 2009, 14:46:13
matekm
Na Widowsach dla VS nie ma alternatywy;] Przynajmniej ja takiej nie znam. Co do Linuksow, tak, oczywiście, zmuszałem Linuksowców, żeby korzstali z narzędzia, którego nie ma na ich systemach xD. I'm baaaad!
04 kwietnia 2009, 14:52:22
Michał Górny
Ta, i będzie kolejna wspaniała, wieloplatformowa, uniwersalna, przecudowna biblioteka, która będzie miała uprościć życie wszystkim ludziom na świecie, a w praktyce będzie zaśmiecać ludziom systemy, będąc używana przez jeden program…
04 kwietnia 2009, 23:14:32
skk
Stary wątek, ale dorzucam swoje trzy grosze:
zasadnicza różnica między tym projektem a innymi wspomnianymi jest taka, że jest to biblioteka rozwijana pod kontem konkretnej branży, a mianowicie animacji komputerowej i VFX. Piszą ją ludzie związani z branżą filmową na czele z Larrym Gritzem, legendą w tym biznesie, współtwórcą Pixar Photorealistic Renderman, Blue Moon Rendering Tool, Entropy, Gelato, Open Shading Language itd. To są kamienie milowe dla obeznanego w temacie (L. Gritz miał rzeczywiście romans z Nvidią (po rozstaniu z Pixerem i awanturką z Exluną, ale obecnie pracuje dla studia Sony Imageworks).
I to chyba tyle. Zamiast setek funkcji ImageMagic, dla ludzi związanych z animacją i efektami filmowymi liczy się solida obsługa kilku formatów branżowych, automatyczne zarządzenie cachem (bo pracujemy na wielkich plikach, a nie jak np. internat na małych) i inne mało sensowne dla kogoś spoza zdania (jak grepowanie plików po metadanych).
Ot, cała tajemnica. Wątpię, aby ambicją L.Gritza była pisanie alternatywy dla popularnych bibliotek ogólnego użytku.
pozdrawiam,
skk.
01 listopada 2011, 11:24:16
Dodaj komentarz