Страница 1 из 1

Расчет среднего значения пикселей в envi

Добавлено: 17 фев 2015, 21:59
Борисфенка
Добрый день! интересует вопрос. Есть файл с 17 каналами. каждый канал несет одинаковый вид инфо за конкретную дату (допустим какой-то индекс).нужно взять среднее значения с 17 каналов для каждого пикселя. Задача усложняется, тем что в некоторых каналах есть так сказать "выпавшие" пиксели с ложными значениями, но они (пиксели) в разных местах. То есть, например, 1 пиксель в 15 каналах имеет "правильное" значение и в 2 - "неправильное". Это неправильное значение конкретно определенно - 100. Таким образом,если значение пикселя в конкретном канале -100 , его нужно исключить с расчета и использовать только остальные 14. Вот думаю, есть ли возможность реализовать данное условие в Math bands?

Re: Расчет среднего значения пикселей в envi

Добавлено: 18 фев 2015, 07:26
URIIT
Сначала для каждого канала выставляем значение 100 в ноль:

Код: Выделить всё

b1*(b1 ne 100)
Потом просто суммируем все каналы и делим на их количество:

Код: Выделить всё

(b1 +  b2 + b3...) / 17

Re: Расчет среднего значения пикселей в envi

Добавлено: 18 фев 2015, 11:16
Борисфенка
спасибо за ответ! Вы наверно в первой формуле имели ввиду

Код: Выделить всё

(b1 eq 100)*0
но , тогда мы включаем этот ноль в расчет и эти нули приравниваются к "правильному" значению, что не есть таким, потому что по сути эти пиксели никакой инфо не несут, а каждый ноль играет роль в правильности расчета поскольку от него зависит знаменатель в формуле среднего значения. + ко всему в "правильных" значениях есть и отрицательные (меньше ноля), по этому результат будет мягко говоря не точным. Мне бы именно задать условия чтобы полностью исключить пиксели с "неправильными" значениями, исключая их из общего количества (17) каналов при расчете среднего.

Re: Расчет среднего значения пикселей в envi

Добавлено: 18 фев 2015, 11:23
gamm
Борисфенка писал(а):Вы наверно в первой формуле имели ввиду ...
вы оба правы :mrgreen:
создайте новый слой sum17

Код: Выделить всё

sum17=(b1 ne 100)+(b2 ne 100)+(b3 ne 100)+...
и делите на него вместо 17 (или впишите это в формулу), и будет вам щастье

Re: Расчет среднего значения пикселей в envi

Добавлено: 18 фев 2015, 15:45
Борисфенка
gamm писал(а): создайте новый слой sum17

Код: Выделить всё

sum17=(b1 ne 100)+(b2 ne 100)+(b3 ne 100)+...
Вот это то к чему я не додумалась :oops: . Значит как я решила эту задачу (может кому-то интересно будет):
1. Создала новый слой sum17 (смотр. выше)
2. Перевела 100 в 0 ( изначально оно так и было , сотку сделала чтобы ноль не мешал визуальному восприятию "картинки", учитывая, что значения от - до +, но можно просто вместо встроенной grayscale обозначит ноль конкретным цветом)
3. Просуммировала все 17 каналов ( чтоб не прописывать в Math bands делала через : Basic tools - Statistic - Sum Data bands)
4. И напоследок просто поделила файл с суммой на сделанный в (1) sum17.
Все вышло правильно - проверяла вручную на нескольких выбранных пикселях. Спасибо за советы!!!

Re: Расчет среднего значения пикселей в envi

Добавлено: 21 мар 2016, 14:15
maxim02
3. Просуммировала все 17 каналов ( чтоб не прописывать в Math bands делала через : Basic tools - Statistic - Sum Data bands)
Прошу прощения, не оч разбираюсь в ENVI, а разве Sum Data bands суммирует каналы? Из описания похоже, что функция работает с пикселами в одном канале. У меня вот схожая задача - рассчитать СКО для каждого пиксела из набора 28 идентичных по размеру изображений. Пока так и не понял как мне автоматизировать процесс (( Прошу помощи у форумчан.

Re: Расчет среднего значения пикселей в envi

Добавлено: 21 мар 2016, 17:40
alexandr cherepanov
Что выберите, то и посчитает.
ENVI calculates the various statistics as follows, where xj is the value of a pixel for band j and N = number of bands
SumDataBands