var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://#/hm.js?bbed808a7e81aea9265f249f4cb59cdb"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); 亚洲一二三区不卡,国产精品乱码一区二区三区视频,亚洲三级影院

以圖找圖的原理

董沅

顧名思義,以圖找圖就是你定一張圖片,搜索引擎幫你搜索相同或相似的圖片。以下是在tineye上搜索美國(guó)派演員艾麗森·漢尼根的結(jié)果:

類似的更神奇的,甚至可以找出照片的拍攝背景。

這種技術(shù)的原理是什么?計(jì)算機(jī)怎么知道兩張圖片相似呢?

其實(shí)方法有很多。我們先來(lái)了解一個(gè)快速算法,就能達(dá)到基本的效果。這個(gè)關(guān)鍵技術(shù)叫做"感知哈希算法"(Perceptualhash algorithm),它的作用是對(duì)每張圖片生成一個(gè)"指紋"(fingerprint)字符串,然后比較不同圖片的指紋。結(jié)果越接近,就說(shuō)明圖片越相似。

下面是一個(gè)最簡(jiǎn)單的實(shí)現(xiàn):

第一步,縮小尺寸。
將圖片縮小到8x8的尺寸,總共64個(gè)像素。這一步的作用是去除圖片的細(xì)節(jié),只保留結(jié)構(gòu)、明暗等基本信息,摒棄不同尺寸、比例帶來(lái)的圖片差異。

第二步,簡(jiǎn)化色彩。
將縮小后的圖片,轉(zhuǎn)為64級(jí)灰度。也就是說(shuō),所有像素點(diǎn)總共只有64種顏色。

第三步,計(jì)算平均值。
計(jì)算所有64個(gè)像素的灰度平均值。

第四步,比較像素的灰度。
將每個(gè)像素的灰度,與平均值進(jìn)行比較。大于或等于平均值,記為1;小于平均值,記為0。

第五步,計(jì)算哈希值。
將上一步的比較結(jié)果,組合在一起,就構(gòu)成了一個(gè)64位的整數(shù),這就是這張圖片的指紋。組合的次序并不重要,只要保證所有圖片都采用同樣次序就行了。

得到指紋以后,就可以對(duì)比不同的圖片,看看64位中有多少位是不一樣的。在理論上,這等同于計(jì)算"漢明距離"(Hamming distance)。如果不相同的數(shù)據(jù)位不超過(guò)5,就說(shuō)明兩張圖片很相似;如果大于10,就說(shuō)明這是兩張不同的圖片。

這種算法的優(yōu)點(diǎn)是簡(jiǎn)單快速,不受圖片大小縮放的影響,缺點(diǎn)是圖片的內(nèi)容不能變更。如果在圖片上加幾個(gè)文字,它就認(rèn)不出來(lái)了。所以,它的最佳用途是根據(jù)縮略圖,找出原圖。

實(shí)際應(yīng)用中,往往采用更強(qiáng)大的pHash算法和SIFT算法,它們能夠識(shí)別圖片的變形。只要變形程度不超過(guò)25%,它們就能匹配原圖。這些算法雖然更復(fù)雜,但是原理與上面的簡(jiǎn)便算法是一樣的,就是先將圖片轉(zhuǎn)化成Hash字符串,然后再進(jìn)行比較。

另外類似的軟件還有“百度魔圖”的明星臉PK,我用我自己女兒的照片做了實(shí)驗(yàn),結(jié)果顯示我女兒與一位童星有80%的相似度,雖然她們年齡有差距,但至少她們都是小女孩,并且她們有共同的特征,小眼睛,小臉盤,尖下巴,小酒窩,并且她們都正在笑。

那么百度魔圖是怎么做到的?憑我的猜測(cè),可能利用了“大數(shù)據(jù)”,大數(shù)據(jù)不僅是軟件,它更是一個(gè)解決問(wèn)題的思路,一個(gè)“將一個(gè)復(fù)雜作業(yè)變成成千上萬(wàn)個(gè)簡(jiǎn)單動(dòng)作,然后讓一群簡(jiǎn)單的節(jié)點(diǎn)并行完成這些動(dòng)作”的思路”。百度魔圖就是利用了這個(gè)思路,它將一個(gè)智能比對(duì)的復(fù)雜算法分解成若干個(gè)簡(jiǎn)單特征算法:長(zhǎng)臉or圓臉、大眼睛or小眼睛、黑人or白人、帶不帶眼鏡、長(zhǎng)不長(zhǎng)胡子、是笑還是哭...等等,可能有一百多種,它將這些算法分別在你的臉上和明星的臉上進(jìn)行計(jì)算(明星的臉事先已經(jīng)計(jì)算好,將特征數(shù)據(jù)存在數(shù)據(jù)庫(kù)),然后將你的特征集合和明星的特征集合利用分布式計(jì)算進(jìn)行逐個(gè)比對(duì),算出和你匹配項(xiàng)最多的那張明星臉(就是相似度,90%、80%、70%...)。

大數(shù)據(jù)的好處是,你可以利用海量的資源完成這件事情,我們知道圖像識(shí)別算法是非常消耗資源的。上面的第一個(gè)算法例子還只是單機(jī)的實(shí)現(xiàn),那么下面的百度魔圖就可以利用分布式的計(jì)算提高準(zhǔn)群率,只要不斷的增加特征識(shí)別的基本算法,然后增加計(jì)算機(jī)源完成它,理論上就可以以一種無(wú)限接近方式去搜圖了。

熱門推薦

服務(wù)培訓(xùn)

人才招聘

  • 社會(huì)招聘
  • 校園招聘
  • 實(shí)習(xí)生招聘

了解pg

常用鏈接

客服熱線:
400-655-2828
技術(shù)投訴專線:
400-655-2828 轉(zhuǎn) 9
客戶服務(wù):
service@uniview.com
網(wǎng)絡(luò)安全:
security@uniview.com
站點(diǎn)地圖 聯(lián)系我們 法律聲明 隱私政策 浙ICP備11061412號(hào) 浙公網(wǎng)安備 33010802004032號(hào)
pg幫APP
pg幫APP
掃碼下載
渠道合作伙伴量身定制,掃碼下載