百度演算法圖片
❶ 百度圖片搜索引擎原理是如何實現的
圖片搜索的原理有三個步驟
1. 將目標圖片進行特徵提取,描述圖像的演算法很多,用的比較多的是:SIFT描述子,指紋演算法函數,bundling features演算法,hash function(散列函數)等。也可以根據不同的圖像,設計不同的演算法,比如圖像局部N階矩的方法提取圖像特徵。
2. 將圖像特徵信息進行編碼,並將海量圖像編碼做查找表。對於目標圖像,可以對解析度較大的圖像進行降采樣,減少運算量後在進行圖像特徵提取和編碼處理。
3. 相似度匹配運算:利用目標圖像的編碼值,在圖像搜索引擎中的圖像資料庫進行全局或是局部的相似度計算;根據所需要的魯棒性,設定閾值,然後將相似度高的圖片預保留下來;最後應該還有一步篩選最佳匹配圖片,這個應該還是用到特徵檢測演算法。
其中每個步驟都有很多演算法研究,圍繞數學,統計學,圖像編碼,信號處理等理論進行研究。
根據Neal Krawetz博士的解釋,原理非常簡單易懂。我們可以用一個快速演算法,就達到基本的效果。
這里的關鍵技術叫做"感知哈希演算法"(Perceptual hash algorithm),它的作用是對每張圖片生成一個"指紋"(fingerprint)字元串,然後比較不同圖片的指紋。結果越接近,就說明圖片越相似。下面是一個最簡單的實現:
第一步,縮小尺寸。
將圖片縮小到8x8的尺寸,總共64個像素。這一步的作用是去除圖片的細節,只保留結構、明暗等基本信息,摒棄不同尺寸、比例帶來的圖片差異。
第二步,簡化色彩。
將縮小後的圖片,轉為64級灰度。也就是說,所有像素點總共只有64種顏色。
第三步,計算平均值。
計算所有64個像素的灰度平均值。
第四步,比較像素的灰度。
將每個像素的灰度,與平均值進行比較。大於或等於平均值,記為1;小於平均值,記為0。
第五步,計算哈希值。
將上一步的比較結果,組合在一起,就構成了一個64位的整數,這就是這張圖片的指紋。組合的次序並不重要,只要保證所有圖片都採用同樣次序就行了。
得到指紋以後,就可以對比不同的圖片,看看64位中有多少位是不一樣的。在理論上,這等同於計算"漢明距離"(Hammingdistance)。如果不相同的數據位不超過5,就說明兩張圖片很相似;如果大於10,就說明這是兩張不同的圖片。
具體的代碼實現,可以參見Wote用python語言寫的imgHash.py。代碼很短,只有53行。使用的時候,第一個參數是基準圖片,第二個參數是用來比較的其他圖片所在的目錄,返回結果是兩張圖片之間不相同的數據位數量(漢明距離)。
這種演算法的優點是簡單快速,不受圖片大小縮放的影響,缺點是圖片的內容不能變更。如果在圖片上加幾個文字,它就認不出來了。所以,它的最佳用途是根據縮略圖,找出原圖。
實際應用中,往往採用更強大的pHash演算法和SIFT演算法,它們能夠識別圖片的變形。只要變形程度不超過25%,它們就能匹配原圖。這些演算法雖然更復雜,但是原理與上面的簡便演算法是一樣的,就是先將圖片轉化成Hash字元串,然後再進行比較。
❷ 蝴蝶演算法口訣圖解
蝴蝶演算法口訣圖解,如下:
蝴蝶演算法(Butterfly Algorithm)是根據蝴蝶受香味吸引飛行的行為而提出的優化演算法。演算法於2015年提出,效果中規中矩,不過相關的論文數量也不少了。演算法的流程和結構非常簡單,不過論文對演算法的細節描述不夠清晰,有些參數意義不明。讓罩
其中,x:表示第i個蝴蝶在第t次迭代中的解向量,這里a*表示目前為止的最優解。第2隻 蝴 蝶的 香 味用 f;來表示,r為0到1的隨機坦御鬧數。局部搜索可表示為x+1 =對 + (r2 *x -x) * f
其中r為0到1的隨機數,x和x:表示從解空間中隨機選擇的第k只和第 j只蝴蝶。在蝴蝶的覓食過程中,全局和局部搜索都會發生,為此,設定一個開關概率p來轉換普通的全局搜索和容集的局部搜索。每次迭代用式(4)隨機產生一個數r,與開關概率p進行比較來決定進行全局搜索還是局部搜索。
❸ 設計一個求解一般二元一次方程組的演算法,並畫出程序框圖
分析:根據加法消元法,求出二元一次方程組(a1b2-a2b1≠0)的解,根據求解過程,可得所求框圖。
(一)演算法步驟:
(1)輸入a1,b2,a2,b1,c1,c2.
(2)計算x的值為:
(3)百度演算法圖片擴展閱讀:
程序流程圖的規范表示:
①使用標準的框圖符號。
②框圖一般按從上到下、從左到右的方向畫,流程線要規范。
③除判斷框外,大多數框圖符號只有一個進入點和一個退出點。
④在圖形符號內描述的語言要非常簡練、清楚。
在學習程序框圖時要掌握各程序框的作用,准確應用三種基本邏輯結構,即順序結構、條件分支結構、循環結構來畫程序框圖准確表達演算法。畫程序框圖是用基本語句來編程的前提。
演算法的三種基本邏輯結構:
①順序結構:順序結構描述的是是最簡單的演算法結構,語句與語句之間,框與框之間是按從上到下的順序進行的。
②條件結構:根據條件選擇執行不同指令的控制結構。
③循環結構:在一些演算法中,經常會出現從某處開始,按照一定條件,反復執行某一處理步驟的情況
參考資料來源:網路--演算法流程圖