• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            不會(huì)飛的鳥

            2010年12月10日 ... 不鳥他們!!! 我要用自己開發(fā)的分布式文件系統(tǒng)、分布式調(diào)度系統(tǒng)、分布式檢索系統(tǒng), 做自己的搜索引擎!!!大魚有大志!!! ---楊書童

            [轉(zhuǎn)]相似圖片搜索的原理(二)

            昨天,我在isnowfy的網(wǎng)站看到,還有其他兩種方法也很簡單,這里做一些筆記。

            一、顏色分布法

            每張圖片都可以生成顏色分布的直方圖(color histogram)。如果兩張圖片的直方圖很接近,就可以認(rèn)為它們很相似。

            任何一種顏色都是由紅綠藍(lán)三原色(RGB)構(gòu)成的,所以上圖共有4張直方圖(三原色直方圖 + 最后合成的直方圖)。

            如果每種原色都可以取256個(gè)值,那么整個(gè)顏色空間共有1600萬種顏色(256的三次方)。針對這1600萬種顏色比較直方圖,計(jì)算量實(shí)在太大了,因此需要采用簡化方法。可以將0~255分成四個(gè)區(qū):0~63為第0區(qū),64~127為第1區(qū),128~191為第2區(qū),192~255為第3區(qū)。這意味著紅綠藍(lán)分別有4個(gè)區(qū),總共可以構(gòu)成64種組合(4的3次方)。

            任何一種顏色必然屬于這64種組合中的一種,這樣就可以統(tǒng)計(jì)每一種組合包含的像素?cái)?shù)量。

            上圖是某張圖片的顏色分布表,將表中最后一欄提取出來,組成一個(gè)64維向量(7414, 230, 0, 0, 8, ..., 109, 0, 0, 3415, 53929)。這個(gè)向量就是這張圖片的特征值或者叫"指紋"。

            于是,尋找相似圖片就變成了找出與其最相似的向量。這可以用皮爾遜相關(guān)系數(shù)或者余弦相似度算出。

            二、內(nèi)容特征法

            除了顏色構(gòu)成,還可以從比較圖片內(nèi)容的相似性入手。

            首先,將原圖轉(zhuǎn)成一張較小的灰度圖片,假定為50x50像素。然后,確定一個(gè)閾值,將灰度圖片轉(zhuǎn)成黑白圖片。

              

            如果兩張圖片很相似,它們的黑白輪廓應(yīng)該是相近的。于是,問題就變成了,第一步如何確定一個(gè)合理的閾值,正確呈現(xiàn)照片中的輪廓?

            顯然,前景色與背景色反差越大,輪廓就越明顯。這意味著,如果我們找到一個(gè)值,可以使得前景色和背景色各自的"類內(nèi)差異最小"(minimizing the intra-class variance),或者"類間差異最大"(maximizing the inter-class variance),那么這個(gè)值就是理想的閾值。

            1979年,日本學(xué)者大津展之證明了,"類內(nèi)差異最小"與"類間差異最大"是同一件事,即對應(yīng)同一個(gè)閾值。他提出一種簡單的算法,可以求出這個(gè)閾值,這被稱為"大津法"(Otsu's method)。下面就是他的計(jì)算方法。

            假定一張圖片共有n個(gè)像素,其中灰度值小于閾值的像素為 n1 個(gè),大于等于閾值的像素為 n2 個(gè)( n1 + n2 = n )。w1 和 w2 表示這兩種像素各自的比重。

              w1 = n1 / n

              w2 = n2 / n

            再假定,所有灰度值小于閾值的像素的平均值和方差分別為 μ1 和 σ1,所有灰度值大于等于閾值的像素的平均值和方差分別為 μ2 和 σ2。于是,可以得到

              類內(nèi)差異 = w1(σ1的平方) + w2(σ2的平方)

              類間差異 = w1w2(μ1-μ2)^2

            可以證明,這兩個(gè)式子是等價(jià)的:得到"類內(nèi)差異"的最小值,等同于得到"類間差異"的最大值。不過,從計(jì)算難度看,后者的計(jì)算要容易一些。

            下一步用"窮舉法",將閾值從灰度的最低值到最高值,依次取一遍,分別代入上面的算式。使得"類內(nèi)差異最小"或"類間差異最大"的那個(gè)值,就是最終的閾值。具體的實(shí)例和Java算法,請看這里

            有了50x50像素的黑白縮略圖,就等于有了一個(gè)50x50的0-1矩陣。矩陣的每個(gè)值對應(yīng)原圖的一個(gè)像素,0表示黑色,1表示白色。這個(gè)矩陣就是一張圖片的特征矩陣。

            兩個(gè)特征矩陣的不同之處越少,就代表兩張圖片越相似。這可以用"異或運(yùn)算"實(shí)現(xiàn)(即兩個(gè)值之中只有一個(gè)為1,則運(yùn)算結(jié)果為1,否則運(yùn)算結(jié)果為0)。對不同圖片的特征矩陣進(jìn)行"異或運(yùn)算",結(jié)果中的1越少,就是越相似的圖片。

            posted on 2014-03-06 21:42 不會(huì)飛的鳥 閱讀(346) 評(píng)論(0)  編輯 收藏 引用


            只有注冊用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            久久精品男人影院| 久久99精品久久久久久秒播| 青春久久| 久久精品青青草原伊人| 久久久婷婷五月亚洲97号色| 国产精品久久久久一区二区三区| 精品乱码久久久久久久| 久久久久免费精品国产| 久久青青色综合| 久久成人影院精品777| 色99久久久久高潮综合影院| 久久精品中文騷妇女内射| 91精品国产色综久久| 无码人妻久久一区二区三区 | 午夜福利91久久福利| 久久精品国产亚洲AV香蕉| 久久精品无码一区二区三区日韩 | 精品久久久久久中文字幕大豆网| 久久se精品一区精品二区| 久久久久亚洲AV片无码下载蜜桃| 国产精品免费看久久久香蕉| 久久亚洲精品成人AV| 久久久久亚洲精品日久生情| 色综合久久88色综合天天 | 97久久精品无码一区二区| 日产精品久久久久久久性色| 久久精品国产亚洲AV忘忧草18| 久久精品一区二区影院| 精品国产91久久久久久久a| 青青青伊人色综合久久| 国内精品伊人久久久久| 国内精品久久久久| 久久精品国产亚洲AV电影 | 久久噜噜电影你懂的| 国产精品久久久久久一区二区三区| 久久久久久免费视频| 中文字幕久久精品| 久久久久久国产精品美女| 久久久久亚洲av成人网人人软件| 亚洲第一永久AV网站久久精品男人的天堂AV| 91亚洲国产成人久久精品网址|