【问题标题】:Image processing of Satellite Images卫星图像的图像处理
【发布时间】:2010-01-29 12:57:33
【问题描述】:

是否可以使用C、C++、Java等计算机语言分析卫星图像,找出可能存在降雨区、水体、林区、荒地等水分景观?其中哪一个是最好的?复杂吗?

还有其他选择可以使用高级 C、C++、Java 版本来完成这个项目吗?这些语言有什么特殊功能可以不使用MATLAB、LABVIEW等工具读取像素值吗?

【问题讨论】:

  • 我可以回答您问题的一部分:是的,这会很复杂。 :) 有兴趣查看指向解决方案/软件等的指针。
  • 如果您知道执行此操作所需的算法,这是可能的。语言本身实际上不是问题。您必须选择您更熟悉的语言。但是,我认为您首先需要关注遥感科学的基础知识。例如,您必须了解水和植被如何以不同方式吸收可见光。这是选择哪种类型的遥感器以及您必须执行哪种计算以区分图像中的水和植被的基础。

标签: image satellite


【解决方案1】:

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

如果我没记错的话,“Digital Image Processing 3rd Edition”一书中有一节是关于陆地分析的。另请查看“C 中的数字图像处理”,您可以下载 here

IIRC 和this NASA page seems to confirm,我不是物理学家,您需要具有完整(不仅仅是可见)电磁波谱的卫星图像。这使您可以挑选水、植被等。

Landsat 7 图像是彩色合成的, 通过分配三个主要的 增强的三个波段的颜色 专题映射器 (ETM+) 传感器。这些 图像不是彩色照片,它们 是“假彩色”图像(绿色字段 不一定看起来是绿色的 图片)。

陆地卫星波段将提供帮助:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

        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-05-21
          • 1970-01-01
          • 2010-12-09
          • 2013-02-09
          • 1970-01-01
          • 2017-10-17
          • 1970-01-01
          • 2013-03-13
          • 2012-11-05
          相关资源
          最近更新 更多