日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

r语言把两个折线图图像放到一个图里_图像相似度度量

發布時間:2025/3/21 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 r语言把两个折线图图像放到一个图里_图像相似度度量 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

圖像相似度度量的應用場景很多,包括以圖搜圖,相似圖像去重等多種功能,目前在項目中的場景是針對大量重復類似的圖片,需要進行篩選剔除,自然需要用到圖像相似度,簡單調研了下圖像相似度的方法,包括傳統圖像方法和機遇深度學習的方法。

有個很 naive 的搞法是拿隨便一個什么 imagenet 網絡的倒數第二層結果做 feature vector。但是因為這是基于分類的結果,必然是丟棄紋理而取高層語義的。那么如果你的需求就是比較一堆比方說大理石紋理……我猜這個 feature 都未必比得上直接比直方圖。

還有比如使用AM-softmax進行分類訓練,把訓練好的網絡去掉最后一層分類層,選取最后一個隱藏層輸出作為一個數據的特征。兩個數據特征使用余弦相似度進行計算,簡單來說,拿一個在imagenet上預訓練的vgg模型提取圖像特征,然后用余弦比較兩個特征向量的相似度。

傳統圖像方法,主要是哈希算法,分別有以下幾種:

平均哈希算法(ahash):

此算法是基于比較灰度圖每個像素與平均值來實現的,最適用于縮略圖,放大圖搜索。

1.縮放圖片:為了保留結構去掉細節,去除大小、橫縱比的差異,把圖片統一縮放到8*8,共64個像素的圖片。

2.轉化為灰度圖:把縮放后的圖片轉化為256階的灰度圖。

附上灰度圖相關算法(R = red, G = green, B = blue)

1.浮點算法:Gray=R*0.3+G*0.59+B*0.11

2.整數方法:Gray=(R*30+G*59+B*11)/100

3.移位方法:Gray =(R*76+G*151+B*28)>>8;

4.平均值法:Gray=(R+G+B)/3;

5.僅取綠色:Gray=G;

3.計算平均值: 計算進行灰度處理后圖片的所有像素點的平均值。

4.比較像素灰度值:遍歷灰度圖片每一個像素,如果大于平均值記錄為1,否則為0.

5.得到信息指紋:組合64個bit位,順序隨意保持一致性即可。

6.對比指紋:計算兩幅圖片的指紋,計算漢明距離(從一個指紋到另一個指紋需要變幾次),漢明距離越大則說明圖片越不一致,反之,漢明距離越小則說明圖片越相似,當距離為0時,說明完全相同。(通常認為距離>10 就是兩張完全不同的圖片)

感知哈希算法(phash):

平均哈希算法過于嚴格,不夠精確,更適合搜索縮略圖,為了獲得更精確的結果可以選擇感知哈希算法,它采用的是DCT(離散余弦變換)來降低頻率的方法

1.縮小圖片:32 * 32是一個較好的大小,這樣方便DCT計算

2.轉化為灰度圖:把縮放后的圖片轉化為256階的灰度圖。(具體算法見平均哈希算法步驟)

3.計算DCT:DCT把圖片分離成分率的集合

4.縮小DCT:DCT是32*32,保留左上角的8*8,這些代表的圖片的最低頻率

5.計算平均值:計算縮小DCT后的所有像素點的平均值。

6.進一步減小DCT:大于平均值記錄為1,反之記錄為0.

7.得到信息指紋:組合64個信息位,順序隨意保持一致性即可

8.對比指紋:計算兩幅圖片的指紋,計算漢明距離(從一個指紋到另一個指紋需要變幾次),漢明距離越大則說明圖片越不一致,反之,漢明距離越小則說明圖片越相似,當距離為0時,說明完全相同。(通常認為距離>10 就是兩張完全不同的圖片)

感知哈希算法示例代碼:

#!/usr/bin/env python # -*- encoding: utf-8 -*- ''' @File :sample_diff.py @Date :2020/03/31 10:18:00 @Author :mrwang @Version :1.0 '''from PIL import Image from os import listdirdef picPostfix(): # 圖片后綴的集合postFix = set()postFix.update(['bmp', 'jpg', 'png', 'tiff', 'gif', 'pcx', 'tga', 'exif','fpx', 'svg', 'psd', 'cdr', 'pcd', 'dxf', 'ufo', 'eps', 'JPG', 'raw', 'jpeg'])return postFixdef getDiff(width, height, image): # 將要裁剪成w*h的image照片 得到漸變序列diff = []im = image.resize((width, height))imgray = im.convert('L') # 轉換為灰度圖片 便于處理pixels = list(imgray.getdata()) # 得到像素數據 灰度0-255for row in range(height):rowStart = row * width # 起始位置行號for index in range(width - 1):leftIndex = rowStart + index # 當前位置號rightIndex = leftIndex + 1diff.append(pixels[leftIndex] > pixels[rightIndex])return diffdef getHamming(diff=[], diff2=[]):# print len(diff)hamming_distance = 0for i in range(len(diff)):if diff[i] != diff2[i]:hamming_distance += 1return hamming_distanceif __name__ == '__main__':width = 32height = 32thre = 100 #判別的漢明距離閾值,根據自己情況設置dirName = "/home/workspace/lost/Images" # 圖片路徑allDiff = []postFix = picPostfix()dirList = listdir(dirName)cnt = 0for i in dirList:cnt += 1print('cnt:', cnt)if str(i).split('.')[-1] in postFix: # 判斷后綴是不是照片格式im = Image.open(r'%s/%s' % (dirName, str(i)))diff = getDiff(width, height, im)allDiff.append((str(i), diff))print(len(allDiff))for i in range(len(allDiff)):for j in range(i + 1, len(allDiff)):if i != j:ans = getHamming(allDiff[i][1], allDiff[j][1])if ans <= thre:print(allDiff[i][0], "and", allDiff[j][0], "maybe same photo.")

差異哈希算法(dhash):

相比pHash,dHash的速度要快的多,相比aHash,dHash在效率幾乎相同的情況下的效果要更好,它是基于漸變實現的。

1.縮小圖片:收縮到9*8的大小,一遍它有72的像素點

2.轉化為灰度圖:把縮放后的圖片轉化為256階的灰度圖。(具體算法見平均哈希算法步驟)

3.計算差異值:dHash算法工作在相鄰像素之間,這樣每行9個像素之間產生了8個不同的差異,一共8行,則產生了64個差異值

4.獲得指紋:如果左邊的像素比右邊的更亮,則記錄為1,否則為0.

需要說明的是這種指紋算法不僅可以應用于圖片搜索,同樣適用于其他多媒體形式。除此之外,圖片搜索特征提取方法有很多,很多算法還有許多可以改進的地方,比如對于人物可以先進行人臉識別,再在面部區域進行局部的哈希,或者背景是純色的可以先過濾剪裁等等。

深度學習的方法,主要是孿生網絡:

Siamese networks(孿生網絡)

首先我們會喂給神經網絡成對的圖片,然后訓練網絡讓它去猜測這兩個圖片是否屬于同一類別。然后在給定測試集的樣本時,神經網絡可以將該樣本與測試集中的樣本配對并且選擇出最有可能和測試集同類別的樣本,因此我們需要的神經網絡模型的輸入是兩張圖片,然后輸出它們之間屬于同一類別的可能性。

假設

是數據集中的兩個樣本,屬于同一個類別記為 ,很明顯和 等價。這也就說明在給神經網絡喂數據時,即使兩張照片調換順序最后的輸出也不會受到影響。這種特性被稱為“對稱性”。這樣的特性就決定了我們需要學習一種距離度量,即從 到 的距離等價于從 到 的距離。

如果我們將兩個樣本連接(concate操作)在一起形成單個輸入并且將其喂給神經網絡,那么每個合成樣本(調換兩個樣本concate的順序,整個合成矩陣的結構就不一樣了)的矩陣元素會和不同的一系列權重值相稱或卷積,這就打破了“對稱性”的原則。換句話說,即使是對不同順序的輸入最后都能學習到相同的weights參數,因此我們可以設計一種相同的網絡結構并且兩者之間權重共享,每種網絡結構對應于一個input(因為兩者完全相同,因此兩個input即使調換位置也不會影響模型的學習)。然后用絕對值距離作為輸入喂給線性分類器得到output。這就是Siamese network 的由來。

基于孿生網絡的方法有個短板就是訓練數據要有label。cvpr2016年有一篇論文是基于無監督的,Learning Compact Binary Descriptors with Unsupervised Deep Neural Networks cvpr,重點是無監督,圖像可以是無label的,實際上是大量的樣本自己去產生類似的hash值,隱含的聚類。

總結

以上是生活随笔為你收集整理的r语言把两个折线图图像放到一个图里_图像相似度度量的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日韩在线激情视频 | 7777精品视频| 午夜不卡久久精品无码免费 | 外国av网站 | 在线观看网站av | 91av国产在线 | 国产福利视频在线 | 男男毛片| 日日操夜夜干 | 四虎网址在线观看 | 午夜精品偷拍 | 好男人www社区在线视频夜恋 | 手机看片1024久久 | 五月婷婷开心中文字幕 | 欧美色激情 | 国产片淫乱18一级毛片动态图 | 丰满的女人性猛交 | 日韩成人午夜电影 | 国产精品精品软件视频 | 国产欧美日韩精品在线观看 | 太久av| 黄色成人在线网站 | 高清国产午夜精品久久久久久 | 99国产精品久久久 | 91资源站 | 国产视频最新 | 超碰综合在线 | 色妺妺视频网 | 亚洲欧美日韩一区二区三区四区 | 亚洲人掀裙打屁股网站 | 日韩不卡在线播放 | 五月天婷婷爱 | 久久东京 | 99久久久无码国产精品性黑人 | 中国美女黄色一级片 | 欧美性久久久 | 亚洲日本久久 | 国产亚洲精品女人久久久久久 | 91一起草 | 国产黄色在线看 | 国产精品一区二区无线 | 欧美日韩中文字幕在线视频 | 手机av在线不卡 | 美女性高潮视频 | 精品99在线观看 | 亚洲综合视频在线观看 | 久久久久久久一区二区三区 | 免费视频久久久 | 日本少妇b | 99无码熟妇丰满人妻啪啪 | 天天草夜夜草 | 欧美一区二区三区爽爽爽 | 91国模| 黄色片子视频 | 小辣椒导航 | 真实的国产乱xxxx在线91 | 亚洲va韩国va欧美va精品 | 欧美日韩在线视频一区二区三区 | 91精品视频免费观看 | 国产一区二区在 | 91精品视频观看 | 国产一级一片免费播放放a 丁香六月色 | 国产又大又硬又粗 | 国产精品一区不卡 | 精品一区二区久久久久久按摩 | 北条麻妃一区二区三区在线观看 | 欧美另类v| 亚洲国产成人久久 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 老司机黄色片 | 欢乐谷在线观看免费播放高清 | 今天高清视频在线观看视频 | 国产另类自拍 | 欧美无专区 | 一区二区午夜 | 天堂av资源在线观看 | 久久午夜鲁丝 | 免费毛片网站在线观看 | 四虎影像 | 国产99精品| 中国美女一级片 | 蜜桃在线一区二区三区 | 欧亚在线视频 | 日本电车痴汉 | 女同一区二区三区 | 欧洲-级毛片内射 | 波多野结衣小视频 | 久久久久久久久久国产精品 | 2021毛片 | 国产一区二区三区四区hd | 人与动物2免费观看完整版电影高清 | www四虎| 日韩中文字幕国产 | 久久精品免费电影 | 国产a视频精品免费观看 | 亚洲av熟女高潮一区二区 | 大陆明星乱淫(高h)小说 | 2021中文字幕 | 精品乱子伦|