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

本文介绍了相似图片搜索的基本原理,通过轮廓和色彩两个方面来判断图片的相似度。首先,通过灰度转换和离散余弦变换获取图片轮廓,并利用Otsu's method确定阈值生成哈希码。其次,通过颜色统计和归类得到色彩指纹。两种方法结合,利用海明距离评估相似度,适用于简单的图像识别场景,但对图像变形和复杂情况的鲁棒性不足。
最低0.47元/天 解锁文章
801

被折叠的 条评论
为什么被折叠?



