Pracuję z dużymi obrazami tiff o wielkości 1 gb, które mają około 20000 x 20000 pikseli. Muszę wyodrębnić kilka płytek (około 300x300 pikseli) z obrazów w losowych pozycjach.wydajna ekstrakcja kafelków TIFF C++
Próbowałem następujących rozwiązań:
libtiff (jedyna biblioteka niski poziom mogłem znaleźć) oferuje TIFFReadline(), ale oznacza, że czytanie w około 19700 zbędnymi pikseli.
Zaimplementowałem własny czytnik tiff, który wyodrębnia kafelek z obrazu bez czytania niepotrzebnych pikseli. Spodziewałem się, że będzie to szybsze, ale wykonanie wyszukiwania dla każdej linii płytki powoduje, że jest bardzo powolny. Próbowałem również odczytać do bufora wszystkie wiersze pliku, które zawierają mój kafelek, a następnie wyodrębnić kafelek z bufora, ale wyniki są mniej więcej takie same.
Chciałbym otrzymywać sugestie, które poprawią moje narzędzie do wyciągania płytek!
Wszystko jest mile widziane, może można zaproponować bardziej wydajne biblioteki mogę używać, kilka wskazówek o C/C++ I/O, jakiś strategii wyższego szczebla dla moich potrzeb, itp
Pozdrawiam, Juan
Czy możemy założyć, że są nieskompresowane? –
A że dane są uporządkowane w liniach skanowania? –
tak, nieskompresowane dane i zorganizowane w sposób najbardziej traditinal: line1 line2 line3 ... – Juan