给定一张图片,怎样在互联网上找出和它近似的图片?
可以使用Google的相似图片搜索功能,匹配程度相当高。
那么,计算机是采用怎样的技术判定两张图片的相似程度的呢?方法有很多。
在这里,我们从图片的轮廓和色彩两方面入手,做一个简单的算法实现,重在原理呈现。
轮廓篇
图片的轮廓是判断图片相似性的最主要影响因素,那么怎样确定图片的主要轮廓呢?实际上,若将图片转化为黑白图后再观察就容易的多,黑白交界处就是所谓轮廓。
如需得到黑白图,首先排除色相干扰,将RGB转化为灰度,生成灰度值矩阵。
但是灰度值中包含的噪音较多,因此最好再做一次离散余弦变换,并只保留其中的低频部分,这样可以提高不少精确度。经过变换后得到的依然是一个灰度值矩阵
那么哪些像素点转化为黑点,哪些转化为白点呢?我们需要确定一个阈值,比阈值大的转化为白点,比阈值小的转化为黑点。它必须保证阈值以上的灰度值分布要尽可能地紧密,阈值以下的灰度值分布也要尽可能地紧密,同时阈值以上值的总体分布和阈值以下值的总体分布两者之间要尽可能疏远,这样才能使轮廓精确。
这时,我们将