12

Is it possible to analyze the satellite images to find the possibility of rainfall ares, moisture landscapes such as water bodies, forest areas, wasteland, etc by using computer languages such as C, C++, Java? Which is the best among these? Is It Complicated?

Is there any other option to do this project using advanced C, C++, Java versions? Do these languages have any special function to read pixel values without using tools such as MATLAB, LABVIEW?

4

4 回答 4

6

替代文字 http://xs.to/thumb-1F0D_4B62DE2C.jpg替代文字 http://xs.to/thumb-0C7F_4B62DFCB.jpg

如果我没记错的话,“数字图像处理第三版”一书中有一节是关于陆地分析的。另请查看“C 中的数字图像处理”,您可以在此处下载。

IIRC 和这个 NASA 页面似乎证实了,我不是物理学家,你需要具有完整(不仅仅是可见)电磁波谱的卫星图像。这使您可以挑选出水、植被等。

Landsat 7 图像是彩色合成图像,通过将三种原色分配给增强型专题地图 (ETM+) 传感器的三个波段来制作。这些图像不是彩色照片,它们是“假彩色”图像(图像中的绿色区域不一定看起来是绿色的)。

陆地卫星波段将有助于:

1 沿海水域测绘、土壤/植被判别、森林分类、人为特征识别
2 植被判别与健康监测、人为特征识别
3 植物种类识别、人为特征识别
4 土壤水分监测、植被监测、水体鉴别
5 植被含水量监测
6 地表温度、植被应力监测、土壤水分监测、云分化、火山监测
7 矿物和岩石鉴别、植被含水量

有关详细信息,请参阅:Lillesand, T. 和 Kiefer, R.,1994。遥感和图像解释。John Wiley and Sons, Inc.,纽约,p。468.

您可能还想创建图像的 3D 浮雕,并尝试将光谱数据与山谷、可能的河流点、沿海地区等联系起来。简而言之,有数据可以通过图像分析进行估算

于 2010-01-29T13:10:37.930 回答
3

纹理运算符可以区分卫星图像中的地理区域。这是Robert Haralick 的一篇论文,描述了用于识别水体、草地、大都市区等的经典纹理运算符。

我在开源Orfeo工具箱上取得了一些成功,这是一个基于ITK的 C++ 图像处理库,但专门用于卫星图像。您可以在此处的文档中查看纹理运算符的一些实现示例。

预纹理 后纹理

于 2011-12-12T16:01:01.447 回答
1

我会为此推荐 python,因为根据我的经验,该语言对用户更友好,并且有越来越多的 python 模块用于处理遥感数据。此外,python 是开源的,因此您可以避免使用 MATLAB 等。

RSGISLib 软件具有 python 绑定,非常适合处理遥感数据。我在整个博士期间都完全使用了它。该软件可以在这里找到http://www.rsgislib.org和一个很棒的博客可以在这里找到展示它的应用程序https://spectraldifferences.wordpress.com

我有地理背景,但能够轻松使用 python。在我看来,C++ 和 JAVA 等更复杂,因为 python 通常有一些模块可以为你做一些棘手的事情(访问图像、检查投影等)。

于 2015-11-19T12:10:22.363 回答
0

paniwani 的回答是一个好的开始——就他建议的纹理分析而言。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

这三个不同的指标(图像熵、图像标准偏差、图像中高频与低频内容的比率)都与从沙漠到农村到郊区到城市的频谱密切相关。如果您将这些放入分类器(例如神经网络)中,我敢打赌您可以开发出一个不错的预测器来判断谷歌地图卫星图像是沙漠、农村、郊区还是城市土地。

于 2012-12-13T04:07:57.720 回答