【手撕算法】HC显著性检测算法
前言
HC算法出自程明明老師的論文:
Global Contrast based Salient Region Detection這個(gè)論文一共提到了兩種算法,分別是HC與RC。
HC僅僅是考慮了顏色特征,而RC考慮了空間特征。我們上一篇文章介紹的LC算法就是僅考慮了顏色特征。
HC算法和LC算法本質(zhì)上是沒有什么區(qū)別的, 但上篇LC算法我們給出代碼處理的是灰度圖,而HC算法是在LAB顏色空間處理的彩色圖。
RC以后再說。
此外我建了一個(gè)微信交流群,號(hào)主我比較菜,不過群里有厲害的哈哈,歡迎大家進(jìn)群一起學(xué)習(xí)昂。
算法原理
HC算法原理和LC有很多類似之處。最基本的算法思路可以說是完全相同:
該方法只用到了顏色特征。一個(gè)像素的顯著值是通過與圖像中的所有其它像素的色差來定義的。比如方程1:
其中D(Ik,Ii)是空間Lab中兩個(gè)像素的顏色距離度量,上式經(jīng)過擴(kuò)展像素等級(jí)變?yōu)榉匠?:
其中N為圖像I中的像素?cái)?shù)量。
由于測(cè)量沒考慮空間關(guān)系,同樣顏色值的像素具有相同的顯著值。從具有相同顏色值的像素被組合在一起的角度重新整理方程2,我們就得到每個(gè)顏色的顯著值如下方程3:
其中,Cl是像素Ik中的顏色值,n是不同像素顏色的數(shù)量,fi是圖像I中像素顏色Cj出現(xiàn)的頻率。
但是按這個(gè)寫代碼同樣有很大的時(shí)間復(fù)雜度,所以添加了兩個(gè)優(yōu)化方法以及一個(gè)輔助方法。
兩個(gè)優(yōu)化:
縮減顏色空間。三通道圖像可能的像素值為255255255個(gè)。這就導(dǎo)致無(wú)法使用直方圖來進(jìn)行加速程序,因此我們將每個(gè)通道量化為12個(gè)顏色,這樣就是121212個(gè)可能的像素值。
此外,算法還從圖像中篩選出了可以覆蓋圖像95%像素的顏色值,剩余的5%的顏色值用直方圖中的臨近像素替代,從而進(jìn)一步減少可能的顏色值。這樣就苦于應(yīng)用直方圖加速了。
一個(gè)輔助:
為了達(dá)到更好的效果,可以進(jìn)行一步平滑操作。
一些相似的顏色可能被數(shù)量化為不同的值。為了減少這類由于隨機(jī)性給顯著結(jié)果引入的噪聲,采取一套平滑程序來改善每個(gè)顏色的顯著值。用相似顏色的顯著值加權(quán)平均來代替每個(gè)顏色(以Lab*距離測(cè)量)的顯著值。選擇m=n/4個(gè)最近的顏色作為代表來改善顏色c的顯著值,如方程:
算法實(shí)現(xiàn)
算法步驟:
算法實(shí)現(xiàn):
這個(gè)算法一共200來行,,就不貼這兒有礙觀瞻了吧,放微信群了。
看看算法效果。
算法效果
THE END
今天就到這里啦,下一篇會(huì)更AC算法,vx搜索【Opencv視覺實(shí)踐】及時(shí)觀看。
總結(jié)
以上是生活随笔為你收集整理的【手撕算法】HC显著性检测算法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络拓扑图ppt,《计算机网络拓扑
- 下一篇: APP渗透测试通过burp抓取https