Страница 1 из 1
Статистика индексного растра
Добавлено: 25 сен 2011, 19:19
Boris
Вопрос - чем посчитать статистику пикселей в индексном растре. Растр - результат классификации 16 бит, 1 канал, формат Geotiff. Надо узнать каких пикселей сколько. Причем узнать точно по номеру цвета. Предпочтительно из командной строки.
Все, что удалось найти, пытается строить гистограмму и распределение, которые не имеют в этом случае практического смысла.
Re: Статистика индексного растра
Добавлено: 25 сен 2011, 19:37
Voltron
Re: Статистика индексного растра
Добавлено: 25 сен 2011, 19:54
gamm
Boris писал(а):Вопрос - чем посчитать статистику пикселей в индексном растре. Растр - результат классификации 16 бит, 1 канал, формат Geotiff. Надо узнать каких пикселей сколько. Причем узнать точно по номеру цвета. Предпочтительно из командной строки.
традиионно предлагаю использовать R, который вызвать из командной строки (без GUI, там и такое есть). А скрипт для R сгененрировать с помощью echo или Питона
либо скрипт заготовить, а имена файлов использовать фиксированные или читать их из файла.
Re: Статистика индексного растра
Добавлено: 25 сен 2011, 20:17
Александр Мурый
gamm писал(а):
традиционно предлагаю использовать R
gamm, куском действующего кода не поделитесь? Многим бы пригодилось.. На примере
этого вот изображения, например (сорри за тафтологию

)
Re: Статистика индексного растра
Добавлено: 25 сен 2011, 20:39
Александр Мурый
Кстати, в GRASS для таких подсчётов есть спец. модуль
r.report. Считает в разных единицах площади, а также кол-во пикселей и процент.
Для упомянутого выше изображения получилось: 69.35% белого, 30.65% чёрного (что подтверждает результаты IM).
Re: Статистика индексного растра
Добавлено: 26 сен 2011, 04:46
Boris
Voltron писал(а):Вот это не подойдет?
А точно подходит? Потому как в статье сказано про бинарный растр. Но я все же попробовал и до вопроса, и после совета. Вот результат:
7694316: ( 0, 0, 0) #000000000000 black
9200148: ( 257, 257, 257) #010101010101 rgb(1,1,1)
PS
Повторная проверка показала - не понят растр Int16. 8-битный растр прочитан и почти правильно выведен. Единственно, что он, как и результате выше, распознан как RGB - 3 одинаковых значения на цвет. Хотя проверяемый растр в один канал.
PPS
Если уж дело опять дойдет до скриптов, то один из результатов
gdalinfo выдает таблицу в 256(?) значений:
<PAMDataset>
<PAMRasterBand band="1">
<Histograms>
<HistItem>
<HistMin>-0.56640625</HistMin>
<HistMax>290.56640625</HistMax>
<BucketCount>256</BucketCount>
<IncludeOutOfRange>1</IncludeOutOfRange>
<Approximate>0</Approximate>
<HistCounts>16468|7677848|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|2586240|2399|0|0|0|0|0|0|5232262|0|0|0|0|0|0|0|0|747096|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|402447|0|0|0|0|0|0|0|0|229704</HistCounts>
</HistItem>
</Histograms>
<Metadata>
<MDI key="STATISTICS_MINIMUM">0</MDI>
<MDI key="STATISTICS_MAXIMUM">290</MDI>
<MDI key="STATISTICS_MEAN">120.69077526844</MDI>
<MDI key="STATISTICS_STDDEV">111.20217906962</MDI>
</Metadata>
</PAMRasterBand>
</PAMDataset>
но задача то типичная... Опять скрипт писать

на питоне

Re: Статистика индексного растра
Добавлено: 26 сен 2011, 07:25
gamm
amuriy писал(а):gamm, куском действующего кода не поделитесь? Многим бы пригодилось.. На примере
этого вот изображения, например (сорри за тафтологию

)
куском, который читает растр, и делает из него таблицу, я уже делился. Осталось напечатаь таблицу, код простой
print(table(p$Ch1))
предполагается, что растр загружен в data.frame p, и Ch1 - имя столбца с данными.
Re: Статистика индексного растра
Добавлено: 26 сен 2011, 12:06
ericsson
IM бывает q8 и q16, второй, по идее, должен выдавать все как надо. (не могу проверить - у меня q8, а сносить-ставить не хочется).