Обработка изображений спутниковых изображений

Можно ли анализировать спутниковые изображения для поиска возможности осадков, влажных ландшафтов, таких как водоемы, лесные территории, пустыри и т.д., используя компьютерные языки, такие как C, С++, Java? Какой из них лучший? Это сложно?

Есть ли другой вариант для этого проекта с использованием передовых версий C, С++, Java. Эти языки имеют специальные функции для чтения значений пикселей. Без использования таких инструментов, как MATLAB, LABVIEW.

Ответ 1

alt text http://xs.to/thumb-1F0D_4B62DE2C.jpg alt text http://xs.to/thumb-0C7F_4B62DFCB.jpg

В книге есть раздел "Digital Image Processing 3rd Edition "о наземном анализе, если я правильно помню. Также проверьте "Цифровая обработка изображений в C", которую вы можете скачать здесь.

IIRC и эта страница НАСА, похоже, подтверждает, и я не физик, вам понадобятся саталайтовые изображения с полным (не только видимым) электромагнитный спектр. Это позволяет вам выбирать воду, овощи и т.д.

Изображения Landsat 7 - это цветные композиты, сделанных путем назначения трех основных цвета в три полосы расширенного Датчик Thematic Mapper (ETM +). Эти изображения не являются цветными фотографиями, они являются изображениями "ложного цвета" (зеленые поля не обязательно будет выглядеть зеленым в изображение).

Ландшатские полосы помогут:

1 картирование прибрежной воды, дискриминация почвы/растительности, классификация лесов, искусственная идентификация объектов
2 дискриминация в растительности и мониторинг здоровья, антропогенная идентификация личности
3 идентификация видов растений, антропогенная идентификация объектов
4 мониторинг влажности почвы, мониторинг растительности, дискриминация водных организмов
5 мониторинг содержания влаги в растительности
6 температура поверхности, мониторинг стресса растительности, мониторинг влажности почвы, облачная дифференциация, вулканический мониторинг
7 различия в минеральных и горных породах, содержание влаги в вегетации

Подробнее см.: Lillesand, T. and Kiefer, R., 1994. Дистанционное зондирование и интерпретация изображений. John Wiley and Sons, Inc., Нью-Йорк, стр. 468.

Вы также можете создать 3D-рельеф изображений и попытаться связать данные спектра с долинами, вероятными точками рек, прибрежными регионами и т.д. Короче есть данные для оценки с помощью анализа изображений

Ответ 2

Операторы текстуры могут различать географические регионы в спутниковых снимках. Вот бумага от Роберта Харалика, описывающая классических операторов текстуры, чтобы идентифицировать водоемы, участки травы, мегаполисы и т.д.

У меня был некоторый успех с открытым исходным кодом Orfeo, который является библиотекой обработки изображений С++ на основе ITK, но специально для спутниковых снимков. Вы можете увидеть некоторые примеры реализации операторов текстур в документации здесь.

Pre-texturePost-texture

Ответ 3

Ответ на панивани - хорошее начало - поскольку он предлагает анализ текстуры. Imagemagick не часто используется для анализа текстуры, но это определенно является возможным инструментом для этого. Проверьте это:

$ cat get_images.sh 
#!/bin/bash

base_url='http://maps.googleapis.com/maps/api/staticmap?center='
other_params='&zoom=12&size=400x400&maptype=satellite&sensor=false'

curl -o desert1.png   "$base_url"'41.660000,112.900000'"$other_params" 2>/dev/null
curl -o desert2.png   "$base_url"'40.660000,112.900000'"$other_params" 2>/dev/null
curl -o rural1.png    "$base_url"'40.714728,-74.400000'"$other_params" 2>/dev/null
curl -o rural2.png    "$base_url"'41.714728,-74.400000'"$other_params" 2>/dev/null
curl -o suburban1.png "$base_url"'40.614728,-74.300000'"$other_params" 2>/dev/null
curl -o suburban2.png "$base_url"'40.714728,-74.200000'"$other_params" 2>/dev/null
curl -o urban1.png    "$base_url"'40.744728,-73.831672'"$other_params" 2>/dev/null
curl -o urban2.png    "$base_url"'40.754728,-73.930672'"$other_params" 2>/dev/null

echo -e "\nEntropy:"
for t in "desert1" "desert2" "rural1" "rural2" "suburban1" "suburban2" "urban1" "urban2"; do 
  echo -e "  " $t "\t" `./entropy "$t".png | grep Aver | sed -e 's/.*= //'`
done

echo -e "\nStd Dev:"
for t in "desert1" "desert2" "rural1" "rural2" "suburban1" "suburban2" "urban1" "urban2"; do 
  echo -e "  " $t "\t" `convert "$t".png -format '%[fx:standard_deviation]' info:`
done

echo -e "\nRatio of hi freq to low freq:"
for t in "desert1" "desert2" "rural1" "rural2" "suburban1" "suburban2" "urban1" "urban2"; do 
  convert "$t".png -fft +depth +adjoin "$t"_fft_%d.png
  convert "$t"_fft_1.png -fill none -stroke black -strokewidth 100 -draw "rectangle 50,50,350,350" "$t"_fft_1b.png
  convert "$t"_fft_1.png -fill none -stroke black -strokewidth 100 -draw "rectangle 150,150,250,250" "$t"_fft_1c.png
  lo=`./entropy "$t"_fft_1b.png | grep Average | sed -e 's/.*= //'`
  hi=`./entropy "$t"_fft_1c.png | grep Average | sed -e 's/.*= //'`
  echo -e "  " $t "\t" `echo "scale=8; $lo / $hi" | bc`
done

$ ./get_images.sh 

Entropy:
   desert1   0.557244
   desert2   0.586651
   rural1    0.652486
   rural2    0.709812
   suburban1 0.69883
   suburban2 0.727527
   urban1    0.746479
   urban2    0.765279

Std Dev:
   desert1   0.0756219
   desert2   0.0881424
   rural1    0.107279
   rural2    0.140878
   suburban1 0.125647
   suburban2 0.143765
   urban1    0.150628
   urban2    0.185245

Ratio of hi freq to low freq:
   desert1    .41319501
   desert2    .41337079
   rural1     .41333309
   rural2     .41335422
   suburban1  .41326120
   suburban2  .41339882
   urban1     .41327271
   urban2     .41326168

Эти три разные метрики (энтропия изображения, стандартное отклонение изображения, отношение hi freq to lo freq content на изображении) каждый прилично коррелируют со спектром от пустыни от деревни к городу от города до города. Если вы поместите их в классификатор (например, нейронную сеть), я готов поспорить, что вы могли бы разработать достойный предиктор того, будет ли изображение спутника карты google пустынным, сельским, пригородным или городским.

Ответ 4

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

Программное обеспечение RSGISLib имеет привязки python и идеально подходит для обработки данных дистанционного зондирования. Я использовал его полностью на протяжении всей своей докторской диссертации. Программное обеспечение можно найти здесь http://www.rsgislib.org, а отличный блог, демонстрирующий его приложения, можно найти здесь https://spectraldifferences.wordpress.com

У меня есть фон в географии, но я могу легко использовать python. С++ и JAVA и т.д. Более сложны, на мой взгляд, поскольку у python часто есть модули, которые выполняют сложные штучки (обращаясь к изображениям, проверяя прогнозы и т.д.) Для вас.