`
deepfuture
  • 浏览: 4331983 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:79401
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:68342
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:101467
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:281106
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:14595
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:65531
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:31305
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45182
社区版块
存档分类
最新评论

机器学习-余弦相似度计算图片相似性

 
阅读更多
 

 

    '计算相似度,使用余弦公式
        Dim tzbj_fz_2 As Double = 0.0
        Dim tzbj_fma_2 As Double = 0.0
        Dim tzbj_fmb_2 As Double = 0.0
        For myii As Integer = 0 To pic1tz.GetUpperBound(0)
            If IsNothing(pic1tz(myii)) Then
                Exit For
            End If
            tzbj_fz_2 += pic1tz(myii) * pic2tz(myii)
            tzbj_fma_2 += pic1tz(myii) * pic1tz(myii)
            tzbj_fmb_2 += pic2tz(myii) * pic2tz(myii)
        Next
        xsd = tzbj_fz_2 / (tzbj_fma_2 + tzbj_fmb_2 - tzbj_fz_2)
        xsd1.Text = xsd.ToString("P")

我用VB.NET制作了一个小程序,程序的功能是根据源图比较2张图哪张与源图更相似,完成对图片特征码的计算后,使用余弦相似度对2个图片进行比较,比较代码如上,两个向量间的余弦值可以很容易地通过使用欧几里得点积和量级公式推导:

\mathbf{a}\cdot\mathbf{b}
=\left\|\mathbf{a}\right\|\left\|\mathbf{b}\right\|\cos\theta

鉴于两个向量的属性, AB的余弦相似性θ用一个点积形式来表示其大小,如下所示:

\text{similarity} = \cos(\theta) = {A \cdot B \over \|A\| \|B\|} = \frac{ \sum\limits_{i=1}^{n}{A_i \times B_i} }{ \sqrt{\sum\limits_{i=1}^{n}{(A_i)^2}} \times \sqrt{\sum\limits_{i=1}^{n}{(B_i)^2}} }

产生的相似性范围从-1到1:-1意味着两个向量指向的方向正好截然相反,1表示它们的指向是完全相同的,0通常表示它们之间是独立的,而在这之间的值则表示中度的相似性或相异性。

  需要安装.NET库,程序见附件

 



 

 



 



 

 

 



 

 

 

 

 用山水和瀑布做一下比较

 



 



 



 

 

  • 大小: 65.6 KB
  • 大小: 59.4 KB
  • 大小: 73.9 KB
  • 大小: 83.9 KB
  • 大小: 86.4 KB
  • 大小: 72.4 KB
1
2
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics