Обработка изображений спутниковых изображений
Можно ли анализировать спутниковые изображения для поиска возможности осадков, влажных ландшафтов, таких как водоемы, лесные территории, пустыри и т.д., используя компьютерные языки, такие как 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-texture]()
![Post-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 часто есть модули, которые выполняют сложные штучки (обращаясь к изображениям, проверяя прогнозы и т.д.) Для вас.