编写用于分析卫星图像的图像处理应用程序
我必须开始研究卫星图像分析应用程序,以识别一些人造结构。我想为此使用 C 或 Java。
对于卫星,我计划使用谷歌地图数据。
我在这里有三个问题:
- 除了 Google 地图/地球之外,GIS 数据的最佳来源是什么。
- 考虑到我必须使用第三方 API,编写此类应用程序的最佳语言
- 是否有可用的开放图像处理引擎来识别人造结构?
这是很多问题,但我希望这里更聪明的人可以帮助我。
I have to start work on application for analysis of satellite imagery to identify some man made structure. I would like to use C or Java for this.
For satellite I am planning to use Google Maps data.
I have three questions here:
- What is best source for GIS data besides Google Maps/earth.
- Best language to write such an application considering i will have to use third-party APIs
- Is there a open image processing engine available which identifies man made structures?
Thats a lot of questions but I hope the smarter guys here can help me here.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
过度处理的图像(例如 Google 或 Bing 地图)是用于执行特征提取或特征识别的可怕图像来源。通常,您希望使用相机模型获得最未经处理的原始形式……当然,如果您无法访问此类数据,那么您必须使用您拥有的数据。
对于 Google 地图/地球图像,更重要的考虑因素是您可能会违反其许可协议。我建议您在决定将他们的数据作为您的图像源之前检查一下。特别是,如果您绕过他们的 API,则违反了他们的许可协议。
就库和语言而言,有数十个可用的机器视觉库。我不能推荐其中之一,因为我只是他们结果的下游消费者。我对这个问题的理解是,最关心的是如何构建“模型”来进行比较……即如何为系统提供您正在寻找的内容的“示例”。
找到库后,您就可以决定使用哪种语言。通常,此类原型设计使用Python或Matlab等高级语言。一旦找到方法,就会转换为“更高性能”的语言——如果有必要。
就我个人而言,我可能会使用 Python,因为 (1) 它是免费的,(2) 在科学研究领域拥有重要的社区,(3) 可以与多种语言和平台进行互操作。
Overly processed imagery such as Google or Bing maps is a horrible source of imagery for performing feature extraction or feature recognition. Usually, you want the most unprocessed, raw form possible with camera models... of course, if you don't have access to this sort of data, then you have to work with what you have.
A more important consideration of Google Maps/Earth imagery is that you may run afoul of their License Agreement. I suggest you check it before you decide on their data as your imagery source. In particular, if you bypass their API's, you've violated their license agreement.
As far as libraries and langauges, there are dozens of machine vision libraries available. I can't recommend one over the other as I've only been a down-stream consumer of their results. My understanding of the problem is that the biggest concern is how you build the "models" to compare against... i.e. how do you give the system an "example" of what you're looking for.
Once you've found a library, then you can make a decision on the language. Generally, a high-level language like Python or Matlab is used for this kind of prototyping. Once a method has been found, then conversion to a "higher performance" language is done--if necessary.
Personally, I'd probably use Python because (1) it's freely available, (2) has a significant community in the scientific and research worlds, and (3) can interop with a wide variety of languages and platforms.
具体来说,请查看 Glovis:http://glovis.usgs.gov/
您可以浏览地球,并且从多个不同的卫星和传感器下载地图。尽管你必须经历一个虚假的“订购”过程,但图像是免费的。
Specifically, check out Glovis: http://glovis.usgs.gov/
You can browse the earth, and download maps from several different satellites and sensors. Even though you have to go through a bogus "ordering" process, the imagery is free.
您可能会发现USGS(美国地质调查局)网站很有帮助。它们提供 GIS 信息和广泛的数据集。
You may find the USGS (United States Geological Survey) website helpful. They provide both GIS information and a wide range of data sets.
我同意詹姆斯·谢克的观点。 Google 为您提供 RGB 图像 - 对于您的任务来说并不是最有帮助的。大多数图像都会有一些可能更适合您的附加频道。不同的通道显示不同的特征、水、城市区域、树叶类型等。例如,红外通道可用于在凉爽气候下挑选建筑物。如果您联系多个数据提供商,他们也许能够推荐在其数据中使用的最佳渠道。
对于详细的世界数据库来说,Ariel 图像可能非常巨大,有无数太字节。仔细考虑您需要处理多少信息。如果您只进行几平方英里的工作,性能不是问题。如果您要处理数千平方英里的数据,性能就成为一个问题。处理数以百万计的数据,性能是关键任务,必须从第一天就考虑到。
了解您需要处理的通道数量、您的性能要求和数据的文件格式,然后寻找满足您所有要求的库。其中许多都是用 C/C++ 编写的,因此使用与它们互操作的语言可能会有所帮助
I agree with James Schek. Google gives you RGB images - not the most helpful fot your task. Most imagery will have a couple of additional channels that may be better suited for you. Different channels show different features, water, urban areas, types of foliage etc. For example an infra-red channel could be used to pick out buildings in a cool climate. If you contact several data provider they may be able to recommend the best channels to use in their data.
Ariel imagery can be huge, numerous terrabytes for a detailed world database. Carefully consider how much information you need to process. If you are only doing a few square miles performance is not an issue. If you are processing thousands of square miles, performance becomes an issue. Processing millions, performance is mission critical and must be considered from day one.
Knowing the number of channels you need to process, your performance requirements and the file format of your data, look around for libraries that fulfil all your requirements. Many of them are written in C/C++ so using a language that interops with them both could be helpful
看看这个演示:
在多光谱中查找植被图片
,MATLAB 中图像处理工具箱的一部分。这与您分析卫星图像以找到特定模式的问题有关。
我相信这是一个很好的例子,说明您可以使用 MATLAB 使用很少的代码轻松实现这些任务。
Take a look at this demo:
Finding Vegetation in a Multispectral Image
, part of the Image Processing Toolbox in MATLAB. It is related to your problem of analysing satellite images to find specific patterns.
I believe it's an excellent example of the sort of things you can achieve easily with MATLAB using very little code.