Per aspera ad astra.

Главная страница | Методики | Карты | Программы | Справка | Проекты | Ссылки
  • Скрипты для подсчёта площадей полигонов в квадратных метрах в проекции Geographic.
  • Коллекция расширений для ArcView.
  • Набор *.sml файлов для перепроецирования покрытий ArcInfo.
  • Программа распознавания цветов MagicMap.
  • Программа для копирования пути Path2Clipboard.
  • Алгоритм генерализации и удаления узких перемычек.
  • Алгоритм автоматического удаления чёрных полей по границе растрового изображения.
  • Алгоритм автоматического удаления чёрных полей по границе растрового изображения в пакетном режиме.

    Всем, кто работает с космическими снимками в Erdas'е, хорошо известна проблема появления больших чёрных полей после трансформации изображения, например, перепроецирования (Reproject Images) в другую проекцию (рис. 1). Чёрные поля имеют значение "0" во всех каналах, и, поэтому, если такой снимок загрузить в ArcView 3.x как Image Analysis Data Source, они по умолчанию сделаются прозрачными и в работе мешать особо не будут. Однако они занимают немало места на жёстком диске и замедляют любые манипуляции с таким изображением.
    Появление чёрных полей
    Рисунок 1. Появление чёрных полей. Исходный снимок в проекции UTM (слева) и после перепроецирования (Reproject Images) в проекцию Альберса (справа). Область за пределами красной рамки — поля, которые можно безболезненно удалить за ненадобностью (55 Кб).

    NB

    Если снимок загружен в ArcView 3.x как Image Analysis Data Source, то для того, чтобы чёрные поля увидеть, нужно отключить галочку Display background as transparent, либо изменить значение фона (Background value) в редакторе легенды (Legend Editor) к растровой теме.

    Для того, чтобы сэкономить место на винчестере можно предложить перевести такие изображения в компрессированный формат, например, Run-Length Encoding (ESRI) для *.img или LZW для *.tif. Либо использовать сжатые тома на жёстком диске для хранения таких изображений. Но лучше всё-таки эти поля удалить. Обладатели лицензии ARC/INFO WorkStation могут использовать простенький пакет, который можно скачать здесь: cropimages.zip (831 байт).
    Для запуска пакета, необходимо исходные изображения в *.img формате, в которых нужно удалить поля, скопировать в одну директорию. В эту же директорию следует поместить две aml'ки из указанного выше архива. В командной aml'ке (command.aml) следует связать переменную .source с именем исходного изображения, а переменную .threshold с пороговым значением яркости, меньше которой пиксель будет считаться чёрным. Например, если у вас имеется три снимка, называемые 136020_740222.img, 137018_731226.img и 139018_730829.img, то aml'ка должна выглядеть так:

    &sv .source = 136020_740222.img; &sv .threshold = 1; &run crop.aml
    &sv .source = 137018_731226.img; &sv .threshold = 1; &run crop.aml
    &sv .source = 139018_730829.img; &sv .threshold = 1; &run crop.aml

    В данном примере к чёрным полям будут отнесены пиксели со значением 0 во всех каналах. Переменная .threshold нужна для того, чтобы отрезать поля содержащие ненулевые значения. Например, если в полях в некоторых каналах содержится значение 1, то переменной .threshold следует присвоить значение 2. То есть, так:

    &sv .source = 136020_740222.img; &sv .threshold = 2; &run crop.aml
    &sv .source = 137018_731226.img; &sv .threshold = 2; &run crop.aml
    &sv .source = 139018_730829.img; &sv .threshold = 2; &run crop.aml

    Если необходимо удалить поля в десятках и сотнях файлов, следует просто повторять строку, подставляя каждый раз новое имя изображения. Для создания командной aml'ки годится любой текстовый редактор. Для создания списка *.img файлов можно использовать программу Path2Clipboard, либо команду dir, например, так:
    dir /b *.img > command.txt
    Теперь остаётся запустить arc &run command.aml. Пакет сам определит количество каналов (Bands) в снимке, рассчитает габариты полезной информации, обрежет изображеие и сохранит результат в папке result с тем же именем, что и исходный файл (рис. 2).
    Результат
    Рисунок 2. Результат работы пакета. Снимок обрезан по красной рамке. В итоговом изображении (справа) осталась только смысл содержащая информация (64 Кб).

    NB

    Пакет лучше будет работать под управлением ARC/INFO 8.x.x. и выше. Тем, кто работает в ARC/INFO 7.x.x., придётся потом отдельно рассчитывать пирамидальные слои. Кроме того, старые версии ARC/INFO постоянно выдают предупреждение о возможной нехватке места на жёстком диске.

    Итоговое изображение теперь занимает значительно меньше места на винчестере. Так, в приведённом примере снимок с полями занимал 492 мегабайта, без полей — 275 мегабайт.
    Ежели в дальнейшем с изображением планируется делать нечто большее, чем просто визуально анализировать, то имеет смысл проделать ещё пару операций. Дело в том, что ARC/INFO не совсем корректно производит экспорт в *.img формат — не сохраняет информацию о единицах измерения и проекции.
    Для восстановления единиц измерения в автоматическом режиме в Erdas'е можно использовать пакетный файл ChangeUnits.bcf (345 байт). Для этого запустите Erdas, затем в меню Session — Open Batch Command File ..., открываете ChangeUnits.bcf и далее следуете указаниям системы (на втором шаге нужно выбрать все обрабатываемые изображения). Единицы измерения изменятся на метры.
    Для восстановления проекции и расчёта пирамидальных слоёв запустите Erdas, затем в меню Tools — Image Command Tool (рис. 3).
    Панель Image Command Tool
    Рисунок 3. Панель Image Command Tool (6 Кб).

    Загрузите первый снимок. Далее поставьте галочку Compute Pyramid Layers (для пользователей ARC/INFO 7.x.x.) и Change Map Projection. Затем в опциях (Options напротив Change Map Projection) установите нужную проекцию. После этого одним пакетом (кнопка Batch) обрабатываете все изображения.
    Восстановление единиц измерения и проекции занимает считанные секунды.

    NB

    Ни в коем случае не следует устанавливать единицы измерения (Change Map Model) с помощью панели Image Command Tool для нескольких файлов в пакетном режиме. Erdas поменяет координаты левого верхнего угла каждого снимка на одинаковые (взятые из первого снимка). Использовать указанный выше пакетный файл ChangeUnits.bcf для этих целей следует.


    ___________________
    Спасибо П. Потапову за оказанные консультации по Erdas Imagine.

    О проекте | Копирайт | E-mail