計算映像相似性——《Python也可以》之一

來源:互聯網
上載者:User

標籤:

 

聲明:本文最初發表於賴勇浩(戀花蝶)的部落格http://blog.csdn.net/lanphaday

 先將兩張圖片轉化為長條圖,映像的相似性計算就轉化為長條圖的距離計算了,本文依照如下公式進行長條圖相似性的定量度量:

Sim(G,S)=

其中G,S為長條圖,N 為色彩空間樣點數

轉換為相應的 Python 代碼如下: 

#!/usr/bin/env python# coding=utf-8import Imagedef make_regalur_image(img,size=(256,256)):    return img.resize(size).convert(‘RGB‘)def split_image(img,part_size=(64,64)):    w,h = img.size    pw,ph = part_size    assert w%pw == h%ph==0    return [img.crop((i,j,i+pw,j+ph)).copy() for i in xrange(0,w,pw) for j in xrange(0,h,ph)]def hist_similar(lh,rh):    assert len(lh)==len(rh)    return sum(1-(0 if l==r else float(abs(l-r))/max(l,r))for l,r in zip(lh,rh))/len(lh)def calc_similar(li,ri):    # return hist_similar(li.histogram(),ri.histogram())    return sum(hist_similar(l.histogram(),r.histogram()) for l,r in zip(split_image(li),split_image(ri)))/16.0def calc_similar_by_path(lf,rf):    li,ri = make_regalur_image(Image.open(lf)),make_regalur_image(Image.open(rf))    return calc_similar(li,ri)def make_doc_data(lf,rf):    li = make_regalur_image(Image.open(lf))    ri = make_regalur_image(Image.open(rf))    li.save(lf+‘_regalur.png‘)    ri.save(rf+‘_regalur.png‘)    fd = open(‘stat.csv‘,‘w‘)    fd.write(‘\n‘.join(l+‘,‘+r for l,r in zip(map(str,li.histogram()),map(str,ri.histogram()))))    fd.close()    import ImageDraw    li = li.convert(‘RGB‘)    draw = ImageDraw.Draw(li)    for i in xrange(0,256,64):        draw.line((0,i,256,i),fill =‘#F00‘)        draw.line((i,0,i,256),fill=‘#F00‘)    li.save(lf+‘_lines.png‘)if __name__==‘__main__‘:    path = r‘test/TEST%d/%d.JPG‘    for i in xrange(1,7):        print ‘test_case_%d: %.3f%%‘%(i,calc_similar_by_path(‘test/TEST%d/%d.JPG‘%(i,1),‘test/TEST%d/%d.JPG‘%(i,2))*100)    make_doc_data(‘test/TEST4/1.JPG‘,‘test/TEST4/2.JPG‘)

參考:

用Python做影像處理

計算映像相似性——《Python也可以》之一

計算映像相似性——《Python也可以》之一

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.