Usuń obrożę z pliku ECW (mozaika ortofotyczna)

9

Być może brakuje mi podstawowej koncepcji, jeśli chodzi o manipulowanie / usuwanie wartości z mozaiki ortofoto RGB. Czy możliwe jest całkowite wyeliminowanie kołnierza (czarne tło) z mozaiki ortofoto w formacie ECW. Mogłem to zrobić w formacie TIFF, ale plik musi być w formacie ECW, ponieważ jest bardzo duży. Osiągnąłem ograniczony sukces przy użyciu FME, ale plik wynikowy zawsze zawiera obszary, które nie są usuwane. Mam nadzieję, że wszystko to ma sens.

Jestem otwarty na inne formaty, które będą działać, ale pod warunkiem, że działa na tym samym poziomie co ECW.

Mam dostęp do FME i ArcInfo.

dchaboya
źródło
Próbuję zrobić to samo. Wymiana kołnierza wokół pliku .ECW. Możesz wysłać mi stół warsztatowy FME. Dzięki,
Cecília,

Odpowiedzi:

8

Jest to ograniczenie wczesnych wersji (<= 3,3) formatu ECW, które nie obsługiwały wartości NoData ani przezroczystości alfa. Kompresja stratna sprawia, że ​​jeszcze trudniej jest usunąć kołnierze, ponieważ wartości czerni nie są dokładnie RGB 0,0,0, ale różnią się.

Aby pozbyć się kołnierza, musisz zamaskować / przyciąć kołnierz i przekonwertować obraz na inny format, który obsługuje wartości NoData, paski maski lub przezroczystość alfa. Możesz użyć ECW skompresowanych przy użyciu wersji ERDAS ECW / JP2 SDK, JPEG2000 lub Geotiff w wersji 4 lub nowszej.

Istnieje kilka sposobów na usunięcie kołnierza, zwykle albo narysuję wielokąt wokół „dobrych” danych i przycinam go, albo korzystam z narzędzia GDAL nearblack .

użytkownik2856
źródło
Dzięki za odpowiedzi. Tak, problem polega na tym, że czarny, cóż ... nie jest cały czarny, ale waha się od 0 do 6 (w moim przypadku). Próbowałem JPEG2000 i chociaż rozmiary kompresji są podobne, wydajność renderowania jest znacznie lepsza w przypadku formatu ECW. Czy MrSID nie obsługuje danych?
dchaboya
MrSID ma ten sam problem z wersją formatu (GEN3) obsługiwaną przez ArcGIS 10.0, chociaż MrSID GEN4 obsługuje pasma alfa. Według tego wątku obsługa MrSID GEN4 jest przeznaczona dla wydania ArcGIS 10.1.
blah238
Narzędzie nearblack GDAL jest dokładnie w przypadku, gdy ramka nie jest idealnie czarna. Wit-color c1, c2, c3 ... cn: (GDAL> = 1.9.0) możesz wyszukiwać piksele w pobliżu określonego koloru.
markusN
Wypróbuję narzędzie nearblack. Wygląda więc na to, że wszystkie formaty kompresji stratnej nie obsługują nodata. Czy ktoś może krótko wyjaśnić przyczynę stratnych kompresji, które nie są w stanie obsłużyć węzłów?
dchaboya
Przezroczystość pasma alfa ECW została wprowadzona w SDK v4 (2009). ArcGIS 10.2+ i QGIS 2.2+ obsługują go do czytania (źródło: blog.hexagongeospatial.com/help-ecw-speckled-edges , który dobrze wyjaśnia różnicę między pikselami Nodata a kanałem alfa). Nie wiem o pisaniu.
matt wilkie
5

ECW od 2010 roku obsługuje przezroczystość alfa, która usuwa tak zwane „obroże”. Jest to wcześniejsze ograniczenie tylko w plikach ECW v3.

Pliki ECW v4 są zapisywane automatycznie przez wszystkie oprogramowanie ERDAS oznaczone od 2010 r. I nowsze, w tym Imagine i ERMapper. Produkty innych firm korzystające z zestawu SDK v4 mogą obsługiwać zapisywanie lub czytanie tej wersji pliku (czytanie jest bezpłatne dla aplikacji komputerowych). Nie wiem, czy FME 2012 zaktualizowało obsługę ECW

Uwaga: wersje formatu ECW są kompatybilne wstecz. Jeśli masz plik ECW v4 ze zdefiniowanym pasmem alfa, ale czytasz w aplikacji korzystającej z zestawu SDK v3, dodatkowe pasmo zostanie po prostu zignorowane. Sprawdź witrynę erdas.com, aby uzyskać bezpłatne wtyczki ECW, a konkretnie licencję ArcInfo, która doda obsługę ECW v4

Niestety rozpowszechnienie się kompresorów v3 oznaczało, że wiele osób zakłada, że ​​ograniczenia pozostają, i jest w pewien sposób ograniczeniem formatów falek. To z pewnością nie jest prawda

Bibliografia,

Chris Tweedie
źródło
2

Istnieją sposoby manipulowania FME 2012 w celu usunięcia obroży. Jest to skomplikowany proces i zbyt wiele do pisania tutaj. Jednym szybkim sposobem pokazania, jak można to zrobić, jest użycie RasterExpressionEvaluator i wyrażenia

if(A[0]<$(MAXPIXVALUE)&&A[1]<$(MAXPIXVALUE)&&A[2]<$(MAXPIXVALUE),0,A[0]);if(A[0]<$(MAXPIXVALUE)&&A[1]<$(MAXPIXVALUE)&&A[2]<$(MAXPIXVALUE),0,A[1]);if(A[0]<$(MAXPIXVALUE)&&A[1]<$(MAXPIXVALUE)&&A[2]<$(MAXPIXVALUE),0,A[2])

Gdzie MAXPIXVALUE jest parametrem użytkownika ustawionym na maksymalną wartość piksela, którą należy uznać za czarną. W moim przypadku było to około 8. Wyrażenie przeszukuje każdy piksel i pasmo. Jeśli którekolwiek pasmo ma wartość mniejszą niż podana wartość MAXPIXVALUE, uważa, że ​​komórka nie ma danych. Jeśli wartość w pikselach to 9,8,8, pozostawi piksel bez zmian, ponieważ jedno pasmo jest wyższe niż określona wartość.

W moim scenariuszu użyłem wyrażenia, aby utworzyć plik kształtu, który dokładnie pasuje do zdjęć, i przypiąłem oryginalne pliki ecws do pliku kształtu utworzonego przez wyrażenie.

Zack Gilbert
źródło
Świetny. Spróbuje tego. Podejrzewam, że operacja zajmie trochę czasu na dużym zestawie danych.
dchaboya
Tak. Bardzo tak. Moje zestawy danych działają od 2 do 2000 ecws, a środowisko robocze działa średnio od 2 do 48 godzin.
Zack Gilbert
Występuje błąd podczas próby uruchomienia (prawdopodobnie niepoprawne ustawienie). Więc zastąpiłem MAXPIXVALUE maksymalną wartością, którą chcę zastąpić, tak jak (2). Teraz nie jestem pewien, jak korzystać z portów. Jakieś sugestie?
dchaboya
Nie jestem pewny. Musiałbym spojrzeć na stół warsztatowy i zobaczyć. Prześlij mi e-mailem swój stół warsztatowy z plikiem dziennika od ostatniego uruchomienia. Zobaczę, co mogę z tym zrobić.
Zack Gilbert