01什麼是圖像相似性度量
圖像相似性度量是測度兩幅圖像的相似程度。這個定義看起來沒有做什麼解釋,實際上圖像相似性度量就像它的名字一樣容易理解,通過度量的方式測度兩幅圖像到底有多麼一樣。
02圖像相似性度量能做什麼
目前學術中最常用的場景是做目標追蹤、位置獲取,在一些算法如blobTracking,Meanshift,Camshift和粒子濾波等都需要圖像相似性度量做理論支撐。市場應用是Google的以圖搜圖,就是根據已有圖像搜索更多類似的圖像。谷歌已經開發出圖像搜索,但是性能很不好,遠遠低於文字檢索質量。國內百度也做了圖像搜索,她的方法更像是擦邊球,通過搜索圖像的標籤給出類似或者完全不同的圖像。下面是兩個搜索網站對同一幅圖像的搜索,結果如下。
很顯然,圖像搜索方向無論百度還是谷歌都還有很長的路要走。其實圖像搜索一直是科技界努力攻關的熱點。但每一幅圖像尺寸都不小,對百度和谷歌而言,在海量圖片中搜索對伺服器和算法的要求太高了,做得不好也可以理解。
03圖像相似性搜索的哈希算法
圖像相似性搜索有直方圖方法,測量圖像灰度的概率分布;圖像模板匹配:對比的兩幅圖像大小不一致,採用滑動窗口度量;PSNR峰值信噪比:基於像素點之間的誤差做圖像質量評價;ssim的結構相似性檢測,從亮度、對比度、結構三方面度量圖像相似性。SSIM取值範圍[0,1],值越大,表示圖像失真越小.。最後一種是我們重點介紹的感知哈希算法,具體來說哈希算法包括了三種:均值、差異和感知,由於三種算法原理非常相似,這裡只介紹感知哈希算法。
感知哈希算法(perceptual hash algorithm),它的作用是對每張圖像生成一個「指紋」(fingerprint)字符串,然後比較不同圖像的指紋。結果越接近,就說明圖像越相似。得到圖像的「指紋」啊,當我第一次看到這個詞的時候,非常激動。要是能夠提取出圖像獨一無二的指紋,很多問題就可以迎刃而解!
感知哈希算法流程非常簡潔,將圖像壓縮/擴張為32*32的灰度圖,灰度圖做離散餘弦變換,然後對變換後的圖像求灰度均值(np.mean(img))。將每個灰度和均值比大小。大於等於平均值,該位置記作1,否則記作0. 這樣就得到圖像的指紋。具體過程和算法如下圖。若大家感興趣可以找一幅圖像帶入看看,觀察圖像的指紋。
04感知哈希算法的思考
感知哈希算法生成圖像指紋的方法中,如果該像素的灰度值小於平均值,則記為0,大於等於平均值則記為1. 這樣得到圖像長達64位、由{0,1}構成的圖像指紋。顯然從圖像到指紋是單射,而一個指紋可以對應多個圖像,不是一一對應的關係。根據同一個指紋生成的圖像具有某種共同的特點。是否可以修改指紋的記錄方式?比如採用模糊數學的思路,不直接記作0和1,而是記錄為f(Aij-Aavg),這樣得到的指紋具有什麼特點?能夠做什麼?上述的小問題供大家思考。
感知哈希算法是非常有意思的方法,今後我會持續關注,有什麼新的應用和體會及時和大家分享。
清華大學電子工程系章毓晉教授編寫的《圖像工程》這本書對圖形圖像做了非常深刻系統的梳理,是很多高校的指定教材,印刷多次,目前已經到了第四版。第4版增加了一項新的舉措。書中彩色圖片印刷後均為黑白的,可以通過手機掃描圖片旁的二維碼,調出存放在出版社網站上的對應彩色圖片,獲得更多的信息和更好的觀察效果。
從1996年開始編寫《圖像工程》第1版以來至今已20多年。期間,作者與許多讀者(包括教師、學生、自學者等)有過各種形式的討論和交流,除了與一些同行面談外,許多人打來電話或發來電子郵件。這些討論和交流使作者獲得了許多寶貴的意見和建議,在編寫這4版中都起到了不可或缺的作用,特別是在解釋和描述的詳略方面都結合讀者反饋意見進行了調整,從而更加容易理解和學習。值得指出的是,書中還匯集了多年來不少聽課學生的貢獻,許多例題和練習題是在歷屆學生作業和課堂討論的基礎上提煉出來的,一些圖片還直接由學生幫助製作,在選材上也從學生的反饋中受到許多啟發。藉此機會對他們一併表示衷心的感謝。