2010-11-29 176 views
0

图像处理如何完成?图像处理

我想比较两张图片并确定它们之间的差异。我如何识别不同图像的两个像素之间的差异?

+0

什么语言,平台?你正在使用像Matlab或IDL这样的数字运算工具吗? – DarenW 2010-11-29 15:27:12

+0

你可以尝试这个链接的一些指针http://stackoverflow.com/q/23931/5195 – vtbose 2010-11-29 15:44:20

+1

图像有多不同?它们在结构上是否相似(例如相同的图像,不同的压缩机),相同主题的不同角度,还是完全不同? – misha 2010-11-29 23:53:11

回答

2

的细节取决于你所使用的语言,但通常它的工作原理是这样的:

每个图像程序当作一个二维数组。因此,要找到两个不同图像在相同像素(称为x,y)上的值的差异,您应该这样做:

diff = image1 [x] [y] - image2 [x] [y]

有一些实现的细节,你必须警惕(如差异将签署),但这是基本的想法。

如果你提到你正在使用的语言,我可以提供一些关于如何打开图像的建议,以便它可以像数组一样处理。

1

不要简单地添加答案1中的差异,否则正面和负面的差异将抵消!您需要对差值的平方或绝对值进行求和。 您也可以考虑乘以像素对并除以它们的总和(相关性)。

这三种方法现在在技术上都是正确的,但它们仍然远没有实际用处。不要惊讶地发现两个完全不相关的图像之间的较小的差异,例如,具有稍微不同的照明的同一对象的两个图像。

0

随机选择像素并检查图像的大小。如果它们是相同的,你可以假设它们是相同的。

1

“图像处理如何完成?”
答案:取决于你想要做什么处理。在图像处理中可以执行数百种操作,每种操作都可能有完全不同的方法,唯一常见的是读取和存储像素数据。

“我想比较两幅图像并确定它们之间的差异,我如何识别不同图像中两个拍摄像素之间的差异?”

甚至在问你关于图像类型之前 - 我想问一下“识别两个像素之间的差异”是什么意思?你只是想知道这两个图像是不同的?你想知道哪些像素不同?你想知道给定位置的像素是否不同?

0

这是我几周前做过的图像处理示例。

http://keshavsaharia.com/2011/03/17/theres-waldo-2/

它是建立在数学,而且占据了其中的金都之谜,并使用相当简单的图像处理技术来寻找沃尔多。

图像处理是一个非常简单的概念。它几乎完全基于采用单个像素并基于与其他像素值或给定阈值相关的像素值的数值属性将整体图像应用于图像。

Mathematica是一个神奇的图像处理工具,就像Matlab和Python一样(如果你正在寻找一个python解决方案,请查看PIL)。图像处理库几乎适用于所有的编程语言 - C++具有EasyBMP,Java具有各种图像工具,并且每种语言都有自己的一套独特方法。根据您的应用程序选择语言。

0

如果您需要基于像素两个图像的只是一个简单的比较,没有什么作为的两个图像的每个像素之间的差数总和一样简单。这种方法不是非常通用,例如不同的照明会显着影响结果。

这就是说,图像比较仍然是一个开放的研究问题,它与图像挖掘任务有关。

如果您需要一些更高级的图像比较,您可以尝试Rapidminer with IMMI扩展名,其中包括几种图像比较的高级方法。

0

图像处理是一个巨大的领域,所以我不认为在这里的任何单一的答案会教你一切有关图像处理知道。有很多很好的资源和遍布互联网的讲座,你可以从中学到大量的信息。如果你想要一本好书来处理信号(信号代表几乎所有的数据类型:光,声音,图像等等),它涵盖了大量的信号处理技术,请查阅Signals and Systems

但是除此之外,如果您只想学习可应用于图像的基本过程,请查看处理语言(如jaboston说的)及其教程/学习书,因为它本质上是为视觉艺术家设计的,并且使图像处理更少费力(语法上)的任务比其他语言:http://processing.org/

而且erich有权利用欧几里得距离来计算两个像素之间的差异。

0

图像相似性不是一件容易的事,仍然是一个开放的研究问题。每像素比较像素通常不会给出好的结果,同时也是相当耗时的。

其中一种方法是使用Rapidminer(开源工具)。使用IMMI插件(IMage MIning扩展,http://splab.cz/immi)的Radpiminer(广泛使用的数据挖掘平台,http://rapid-i.com)实现了类似的方法,并且可以进行一些非平凡的相似度测量。