A. Opencv將多維特徵向量利用K-means演算法聚類
你的理解沒有錯,確實是一個樣本一行,
CvMat* sample = cvCreateMat( sample_dimension, 1, CV_32FC2 );
或者使用 Mat sample;
sample.create(...);
B. 機器學習中,有沒有給定的閾值返回聚類結果的演算法
機器學習通過從數據里提取規則或模式來把數據轉換成信息。主要的方法有歸納學習法和分析學習法。數據首先被預處理,形成特徵,然後根據特徵創建某種模型。機器學習演算法分析收集到的數據,分配權重、閾值和其他參數達到學習目的。如果只想把數據分成不同的類,那麼「聚類」演算法就夠了;如果需要預測,則需要一個「分類」演算法。OpenCV庫裡麵包含的是基於概率統計的機器學習方法,貝葉斯網路、馬爾科夫隨機場、圖模型等較新的演算法還在成長過程中,所以OpenCV還沒有收錄。
機器學習的演算法有很多很多:1、Mahalanobis
2、K-means 非監督的聚類方法3、樸素貝葉斯分類器 特徵是高斯分布&&統計上相互獨立 條件比較苛刻4、決策數 判別分類器,根據閾值分類數據,速度快。ID3,C4.5
5、Boosting 多個判別子分類器的組合6、隨機森林 由多個決策樹組成7、人臉檢測/Haar分類器 使用Boosting演算法8、期望最大化EM 用於聚類的非監督生成演算法
9、K-近鄰 最簡單的分類器10、神經網路(多層感知器) 訓練分類器很慢,但是識別很快11、支持向量機 SVM 可以分類,也可以回歸。通過分類超平面實現在高維空間里的最優分類
12、遺傳演算法 借鑒生物遺傳機制 ,隨機化埂攻第煌郢號電銅釘擴非線性計算演算法總之呢,個人覺得,機器學習、數據挖掘、模式識別、專家系統等方向和領域目前還是一種比較混亂的局面。學術界和商業界可能是不同的,關於演算法的理論研究和使用這些方法生成商品是分別關注的。按照不同的領域、不同的方法可以劃分出眾多的分支。但是有一點是肯定的,這些在上世紀80年代提出來的公式和證明,如今正在變成一行行的代碼,在一些貓(tomcat)、IIS等伺服器的支持下,爬上了網路,到處尋覓對主人有用的信息,然後運送到網路中,最終生成產品,或者半產品。看看你電腦上的那根網線,它那麼小,但是很難想像它從你的電腦上拿走了什麼,又給你送來了什麼。有些遠了,繼續說數據這些事。目前我接觸過的演算法有:(太多了,一時間真不好說出來) 神經網路(感知器、BP、RBF等很多的演算法),遺傳演算法,支持向量機,層次分析法,各種回歸,灰色系統(國產的方法,用於不確定知識的預測),粗糙集,貝葉斯網路,時間序列分析(也有很多)。學習和研究紙面的演算法公式只是第一步,不可以忽略的基礎,如何使用這些方法,在浩瀚的互聯網上找到自己需要的、滿足客戶需要的數據和信息,從而讓需要的人能夠更加方便地得到,是今後的重頭戲了。貌似很多的企業已經進軍數據倉庫這一塊,並嘗到了巨大的甜頭,也有企業養著一隊預備軍,專注研發,隨時准備奔赴前線,佔領市場。無線網路市場的競爭已經到了激烈的局面,普適計算的時代也快到了吧。它依賴於硬體產品的可穿戴,和軟體產品的內嵌、快速響應。總而言之,越來越人性化,誰都不願意抱著筆記本電腦蹲廁所,是吧?
C. 如何在opencv中使用層次聚類演算法
如何在opencv中使用層次聚類演算法
Invalidate只是放一個WM_PAINT消息在隊列里,不做別的,所以只有當當前函數返回後,進入消息循環,取出WM_PAINT,才執行PAINT,所以不管Invalidate放哪裡,都是最後的。
InvalidateRect(hWnd,&rect,TRUE);向hWnd窗體發出WM_PAINT的消息,強制客戶區域重繪制,
rect是你指定要刷新的區域,此區域外的客戶區域不被重繪,這樣防止客戶區域的一個局部的改動,而導致整個客戶區域重繪而導致閃爍,如果最後的參數為TRUE,則還向窗體發送WM_ERASEBKGND消息,使背景重繪,當然在客戶區域重繪之前。
D. 什麼是均值漂移圖像分割技術
均值漂移演算法是一種通用的聚類演算法,它的基本原理是:對於給定的一定數量樣本,任選其中一個樣本,以該樣本為中心點劃定一個圓形區域,求取該圓形區域內樣本的質心,即密度最大處的點,再以該點為中心繼續執行上述迭代過程,直至最終收斂。
可以利用均值偏移演算法的這個特性,實現彩色圖像分割,Opencv中對應的函數是pyrMeanShiftFiltering。這個函數嚴格來說並不是圖像的分割,而是圖像在色彩層面的平滑濾波,它可以中和色彩分布相近的顏色,平滑色彩細節,侵蝕掉面積較小的顏色區域,所以在Opencv中它的後綴是濾波「Filter」,而不是分割「segment」。先列一下這個函數,再說一下它「分割」彩色圖像的實現過程。
E. Opencv將多維特徵向量利用K-means演算法聚類
你的理解沒有錯,確實是一個樣本一行,
CvMat*
sample
=
cvCreateMat(
sample_dimension,
1,
CV_32FC2
);
或者使用
Mat
sample;
sample.create(...);
F. 機器學習同一特徵在不同閾值下取值可以算不同維度嗎
當然可以。通常情況下,閾值越大,准確率越高,召回率越低。
G. 編程實現圖像處理
這個是很基本的圖像處理了。寫個思路給你吧。
第一步:對整張圖像做k-means聚類,或者其他聚類演算法也行。我喜歡我MST聚類,不會有空洞;
第二步:依序考察你得到的每一類,考察的指標看你要求了。比如面積(一般用聚類區域的周長來代替,因為好算),像素數,顏色分布等(實際圖片中基本不可能有真正的純色區域,因為雜訊多少會有點波動)。選出你要的那個區域(也就是類)。
第三步:用另一張圖像替換這個區域。我不太清楚你要做出什麼樣的效果,如果只是縮放到同等大小然後貼上去的話,直接縮放然後把像素矩陣復制過去就行了。如果要比較完美的「融合」的話,還要在邊緣處做插值(最近鄰,線性,雙線性隨你選,當然效果越好計算代價越高)。
至於用什麼軟體做,用你熟悉的軟體就行了。對實時性沒要求的話Matlab足夠,否則用OpenCV比較好,也就是C++。
另外,聚類演算法如果不是很好的話,邊緣會出現鋸齒,用形態學開運算濾掉即可。
還有什麼問題的話可以追問我。
H. opencv 的saliency API 怎麼用
過圖像分割和區域顏色,距離等信息計算得到顯著信息。
主要步驟依次為顏色聚類,圖像分割,對每個分割區域分別計算顏色直方圖,然後計算每個區域的顯著性信息,計算時,每兩個區域的距離用顏色直方圖距離衡量,每個區域對別的區域的顯著性貢獻和該區域面積有關,所以演算法主要突出以下幾種區域
i、顏色直方圖和周圍區域差距大。
ii、本身面積小
I. 什麼是機器學習
機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、演算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。
它是人工智慧的核心,是使計算機具有智能的根本途徑,其應用遍及人工智慧的各個領域,它主要使用歸納、綜合而不是演繹。