2011-08-28 45 views
1

我正在寻找简单图像分析的方法,软件或库。简单图像分析

输入图像将是一个白色的背景和一些随机的小黑点。

我需要生成一个表示这些点坐标的.txt文件。也就是说,如果图像中有三个点,输出将是一个文本文件,它包含三个坐标(x1,y1),(x2,y2)和(x3,y3)的表示。

我在网上搜索了几个小时,没有找到合适的东西,我发现的只是图像处理的复杂程序。

我听说很容易在MATLAB中为这个任务编写代码,但我对MATLAB不熟悉。

这可以用C++,Java或C#轻松完成吗?

任何好的库?

回答

1

这在任何语言都很简单。根据您输入的形式,您可能需要查看所有内容(假设它是一个简单的矩阵 - 只需有两个嵌套循环,一个用于x坐标,一个用于y坐标),每当遇到黑点时 - 只需输出当前的索引,即点的x和y坐标。对于图书馆来说,除了某些东西来解码输入到这种矩阵形式(例如JPEG解码器)以外的任何东西都是过度杀伤的。

+0

谢谢,任何建议一个好的JPEG解码器?我打算用C++来做。 – Xee

+0

http://www.subquantumtech.com/jpeg/看起来很简单 - 我自己并没有使用它(我更喜欢matlab/python)。 – Ofir

0

我不认为你会需要图像处理库这种问题(有人纠正我,如果我错了),因为这些库可能会专注于图像处理和不识别。您将需要的是您所支持的图像格式知识(它们如何存储,如何解释等)以及基本的C文件系统功能。

例如,如果您期待JPG文件格式,您将简单地计算每条扫描线的填充,并逐个扫描每条扫描线,并逐行扫描每条扫描线。你必须使用两个计数器,一个用于行,另一个用于列。如果像素不是白色的,那么你有你的坐标

0

这是一个应该很容易做的事情,没有任何外部软件;像

for(y in [0..height]) { 
    for(x in [0..width]) { 
     if(pixels[y][x].color == BLACK) 
      print("(%d, %d)", x, y); 
    } 
} 

会工作。

+0

这很简单,如果我知道如何在c/C++中读取图像,但我不知道如何。并且这些点不是真正的圆点,它们是圆形的,但这不是问题,我可以找到圆的中心并将其生成到文本文件中,但是我又需要用于读取图像和扫描它的API。 – Xee

+0

你使用什么类型的图像? – Dave

0

CImg library shold帮助你。从CImg FAQ

1.1。什么是CImg图书馆?

CImg库是一个用于图像处理的开源C++工具包。

它主要由在(大)单头文件CImg.h提供 组C++类和功能,可以在自己的源一起使用, 的加载/保存,管理/处理和显示一般图像。它实际上是 一个非常简单和令人愉快的编码图像处理工具的工具包 in C++:只需包含头文件CImg.h,并且您已准备好在您的C++程序中处理图像 。

+0

我认为这就像使用LAW火箭杀死一只苍蝇:)(我在搜索时发现了这个图书馆),但无论如何要感谢。 – Xee

+0

无论如何,您将需要从文件中读取图像。为什么不使用已经写好的代码来加载图像?而不是重新发明轮子。 – ks1322

0

位图文件格式很容易阅读。

http://en.wikipedia.org/wiki/BMP_file_format

你可以只流字节到使用该信息的数组。我写了几个BMP阅读器;这是一件微不足道的事情。另外,虽然我不能保证它的易用性,但我之前从未使用它,我听说EasyBMP也能正常工作。