卫星图像的图像处理

发布于 2024-08-19 10:35:37 字数 162 浏览 3 评论 0 原文

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

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

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

佞臣 2024-08-26 10:35:37

替代文本 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。遥感和图像解释。约翰·威利父子公司,纽约,第 14 页。 468.

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

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

There is a section in the book "Digital Image Processing 3rd Edition" about land-mass analysis if I recall correctly. Also check out "Digital Image Processing in C" which you can download here.

IIRC and this NASA page seems to confirm, and I am no physicist, you will need satallite images with the complete (not just visible) electromagnetic spectrum. This allows you to pick out water, vegitation and so on.

Landsat 7 images are color composites,
made by assigning the three primary
colors to three bands of the Enhanced
Thematic Mapper (ETM+) sensor. These
images are not color photographs, they
are "false color" images (green fields
won't necessarily look green in the
image).

The landsat bands will help:

1 coastal water mapping, soil/vegetation discrimination, forest classification,
man-made feature identification
2 vegetation discrimination and health monitoring, man-made feature identification
3 plant species identification, man-made feature identification
4 soil moisture monitoring, vegetation monitoring, water body discrimination
5 vegetation moisture content monitoring
6 surface temperature, vegetation stress monitoring, soil moisture monitoring,
cloud differentiation, volcanic monitoring
7 mineral and rock discrimination, vegetation moisture content

For more details see: Lillesand, T. and Kiefer, R., 1994. Remote Sensing and Image Interpretation. John Wiley and Sons, Inc., New York, p. 468.

You might also want to create a 3D relief of the images and try and relate the spectrum data with valleys, likely river points, coastal regions and so on. In short there is data to make estimates through image analysis

季末如歌 2024-08-26 10:35:37

纹理运算符可以区分卫星图像中的地理区域。这是 Robert Haralick 的论文,描述了识别水的经典纹理运算符 方面

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

预纹理
后纹理

Texture operators can differentiate geographical regions in satellite imagery. Here is a paper from Robert Haralick describing classic texture operators to identify water bodies, grass regions, metropolitan areas, etc.

I've had some success with the open source Orfeo toolbox, which is a C++ image processing library based on ITK, but specifically for satellite imagery. You can see some implementation examples of texture operators in the documentation here.

Pre-texture
Post-texture

暖伴 2024-08-26 10:35:37

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

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

我有地理背景,但能够轻松使用 python。在我看来,C++ 和 JAVA 等更加复杂,因为 python 通常具有为您执行棘手操作(访问图像、检查投影等)的模块。

I would recommend python for this as the language, in my expeicence, is more user friendly and there a growing number of python modules for processing remotely sensed data. Furthermore, python is open source so you can avoid MATLAB etc.

The RSGISLib software has python bindings and is ideal for processing remote sensing data. I used it entirely throughout my PhD. The software can be found here http://www.rsgislib.org and a great blog demonstrating its applications can be found here https://spectraldifferences.wordpress.com

I have a background in Geography but was able to use python with ease. C++ and JAVA etc are more complicated in my opinion, as python often has modules that do the tricky bits (accessing imagery, checking projections etc) for you.

我也只是我 2024-08-26 10:35:37

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

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

paniwani's answer is a good start--insofar as he suggests texture analysis. Imagemagick is not often used for texture analysis, but it's definitely a possible tool for doing so. Check this out:

$ 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

Those three different metrics (image entropy, image standard deviation, ratio of hi freq to lo freq content in an image) are each decently correlated with a spectrum from desert-to-rural-to-suburban-to-urban. If you put these into a classifier (e.g., a neural network), I bet you could develop a decent predictor of whether a google map satellite image is desert, rural, suburban, or urban land.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文