背景與原理
前段時(shí)間公司項(xiàng)目用到了語音識別,圖像識別,視頻識別等,其實(shí)不能說是識別,應(yīng)該說是相似度對比吧,畢竟相似度對比還上升不了到識別哈,等以后有了更深的理解再來討論修改下!這次就當(dāng)做一個(gè)總結(jié)吧!
其實(shí)它的原理就是一個(gè)把需要的特征總結(jié)在一個(gè)指紋碼里面,進(jìn)行降維成指紋碼,假如個(gè)指紋碼一模一樣,那兩張圖片就想似了.下面有寫怎么編譯成唯一標(biāo)識,再用漢明距離計(jì)算兩個(gè)指紋碼的相似度.
圖像相似度算法:
圖片是采用phash算法,一共分為四步吧.
1.將圖片縮放到16*16大小,這是我們選擇的合適的大小,假如寬高不一樣,直接將其壓到16*16,去掉細(xì)節(jié),只保留宏觀;
2.圖片一共是16*16的,共256個(gè)像素,我們將圖片進(jìn)行灰度化,灰度化就是只有黑白灰三種,從白到黑,一共分了255層;
3.灰度化之后將圖片進(jìn)行DCT轉(zhuǎn)換(離散余弦變化),因?yàn)闉榱俗R別有的圖片旋轉(zhuǎn),這個(gè)DCT轉(zhuǎn)換是將圖片進(jìn)行了一種壓縮算法;
4.我們對這個(gè)算法進(jìn)行了優(yōu)化,因?yàn)橹笆怯?jì)算像素的均值,我們?yōu)榱烁鼫?zhǔn)確,我們?nèi)GB,rgb一共分為255個(gè)像素,我們將255個(gè)像素分為16段,如果像素大于0-16記為0,17到32記為1,直到255,這樣就得到255位的二進(jìn)制,這就是這張圖片的指紋碼.
得到唯一標(biāo)識的指紋碼之后怎么去計(jì)算像素度呢?
通過漢明距離比較兩個(gè)二進(jìn)制距離,如果距離小于<10的話,我們就判定兩張圖片相似.如果兩個(gè)指紋碼(二進(jìn)制)一模一樣,我們就判定兩個(gè)是一張圖片,或者類似;
視頻相似度算法:
視頻的話我們是通過ffmpeg(ff am pig),它是一個(gè)專門處理視頻的框架,可以從視頻中按針提取圖片.然后就按照圖片的相似度取對比了...