Удалить ошейник из файла ECW (Мозаика ортофото)

9

Возможно, я упускаю основную концепцию, когда дело доходит до манипулирования / удаления значений из мозаики RGB orthophoto. Можно ли полностью исключить ошейник (черный фон) из мозаики ортофото в формате ECW. Я смог сделать это в формате TIFF, но файл должен быть в формате ECW, так как он очень большой. Я добился ограниченного успеха, используя FME, чтобы выполнить это, но в результирующем файле всегда есть области, которые не удаляются. Надеюсь, все это имеет смысл.

Я открыт для других форматов, которые будут работать, но пока он работает на том же уровне, что и ECW.

У меня есть доступ к FME и ArcInfo.

dchaboya
источник
Я пытаюсь сделать то же самое. Замена воротника вокруг файла .ECW. Кан, вы пришлите мне верстак FME. Спасибо,
Сесилия

Ответы:

8

Это ограничение ранних версий (<= 3.3) формата ECW, которые не поддерживают значения NoData или прозрачность Alpha. Сжатие с потерями еще более затрудняет удаление ошейников, поскольку значения черного не совсем RGB 0,0,0, а различаются.

Чтобы избавиться от ошейника, вам нужно замаскировать / обрезать ошейник и преобразовать изображение в другой формат, который поддерживает значения NoData, маскирующие полосы или альфа-прозрачность. Вы можете использовать ECW, сжатые с использованием версии 4 или более поздней версии ERDAS ECW / JP2 SDK, JPEG2000 или Geotiff.

Есть несколько способов удалить ошейник, я склонен либо нарисовать многоугольник вокруг «хороших» данных и обрезать их, либо использовать утилиту GDAL nearblack .

user2856
источник
Спасибо за ответ. Да, проблема в том, что черный, ну ... не такой уж черный, но колеблется от 0 до 6 (в моем случае). Я пробовал JPEG2000, и хотя размеры сжатия одинаковы, производительность рендеринга намного выше с форматом ECW. MrSID не поддерживает данные?
dchaboya
MrSID имеет ту же проблему с версией формата (GEN3), поддерживаемой ArcGIS 10.0, хотя MrSID GEN4 поддерживает альфа-полосы. Согласно этой теме , поддержка MrSID GEN4 предназначена для выпуска ArcGIS 10.1.
blah238
Утилита GDAL nearblack предназначена именно для случая, когда граница не совсем черная. Wit-color c1, c2, c3 ... cn: (GDAL> = 1.9.0) вы можете искать пиксели рядом с указанным цветом.
markusN
Я попробую утилиту nearblack. Похоже, что все форматы сжатия с потерями не поддерживают нодаты. Может кто-нибудь вкратце объяснить причину, по которой сжатие с потерями не поддерживает нодаты.
dchaboya
Прозрачность альфа-полосы ECW была представлена ​​в SDK v4 (2009). ArcGIS 10.2+ и QGIS 2.2+ поддерживают его для чтения (источник: blog.hexagongeospatial.com/help-ecw-speckled-edges , который хорошо объясняет разницу между пикселями Nodata и альфа-каналом). Я не знаю, как писать.
Мэтт Уилки
5

ECW с 2010 года поддерживает альфа-прозрачность, которая удаляет то, что вы называете «ошейниками». Это устаревшее ограничение только для файлов ECW v3.

Файлы ECW v4 автоматически записываются всеми программами ERDAS с тегом 2010 и выше, в том числе Imagine и ERMapper. Сторонние продукты, использующие v4 SDK, могут поддерживать запись или чтение этой версии файла (чтение доступно для настольных приложений бесплатно). Я не знаю, на месте, обновили ли FME 2012 свою поддержку ECW

Примечание: версии формата ECW обратно совместимы. Если у вас есть файл ECW v4 с определенной альфа-полосой, но вы читаете с приложением, использующим SDK v3, дополнительная полоса будет просто проигнорирована. Посетите веб-сайт erdas.com, чтобы найти бесплатные плагины ECW, в частности, лицензию ArcInfo, в которой будет добавлена ​​поддержка ECW v4.

К сожалению, распространенность компрессоров v3 привела к тому, что многие считают, что ограничения сохраняются, и это как-то ограничение форматов вейвлетов. Это не совсем не так

Ссылки,

Крис Твиди
источник
2

Есть способы манипулировать FME 2012, чтобы снять ошейник. Это сложный процесс, и здесь слишком много текста. Один быстрый способ показать, как это можно сделать, - использовать RasterExpressionEvaluator и выражение

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])

Где MAXPIXVALUE - пользовательский параметр, для которого установлено максимальное значение пикселя, которое считается черным. В моем случае это было около 8. Выражение ищет каждый пиксель и полосу. Если какой-либо один диапазон имеет значение меньше указанного MAXPIXVALUE, он считает, что в этой ячейке нет данных. Если значение пикселя скажем 9,8,8, оно оставит пиксель как есть, потому что одна полоса выше указанного значения.

В моем сценарии я использовал выражение для создания шейп-файла, который точно соответствовал образу, и обрезал оригинальные ecws до шейп-файла, созданного выражением.

Зак Гилберт
источник
Отлично. Попробую. Я подозреваю, что эта операция займет некоторое время для большого набора данных.
dchaboya
Да. Даже очень. Мои наборы данных работают где-то от 2 до 2000 ecws, а рабочая среда работает в среднем 2-48 часов.
Зак Гилберт
Я получаю сообщение об ошибке при попытке запустить его (возможно, неправильно настроил). Поэтому я заменил MAXPIXVALUE на максимальное значение, которое я хочу заменить, например, (2). Теперь я не уверен, как использовать порты. Какие-либо предложения?
dchaboya
Я не уверен. Мне нужно было бы посмотреть на верстак и посмотреть. Пришлите мне по электронной почте свою рабочую среду с файлом журнала с момента последнего запуска. Я посмотрю, что я могу с этим сделать.
Зак Гилберт