Как удалить пиксели в расте

Обновлено: 21.11.2024

Продукт Landat Surface Reflectance (SR) иногда содержит насыщение в одной или нескольких полосах (значение 16 000 единиц отражения или 160 % отражения). Предположительно, они соответствуют насыщению на детекторе; такое же насыщение, которое может иметь место над облаками или заснеженными участками. Такие облака и снег можно замаскировать с помощью предоставленного маскирующего слоя (например, CFMask), но существуют и другие земные покровы, такие как светлая почва, пустыни, вода и непроницаемая поверхность, которые могут насыщать одну или несколько полос (например, Asner et al. 2010; Рашед и др., 2001 г.).

Летом ("сезон листвы") мы можем быть уверены, что в большинстве районов снег просто не является возможным типом земного покрова. Однако городские районы полны ярких целей, и кажется, что почти каждое изображение отражательной способности поверхности содержит несколько насыщенных пикселей не из-за облаков или снега. Значение насыщенности (16 000 для Landsat SR; 20 000 для Landsat для отражения от верхней границы атмосферы) может присутствовать не во всех диапазонах — некоторые цели имеют только тепловую яркость, в то время как другие могут давать спектральные отражения в оптических диапазонах (например, солнечный блик). Таким образом, кажется, что эти яркие цели не всегда маскируются включенным уровнем обеспечения качества (QA); в ненасыщенных полосах по-прежнему имеется информация о спектральном коэффициенте отражения.

Насыщенные пиксели легко маскируются; Я приведу пример кода Python, который показывает, как это сделать. Но можно ли игнорировать насыщенные пиксели или они представляют собой проблему для определенных типов анализа? В настоящее время я занимаюсь исследованием городской отражательной способности в юго-восточном Мичигане, используя спектральный смешанный анализ для оценки относительной распространенности определенных типов земного покрова. Чтобы улучшить оценки численности (за счет улучшения отношения сигнал-шум на входе) и уменьшить пропускную способность, я использую преобразование минимальной доли шума (MNF), аналогичное вращению главных компонентов, которое проецирует отражательную способность Landsat TM/ETM+ в ортогональный базис. Хотя я с самого начала замаскировал эти насыщенные пиксели, я начал задаваться вопросом, какая была бы разница, если бы я оставил их.

Приведенный здесь пример относится к изображению Landsat 7 ETM+ SR, которое было обрезано до округа Окленд, штат Мичиган (изнутри WRS-2, ряд 20, путь 30). Изображение Landsat 7 ETM+ было получено в июле 1999 г. (порядковый день 196); идентификатор изображения — LE70200301999196EDC00. Исходное изображение SR имело маску QA, предоставленную Геологической службой США, примененную к изображению в обоих случаях; где насыщенность была замаскирована, а где нет.

Визуализация насыщенности в области микширования

Если насыщение сохраняется до преобразования, преобразованные значения масштабируются иначе, чем при первом удалении. Это можно увидеть "в лоб" в ГИС, переключаясь между слоями: преобразованное MNF изображение с насыщенными значениями (внизу, слева) и без них (внизу, справа).

Это также видно на гистограммах (слева с насыщенностью, справа без).

Интересно отметить, что растровое изображение с насыщением показывает гораздо более яркие участки почвы/пахотных земель (желтые на изображении), чем растровое изображение, где насыщенные значения были замаскированы. Казалось бы, это предполагает, что оставление полностью (и частично) насыщенных пикселей на месте до преобразования может повысить точность оценки содержания. Однако изменение гистограмм не так просто интерпретировать.

Еще один способ визуализировать разницу между этими двумя изображениями – изучить их пространственные характеристики. Ниже приведен пример смешивания пространства изображения, где насыщенные пиксели не были замаскированы; двумерный срез пространства признаков, показывающий первые три компонента MNF. Это три компонента с самым высоким отношением сигнал/шум (SNR), где SNR первого компонента больше, чем у второго, и так далее. Мы видим, что в этом пространстве смешения есть несколько пикселей, удаленных от основного объема.

Если вы не привыкли смотреть на изображения, подобные приведенному выше, поверьте мне на слово: это выглядит неправильно. Или не верьте мне на слово; см. Томпкинс и др. (1997), Ву и Мюррей (2003) или Смолл (2004) для примеров смешанных пространств. Но тогда как выглядит пространство признаков для преобразованного изображения, где насыщенность была замаскирована?Внизу справа показано функциональное пространство для этого изображения. Слева снова находится изображение, на котором сохраняется насыщенность, но я «увеличил» основной объем смеси, чтобы упростить сравнение этих изображений.

Маскирование насыщенности в Python с помощью GDAL и NumPy

Кстати, как я замаскировал насыщенные значения? Это может быть сложно, когда одна или несколько, но не все полосы насыщены в данном пикселе. Ниже приведена функция Python, использующая GDAL и NumPy, которая демонстрирует, как это можно сделать.

Что приводит к более точным оценкам?

Различия, которые я показал выше, интересны, но что на самом деле приводит к более точной оценке фракционного содержания земного покрова в спектральном смешанном анализе? Я провел анализ линейной спектральной смеси на изображениях, преобразованных в MNF, с использованием тех же четырех (4) конечных элементов изображения: непроницаемая поверхность, зеленая растительность, почва и тень. Крайний член тени на самом деле является фотометрической тенью: нулевая отражательная способность во всех диапазонах. И вода, и пиксели «NoData» маскируются под это значение, поскольку используемые библиотеки линейной алгебры не могут работать со значениями «NoData», а маскированные массивы в NumPy имеют серьезные недостатки в производительности.

Одна из мер "соответствия" наших оценок численности и реальности — сравнение наблюдаемой и прогнозируемой отражательной способности Landsat ETM+, где прогнозируемая отражательная способность вычисляется с помощью прямой модели с использованием спектров конечных членов и их расчетной доли содержания в заданном пикселе. Стандартной практикой (например, Rashed et al. 2003; Wu and Murray, 2003) является вычисление этого «соответствия» по среднеквадратической ошибке (RMSE) между наблюдаемым коэффициентом отражения и прогнозируемым коэффициентом отражения. Пауэлл и др. (2007) представляет формулу для среднеквадратичной ошибки пикселя \(i\), нормализованную количеством конечных членов, \(M\) :

Затем я нормализовал сумму значений RMSE для большого случайного подмножества пикселей (из соображений производительности) по диапазону коэффициентов отражения \(r\) :

Поскольку минимальный коэффициент отражения всегда равен нулю (при наличии тени), \(r_ \equiv 0\) . Каждое изображение изобилия сравнивается с соответствующим исходным изображением Landsat ETM+; с или без маскирования насыщенных пикселей, в зависимости от обстоятельств.

Процент RMSE был рассчитан для обеих оценок численности (с насыщением и без него), где численность каждый раз оценивалась двумя разными способами: с помощью неотрицательной оценки методом наименьших квадратов (NNLS) и с помощью полностью ограниченной оценки методом наименьших квадратов (FCLS). . При использовании FCLS оценки численности должны быть как неотрицательными, так и находиться в интервале \([0,1]\) . В NNLS второе ограничение снимается. Окончательные изображения изобилия с насыщенными пикселями или без них выглядят очень похоже. Ниже приведено изображение FCLS из оценки без насыщенных пикселей. Непроницаемая поверхность отображается красным цветом, растительность — зеленым, а почва — синим; оценки содержания каждого пикселя были повторно суммированы до единицы после вычитания оттенка.

Результаты проверки представлены в таблице ниже.

Казалось бы, если не замаскировать насыщенные пиксели, это улучшит моделирование коэффициента отражения ETM+. Однако это только первое приближение к точности; нас действительно не волнует смоделированная отражательная способность. Настоящая проверка заключается в сравнении оценок численности с наземными данными.

Проверка оценок численности

Тень и почва были вычтены из изображений изобилия перед проверкой по отношению к земному покрову, интерпретированному вручную по аэрофотоснимкам в 90-метровых окнах, центрированных в случайных точках отбора проб. 169 точек выборки были расположены в округе Окленд, и для каждого из изображений численности были рассчитаны коэффициент детерминации \(\left( R^2 \right)\), RMSE и средняя абсолютная ошибка (MAE).

С сохранением насыщенных пикселей:

Заключение

Несмотря на лучшую производительность прямой модели, изображение, на котором были сохранены насыщенные пиксели, давало худшие оценки, чем изображение, на котором они были замаскированы. Удаление насыщенных пикселей, по-видимому, повышает точность оценок численности. Величина улучшения невелика, и мы не можем быть уверены, исходя только из этого тестового примера, что улучшение не является простым совпадением — то есть, хотя удаление этих насыщенных пикселей улучшило результаты в этом случае, возможно, что насыщенные пиксели на месте в другом изображении сговариваются для получения таких же или лучших результатов по сравнению с оценками, где они удалены.

Однако, учитывая топологию пространства признаков, наиболее вероятным объяснением такого незначительного улучшения точности является удаление насыщенных пикселей. И, возможно, наиболее важной причиной маскирования насыщенных пикселей является то, что это значительно упрощает интерпретацию пространства микширования.

digoal 25 января 2021 г. 1 138 0

В этой статье мы обсудим оптимизацию растровых данных в базах данных PostgreSQL с помощью функции ST_Value и опишем различные методы оптимизации.

Фон

Растровые данные — это данные изображения, состоящие из решеток, обладающих пространственным свойством (границей). Решетка состоит из пикселей. Следовательно, каждый пиксель также имеет пространственное свойство. Кроме того, каждый пиксель заполняется значениями, представляющими такие факторы, как температура, оттенки серого, оттенок, насыщенность и яркость.

Каждый растр может иметь несколько каналов. Каждая полоса может представлять собой слой, а различные полосы можно комбинировать и накладывать друг на друга для расчета.

Растровые данные позволяют анализировать и визуализировать данные с пространственным или бизнес-свойством, например данные тепловой карты, карты степени озеленения, распределение дорог и распределение температуры.

Структура растровых данных ArcGIS следующая:

  • Любой допустимый формат сетки
  • Массив пикселей
  • Один или несколько диапазонов волн
  • Хранится в виде файла на диске или в географической базе данных
  • Поддерживается более 70 форматов.
  • Как сервис изображений
  • Как источник данных в инструментах обработки и анализа географических данных.
  • Доступно в разделе "Анализ изображений".

При извлечении значения пикселя могут возникнуть некоторые проблемы с производительностью, поскольку растровые данные могут быть большими или маленькими.

Использование функции ST_Value для извлечения значения указанного пикселя растра

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

Производительность этого шага связана со структурой данных и методом извлечения растрового файла.

Использование функции ST_Value для установки значения указанного пикселя растра

Знания о растре

Узнайте о растровых объектах из документов ArcGIS или PostGIS:

Метод оптимизации

Оптимизация на бизнес-уровне

1) Разделить большой растровый объект на несколько меньших объектов.

2) Преобразуйте границу в точку геометрии и создайте индекс выражения на границе.

3) Проверьте, пересекает ли входная геометрическая точка запрашиваемый растр (ST_Intersects). Если да, рассчитайте ST_Value. Если нет, не вычисляйте ST_Value.

Оптимизация на уровне ядра базы данных

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

Обзор

Методы оптимизации следующие:

1) Разделите большой растровый объект на несколько небольших объектов, чтобы уменьшить потребление вычислительных ресурсов.

2) Используйте индексы выражений, чтобы уменьшить потребление вычислительных ресурсов или усиление ввода-вывода.

В Pixel 6 и Pixel 6 Pro есть функция Magic Eraser, позволяющая скрыть случайных людей на заднем плане ваших изображений.

Функция Magic Eraser на смартфоне Google Pixel 6 Pro.

Сейчас конец года, и если вы испортили фотографию из-за того, что прохожий приблизил ее к кадру, когда вы нажимали кнопку спуска затвора на праздничной вечеринке, у новых телефонов Google Pixel 6 и Pixel 6 Pro есть способ помочь вам спасти эти заветные воспоминания. Он называется «Волшебный ластик».

Компания Google представила новый инструмент для редактирования фотографий Magic Eraser вместе с Pixel 6 и Pixel 6 Pro на последнем мероприятии компании, посвященном выпуску телефонов Pixel в октябре. Инструмент «Волшебный ластик» дает вам возможность удалять ненужные объекты или людей, отвлекающих внимание как от новых, так и от старых фотографий, не ставя под угрозу фон с эффектом размытия. Согласно сообщению в блоге Google, эта функция обнаруживает отвлекающие факторы на ваших фотографиях, предлагает варианты того, что вы, возможно, захотите удалить, и позволяет вам удалить их либо все сразу, либо по одному простым нажатием. Затем машинное обучение прогнозирует, как должны выглядеть пиксели после удаления ненужных элементов с фотографий.

Еще из 12 дней технических советов

Когда вы пытаетесь получить идеальное изображение для Instagram, остальной мир не всегда заметит, что вы делаете снимок, и может непреднамеренно оказаться на заднем плане. Функция «Волшебный ластик» избавит вас от необходимости неловко просить кого-то выйти за пределы кадра и даст вам больше контроля над тем, что будет отображаться на ваших снимках.

Помимо Magic Eraser, устройства серии Pixel 6 также получили новое аппаратное обеспечение камеры и такие функции, как Real Tone и режим Motion. Технический гигант также объявил о сделке с пакетом Pixel Pass, ОС Android 12 и собственным чипом Tensor от Google.

Magic Eraser пока доступен только на новых Pixel 6 и Pixel 6 Pro, но вот как его найти.

Как использовать Magic Eraser на Pixel 6

<р>1. Откройте приложение Google Фото.

<р>2. Выберите нужную фотографию.

<р>3. Нажмите «Изменить» на нижней панели инструментов.

<р>4. Нажмите «Волшебный ластик». Инструмент обнаружит и обведет белым цветом потенциальные отвлекающие факторы.

<р>5. Если вы согласны с предложениями, нажмите «Стереть все» или коснитесь каждого элемента, чтобы удалить их по отдельности.

Если Magic Eraser неправильно выбрал то, что вы хотите удалить, вы можете вручную обвести что-то на фотографии, чтобы стереть это.

В этом руководстве объясняется, как обрезать растр, используя экстент векторного шейп-файла. Мы также расскажем, как извлекать из растра значения, находящиеся внутри набора полигонов или в буферной (окружающей) области вокруг набора точек.

Цели обучения

После завершения этого руководства вы сможете:

  • Обрезать растр до экстента векторного слоя.
  • Извлечение значений из растра, соответствующих наложенному векторному файлу.

Вещи, которые вам понадобятся для прохождения этого руководства

Для выполнения этого руководства вам потребуется самая последняя версия R и, желательно, RStudio, загруженная на ваш компьютер.

Установить пакеты R

растр: install.packages("растр")

rgdal: install.packages("rgdal")

sp: install.packages("sp")

Подробнее о пакетах в R — адаптировано из Software Carpentry.

Загрузить данные

Подмножество обучающих данных NEON: шейп-файлы макета сайта

Эти векторные данные предоставляют информацию о характеристиках участка и инфраструктуре на полевом участке Национальной сети экологических обсерваторий в Гарвардском лесу. Шейп-файлы Гарвардского леса взяты из архивов ГИС и карт Гарвардского леса. Слои US Country и State Border взяты из Бюро переписи населения США.

Подмножество обучающих данных NEON: данные бортового дистанционного зондирования

Данные LiDAR и изображения, используемые для создания этого подмножества растровых обучающих данных, были собраны на полевых площадках Национальной сети экологических обсерваторий в Гарвардском лесу и экспериментальном полигоне Сан-Хоакин и обработаны в штаб-квартире NEON. Доступ ко всему набору данных можно получить по запросу на портале данных NEON.

Установка рабочего каталога. В этом уроке предполагается, что в качестве рабочего каталога вы указали расположение загруженных и разархивированных подмножеств данных.

R Script & Challenge Code: Уроки по работе с данными NEON часто содержат задачи, укрепляющие полученные навыки. Код для решения задач можно найти в загружаемом сценарии R всего урока, доступном в нижнем колонтитуле каждой страницы урока.

Обрезать растр до вектора

Мы часто работаем с пространственными слоями, которые имеют разные пространственные экстенты.

Пространственный экстент шейп-файла или пространственного объекта R представляет собой географический «край» или местоположение, которое находится на самом дальнем севере, юго-востоке и западе. Таким образом, он представляет собой общий географический охват пространственного объекта. Источник изображения: Национальная сеть экологических обсерваторий (NEON)

На приведенном ниже рисунке показаны размеры нескольких пространственных слоев, с которыми мы работали в этой серии руководств по работе с векторными данными:

  • Область интереса (AOI) — синяя
  • Дороги и тропы – фиолетовый
  • Расположение участка с растительностью — черный цвет

и растровый файл, который мы представим в этом руководстве:

  • Модель высоты навеса (CHM) в формате GeoTIFF – зеленый цвет.

К частым случаям обрезки растрового файла относятся уменьшение размера файла и создание карт.

Иногда у нас есть растровый файл, который намного больше изучаемой области или интересующей области. В этом случае часто наиболее эффективно обрезать растр в пределах изучаемой области, чтобы уменьшить размер файла при обработке наших данных.

Обрезка растра также может быть полезна при создании визуально привлекательных карт, чтобы растровый слой соответствовал экстенту нужных векторных слоев.

Импорт данных

Мы начнем с импорта четырех векторных шейп-файлов (границы поля, дороги/тропы, расположение вышек и расположение участков для изучения растительности) и одного растрового файла GeoTIFF, модели высоты полога для Гарвардского леса, штат Массачусетс. Эти данные можно использовать для создания карт, характеризующих место нашего исследования.

Если вы выполнили учебные пособия по векторам 00-04 в этой серии Введение в работу с векторными данными в R, вы можете пропустить этот код, поскольку вы уже создали этот объект.)

Обрезка растра с использованием экстента вектора

Мы можем использовать функцию обрезки, чтобы обрезать растр до экстента другого пространственного объекта. Для этого нам нужно указать растр, который нужно обрезать, и пространственный объект, который будет использоваться для обрезки растра. R будет использовать экстент пространственного объекта в качестве границы обрезки.

На приведенном выше графике видно, что полный экстент CHM (отмеченный зеленым цветом) намного больше, чем результирующий обрезанный растр. Наш новый обрезанный CHM теперь имеет тот же экстент, что и объект aoiBoundary_HARV, который использовался в качестве экстента обрезки (синяя рамка ниже).

Мы можем посмотреть на размер всех других объектов.

Какой объект имеет наибольшую протяженность? Протяженность нашего участка не самая большая, но она больше, чем граница AOI. Было бы неплохо увидеть наши участки растительности с информацией о модели высоты навеса.

  1. Обрежьте модель высоты полога в соответствии с местоположением исследуемого участка.
  2. Нанесите точки расположения графика растительности поверх модели высоты навеса.

Если вы прошли курс .csv to Shapefile in R, у вас есть эти местоположения графика в виде пространственного объекта R plot.locationsSp_HARV . В противном случае импортируйте местоположения из шейп-файла \HARV\PlotLocations_HARV.shp в загруженные данные.

На приведенном выше графике, созданном в задании, все местоположения графиков растительности (синие) отображаются в растровом слое модели высоты навеса, кроме одного. Один расположен на белом пространстве. Почему?

Ниже показана модификация первого рисунка в этом руководстве, показывающая относительные размеры всех пространственных объектов. Обратите внимание, что экстент нашего слоя графика растительности (черный) простирается дальше на запад, чем экстент нашего растра CHM (ярко-зеленый).Функция обрезки уменьшит экстент растра, но не расширит экстент в областях, где нет данных. Таким образом, экстент нашего слоя графика растительности будет продолжаться дальше на запад, чем экстент наших (обрезанных) растровых данных (темно-зеленый).

Определить экстент

Мы также можем использовать метод экстента(), чтобы определить экстент, который будет использоваться в качестве границы обрезки. Это создает объект класса экстента .

После того, как мы определили экстент, мы можем использовать функцию обрезки, чтобы обрезать наш растр.

Обратите внимание, что наш вручную установленный new.extent (красный) меньше, чем aoiBoundary_HARV, и что растр теперь совпадает с объектом new.extent.

Дополнительные способы создания объекта экстента с помощью ??raster::extent см. в документации по функции extend()

Извлечение значений растровых пикселей с использованием векторных полигонов

Часто нам нужно извлечь значения из растрового слоя для определенных местоположений, например, для участков, которые мы выбираем на местности.

Извлечение растровой информации с помощью границы полигона. Мы можем извлечь все значения пикселей в пределах 20 м от нашей точки интереса x, y. Затем их можно обобщить в некоторое представляющее интерес значение (например, среднее, максимальное, общее). Источник: Национальная сеть экологических обсерваторий (NEON).

Чтобы сделать это в R, мы используем функцию extract(). Для функции Extract() требуется:

  • Растр, из которого мы хотим извлечь значения
  • Векторный слой, содержащий многоугольники, которые мы хотим использовать в качестве границы или границ.

ПРИМЕЧАНИЕ. Мы можем указать ему сохранять выходные значения в data.frame, используя df=TRUE (необязательно, по умолчанию НЕ возвращать data.frame ).

Мы начнем с извлечения всех значений высоты навеса в пикселях, расположенных в пределах нашего многоугольника aoiBoundary, который окружает башню, расположенную на участке поля NEON Harvard Forest.

Когда мы используем команду извлечения, R извлекает значение для каждого пикселя, расположенного в пределах границы полигона, используемого для выполнения извлечения, в данном случае это объект aoiBoundary (1 отдельный полигон). Используя aoiBoundary в качестве граничного многоугольника, функция извлекла значения из 18 450 пикселей.

Функция извлечения по умолчанию возвращает список значений, но вы можете указать R каким-либо образом обобщить данные или вернуть данные в виде data.frame ( df=TRUE ).

Мы можем создать гистограмму значений высоты деревьев в пределах границ, чтобы лучше понять структуру или распределение высоты деревьев. Мы также можем использовать функцию summary() для просмотра описательной статистики, включая минимальные, максимальные и средние значения высоты, чтобы помочь нам лучше понять растительность на нашем полевом участке.

  • Дополнительные сведения см. в документации по функции extract() ( ??raster::extract ).

Суммировать извлеченные растровые значения

Часто нам нужно извлечь сводные значения из растра. Мы можем сообщить R интересующий нас тип сводной статистики, используя метод fun=. Давайте извлечем среднее значение высоты для нашего AOI.

Похоже, что среднее значение высоты, полученное из нашей модели высоты навеса, полученной на основе данных LiDAR, составляет 22,43 метра.

Извлечение данных с использованием местоположений x,y

Мы также можем извлекать значения пикселей из растра, определяя буфер или область, окружающую отдельные точки, с помощью функции extract(). Для этого мы определяем метод суммирования ( fun=mean ) и буферное расстояние ( buffer=20 ), которое представляет собой радиус круглой области вокруг каждой точки.

Единицы буфера — это те же единицы CRS данных.

Извлечение растровой информации с использованием области буфера. Все пиксели, которых касается область буфера, включаются в извлечение. Источник: Национальная сеть экологических обсерваторий (NEON).

Давайте применим это на практике, вычислив среднюю высоту деревьев в 20 м вокруг башни.

Используйте шейп-файл точек местоположения участка HARV/plot.locations_HARV.shp или пространственный объект plot.locationsSp_HARV, чтобы извлечь среднее значение высоты деревьев для области в пределах 20 м от каждого местоположения участка растительности в исследуемой области.

Создайте простой график, показывающий среднюю высоту дерева каждого графика, используя функцию plot() в base-R.

Читайте также: