Ну собственно, как обещал...
Требуемые средства - listgeo, geotifcp (из Libgeotiff), convert (свежий ImageMagick).
1) Сделать дамп метаданных любого канала в отдельный текстовик через listgeo
2) Для каждого канала, который предполагается использовать в композите, выполняем команду такого вида:
Код: Выделить всё
convert L71169028_02820060620_B10.TIF -alpha set -channel RGBA -fuzz 5% -fill none -floodfill +0+0 black L71169028_02820060620_B10.withalpha.TIF
Параметр fuzz отвечает за то чтобы захватить не совсем черные края.
На выходе получаем тот же файл с убитыми метаданными (привязкой) но двухканальный - восьмибитный greyscale, плюс маска там, где был черный ±5%.
Примечание: если используются "дурные" данные с вырезанными полосами и прочим безобразием (которые с поврежденного спутника, если я не путаюсь в причине их возникновения), можно использовать другой код:
Код: Выделить всё
convert L71169028_02820060620_B10.TIF -transparent black L71169028_02820060620_B10.withalpha.TIF
Он пропишет прозрачность черным точкам не только по краям растра, но и изолированным незначащим точкам среди значащих.
3) Отделяем маску командой
Код: Выделить всё
convert.exe L71169028_02820060620_B10.withalpha.TIF -alpha extract L71169028_02820060620_B10.alpha.TIF
И получаем однобитные маски в виде отдельных файлов.
4) Попарно (1+2)+3 складываем маски командами типа
Код: Выделить всё
convert L71169028_02820060620_B10.alpha.TIF L71169028_02820060620_B20.alpha.TIF -compose Darken -composite L71169028_02820060620_B10_B20.alpha.TIF
convert L71169028_02820060620_B10_B20.alpha.TIF L71169028_02820060620_B30.alpha.TIF -compose Darken -composite L71169028_02820060620_B10_B20_B30.alpha.TIF
Наложение растров Darken эквивалентно логическому пересечению, если незначащие части - черные, значащие - белые.
5) Убиваем получившиеся файлы *_withalfa.TIF - они больше не нужны.
6) Через geotifcp вернуть файлу L71169028_02820060620_B10_B20_B30.alpha.TIF привязку из дампа, который был сделан на первом шаге. Далее эту маску можно использовать где угодно вместе с исходными растрами.