kategorie: ANSI C, C++
[#1] Biblioteka do image processingu?
Szukam jakiejś opensourcowej biblioteki do image processingu, która bez problemu skompilowałaby się pod MorphOS, AmigaOS4, poprawnie działała na procesorach PowerPC (big endian) i pozwalała się używać w kodzie C++ (sama biblioteka może być w C).

Co rozumiem przez "image processing"? A no ładuję do pamięci dane obrazka i przy pomocy (mam nadzieję licznych) funkcji biblioteki robię na tym obrazku różne operacje typu: operacje na kolorach (np. kontrast, nasycenie), transformacje (np. skalowanie, obroty), operacje na kanale alpha, różne tryby nakładania na siebie dwóch obrazków.

Zetknął się ktoś kiedyś z taką biblioteką?

Oczywiście poszperam sobie na Google ale gdyby ktoś znał coś sprawdzonego już w amigowych warunkach to proszę o info.

Ostatnia aktualizacja: 01.07.2017 21:44:10 przez MDW
[#2] Re: Biblioteka do image processingu?

@MDW, post #1

Jak poczekasz z rok to będzie to w Reggae (na razie w 3.10 tylko Crop i Resize)
[#3] Re: Biblioteka do image processingu?

@michal_zukowski, post #2

Pewnie poczekam, bo tak sobie tylko głośno myślę. Fajnie, że Raggae się rozwija. Na pewno lepiej wykorzystywać do takich celów systemowe rozwiązania.

Na razie z opisu funkcji nawet całkiem spodobało mi się to:
http://www.vips.ecs.soton.ac.uk/index.php?title=VIPS

Ostatnia aktualizacja: 01.07.2017 21:54:53 przez MDW
[#4] Re: Biblioteka do image processingu?

@michal_zukowski, post #2

Siedzisz raczej w obrazie ale może orientujesz się jak jest z dźwiękiem? Mając jakiś wielki np. WAVE jestem w stanie czymś wykonać na nim bardzo proste operacje? Tutaj wystarczyłoby dosłownie tylko ciszej/głośniej. Na dźwięku ja się zupełnie nie znam niestety.
[#5] Re: Biblioteka do image processingu?

@MDW, post #4

Oj, z dzwiekiem to trzeba pytać Krashana.
Na Amigę 68k był fajny pakiet Sview5 - i on mial dość dużo operacji graficznych do wykorzystania.
[#6] Re: Biblioteka do image processingu?

@michal_zukowski, post #5

Krashan to chyba faktycznie najlepsze źródło wiedzy w sprawach dźwięku.

Sview5 to chyba były takie jakieś narzędzia dla użytkowników, nie? Mi bardziej chodzi o coś co mogę w swoim programie wykorzystać.
[#7] Re: Biblioteka do image processingu?

@MDW, post #1

Proszę bardzo:

Biblioteka do image processingu dla Amiga OS3, OS4 i MorphOS.

Image processing kernel
[#8] Re: Biblioteka do image processingu?

@Hexmage960, post #7

Aminet... tam nie szukałem. szeroki uśmiech Popatrzę jakke to ma funkcje. Chociaż trochę zniechęca mnie fakt, że ostatnio ktokolwiek dotykał tego kodu 12 lat temu.
[#9] Re: Biblioteka do image processingu?

@MDW, post #1

Szukam jakiejś opensourcowej biblioteki do image processingu


Może dałoby się skorzystać z ImageMagick (nie wiem jak tam z endianami)
.
[#10] Re: Biblioteka do image processingu?

@MDW, post #8

Rzeczywiście trochę wiekowe to archiwum, choć myślę, że jak na warunki amigowe to całkiem nieźle. Jest w nim wersja przeznaczona dla MorphOSa co powinno Cię ucieszyć.

Ten kod ktoś jednak tykał w roku 2016, bo ktoś wrzucił wersję, tylko że... zoptymalizowaną pod kątem Amig z M680x0.

Mam nadzieję, że pomogłem.

Jeśli potrzebujesz jednak bardziej aktualnych rzeczy to rzeczywiście powinieneś poszukać jakiejś open-source, jak radzi rePeter.
[#11] Re: Biblioteka do image processingu?

@Hexmage960, post #10

Hexmahe960, rePeter:
Dzięki za pomoc. Będę się rozglądał. Wygląda na to, że coś tam jest. Tym bardziej, że ja wiele nie potrzebuję. Poza tym na razie tak sobie tylko badam ewentualne możliwości. Po drodze jeszcze muszę znaleźć czas na nauczenie się prawdziwego amigowego API.
[#12] Re: Biblioteka do image processingu?

@MDW, post #1

tu znalazłem informację, że Hollywood korzysta z OpenCV. To jest tak wszechstronny kombajn do grafiki, że warto byłoby z nim spróbować, tylko nie mogę nigdzie znaleźć ani specjalnej wersji ani informacji czy oficjalna paczka się buduje pod aos/mos.
[#13] Re: Biblioteka do image processingu?

@michal_zukowski, post #2

@ rzookol
Kto teraz w Teamie rozwija Reggae?
[#14] Re: Biblioteka do image processingu?

@MDW, post #4

Mając jakiś wielki np. WAVE jestem w stanie czymś wykonać na nim bardzo proste operacje?
Interesuje Cię to od strony programowej (sam chciałbyś napisać kod), czy potrzebujesz gotowego narzędzia?

W pierwszym przypadku można zestawić kilka bloków Reggae, dzięki czemu WAVE zostanie zdekodowany i będziesz pracował po prostu na ciągu próbek (np. 16-bitowych). Manipulacja głośnością to nic innego jak mnożenie przez współczynnik.

Jeżeli chcesz gotowego narzędzia, to sięgnij po program Sox.
[#15] Re: Biblioteka do image processingu?

@R-Tea, post #13

Grafikę i pochodne to ja. Część muzyczną nikt.
[#16] Re: Biblioteka do image processingu?

@Krashan, post #14

Interesuje Cię to od strony programowej (sam chciałbyś napisać kod), czy potrzebujesz gotowego narzędzia?

Chciałbym sam programowo zmodyfikować zdekodowany WAVE.

W pierwszym przypadku można zestawić kilka bloków Reggae, dzięki czemu WAVE zostanie zdekodowany i będziesz pracował po prostu na ciągu próbek (np. 16-bitowych). Manipulacja głośnością to nic innego jak mnożenie przez współczynnik.

Brzmi bardzo zachęcająco i nie tak strasznie jak mi się wydawało. Tak zmodyfikowaną próbkę potem mogę zakodować przy pomocy Raggae znów do np. WAVE?

O ile pixele jeszcze jakoś czuję to w świecie dźwięku jestem zupełnie zielony. Nawet sobie nie wyobrażam jak ciągi bajtów są zamieniane na dźwięk.
[#17] Re: Biblioteka do image processingu?

@MDW, post #16

Tak zmodyfikowaną próbkę potem mogę zakodować przy pomocy Raggae znów do np. WAVE?
Jak najbardziej.
O ile pixele jeszcze jakoś czuję to w świecie dźwięku jestem zupełnie zielony. Nawet sobie nie wyobrażam jak ciągi bajtów są zamieniane na dźwięk.
Podobnie jak ciągi bajtów są zamieniane na obraz, tylko prościej. Wyobraź sobie obrazek, który ma tylko jedną linię pikseli, obrazek jest w odcieniach szarości i poziom tej szarości jest zapisany na 16 bitach. I masz dźwięk. Analogią regulacji wzmocnienia dźwięku jest regulacja kontrastu obrazu.
[#18] Re: Biblioteka do image processingu?

@Krashan, post #17

Całkiem obrazowo to przedstawiłeś. OK Potrafię sobie wyobrazić obrazek 1D. Tylko nie rozumiem jak z tej jednej wartości w danym momencie można wyczarować różną głośność, inną barwę, wysokość dźwięku. Jakoś to do mnie nie przemawia. No za mało danych!

A tu już zapytam z czystej ciekawości.
Załóżmy, że mamy już kawałek pamięci ze zdekodowanym dźwiękiem. Jest jakaś wielka tablica z wartościami short (int16). Co z tym zrobić żeby to zamieniło się w dźwięk płynący z głośnika? Są do tego jakieś funkcje systemowe (AHI?), którym daje się wskaźnik na taką tablicę, ustawia parametry (jakieś częstotliwości, informacja czy to jest mono czy stereo, typ danych) i to wystarczy?
[#19] Re: Biblioteka do image processingu?

@MDW, post #18

Tylko nie rozumiem jak z tej jednej wartości w danym momencie można wyczarować różną głośność, inną barwę, wysokość dźwięku.
Nie można. Tak samo jak z jednego piksela obrazka nie można wyczarować kompozycji, wrażenia perspektywy, faktury, znaczenia przedstawionych na obrazie symboli i figur. O ile obrazek potrzebuje dwóch wymiarów przestrzeni, o tyle dźwięk potrzebuje wymiaru czasu. Gdybyś miał analogowo zapisany wspaniały utwór muzyczny i odtworzył z niego 0,01 sekundy, to usłyszysz tylko trzask. Mimo tego, że w tym czasie ten utwór zapisany w jakości CD ma 441 próbek.

Co z tym zrobić żeby to zamieniło się w dźwięk płynący z głośnika?
1. Możesz wziąć klasę Reggae memory.stream, połączyć ją z obiektem klasy audio.output, wykonać na tym ostatnim metodę MMM_Play().
2. Możesz wykorzystać jedno z dwóch API jakie oferuje AHI (albo w stylu device, albo library).
3. Na klasyku możesz umieścić próbki w chip RAM, po czym ustawić i odpalić kanał DMA Pauli .
[#20] Re: Biblioteka do image processingu?

@Krashan, post #19

dźwięk potrzebuje wymiaru czasu.

No właśnie jakiegoś wymiaru mi brakowało. Teraz wszystko zaczyna się układać w jakiś sensowny obraz (a właściwie dźwięk).

Możesz wziąć klasę Reggae memory.stream, połączyć ją z obiektem klasy audio.output, wykonać na tym ostatnim metodę MMM_Play().

Bardzo zgrabnie i tak "dzisiejszo" pomyślane. Domyślam się, że jest też coś w stylu "disk.stream"?

Dzięki za wyjaśnienia. Wyjaśniając te podstawy rozjaśniasz nieco jeden z najciemniejszych zakamarków mojej niewiedzy. Wydaje mi się, że programowanie dźwięku też może być fajne. Może nawet tak fajne jak programowanie obrazu.
[#21] Re: Biblioteka do image processingu?

@MDW, post #20

Domyślam się, że jest też coś w stylu "disk.stream"?
Tak, file.stream dokładniej. Z tym, że to ma sens wtedy, jeżeli miałbyś na dysku taką surową tablicę int16. Jeżeli masz tam plik w jakimś typowym formacie, to wystarczy wywołać MediaNewObject() z nazwą pliku i "file.stream" jako typ strumienia danych. Wtedy Reggae samo rozpozna format, stworzy i połączy odpowiednie obiekty: strumienia, demultipleksera (czyta nagłówek, zbiera metadane) i dekodera (dekoduje strumień), umieszczając je w grupie i zwróci jeden gotowy obiekt, z którego można pobierać te int16 (albo floaty albo int32 jak sobie pan programista zażyczy).

Dzięki pracy Rzookola tak samo jest też z obrazkami. Jednym wywołaniem funkcji możesz mieć dwuwymiarową tablicę pikseli ARGB z obrazka PNG, JPG czy kilkunastu innych formatów. Nawet Cię nie obchodzi jakich.
[#22] Re: Biblioteka do image processingu?

@Krashan, post #21

Proste i genialne jednocześnie. Datatypy to jedyny uporządkowany i wykorzystywany przez aplikacje i użytkowników mechnizm "ogarniania" danych różnych formatów. A Raggae to rewelacyjne rozwinięcie tej idei. I to nawet biorąc pod uwagę także władców tego świata (Windows, macOS, Linux). Jeżeli chcemy na przykład do Photoshopa wczytać obrazem w formacie SunRaster to nie ma siły żeby to zrobić jeżeli Adobe nie doda loadera SunRaster (a na pewno tego nie zrobi, bo wiele wersji temu usunęło kilkanaście formatów). Może dałoby się napisać jakiś plugin ale będzie on działał tylko w Phtotoshopie. A w AmigaOS/MorphOS można sprawić żeby aplikacja, której kod źródłowy już nie istnieje i ostatni build był zrobiony 20 lat temu, wczytała plik w formacie, który powstał w 2017 roku. I to może zrobić użytkownik wrzucając do dwóch katalogów dwa pliki (datatypes). To mi się tak bardzo podoba, że system Datatypes i Raggae podaję jako przykład rozwiązania o którym dzisiejsze systemy operacyjne nawet nie mogą pomarzyć. szeroki uśmiech
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem