Time of Update: 2018-12-03
DoG(Difference of Gaussian)DoG (Difference of Gaussian)是灰階映像增強和角點檢測的方法,其做法較簡單,證明較複雜,具體講解如下:Difference of Gaussian(DOG)是高斯函數的差分。我們已經知道可以通過將映像與高斯函數進行卷積得到一幅映像的低通濾波結果,即去噪過程,這裡的Gaussian和高斯低通濾波器的高斯一樣,是一個函數,即為常態分佈函數。那麼difference of Gaussian
Time of Update: 2018-12-03
==============================================著作權:小熊不去實驗室CSDN部落格==============================================原理:凸透鏡效果演算法#include <math.h>#include <opencv/cv.h>#include <opencv/highgui.h>using namespace cv;using namespace std;int
Time of Update: 2018-12-03
==============================================著作權:小熊不去實驗室CSDN部落格==============================================#include <math.h>#include <opencv2/contrib/contrib.hpp>#include <opencv2/core/core.hpp>#include
Time of Update: 2018-12-03
#include "stdafx.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){int a[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};int *p;//指標p是指向整型資料的指標變數for (p=a[0]; p<a[0]+12; p++)//p的初始值也可以寫為&a[0][0], 迴圈條件也可以寫為p<
Time of Update: 2018-12-03
本文作者:longlongago 部落格地址:http://blog.csdn.net/longlongago2000在以取得DIB的情況下,可以將DIB轉化為IplImage,核心代碼如下:byte * p = new byte[bmp.bmWidthBytes * bmp.bmHeight];//申請記憶體儲存位元影像資料 //得到映像資料放到p數組中 GetDIBits(memDC.m_hDC, (HBITMAP) memBitmap.m_hObject, 0, Height,
Time of Update: 2018-12-03
暴力方法:掃描數組中的每個數,逐個比較該數字和其後面的數位大小,若後面的數字比其小,則是一個逆序對。改進方法:先把數組分割成子數組,先統計出子數組內部的逆序對數,然後再統計出兩個相鄰子數組見的逆序對數。統計逆序對的過程中,需要對數組進行排序。顯然排序過程是歸併排序。時間複雜度由O(n^2)降為O(nlogn),但需要O(n)的空間複雜度,是用空間換時間的做法。代碼:#include "stdafx.h"#include <iostream>#include <assert.h&
Time of Update: 2018-12-03
沒日沒夜的改論文生活終於要告一段落了,比起改論文,學OpenCV就是一件幸福的事情。OpenCV的發展越來越完善了,已經可以直接使用BOW函數來進行對象分類了。簡單的通過特徵點分類的方法: 一、train1.提取+/- sample的feature,每幅圖提取出的sift特徵個數不定(假設每個feature有128維)2.利用聚類方法(e.g K-means)
Time of Update: 2018-12-03
vs2008運行正確,如有誤,請各位大牛指正!注意與單鏈表(帶頭結點)的差別// CycleList.cpp : 定義控制台應用程式的進入點。//迴圈鏈表#include "stdafx.h"#include <iostream>using namespace std;template<class Type>struct Node{Type data;Node<Type> *next;};template<class Type>class
Time of Update: 2018-12-03
代碼:#include "stdafx.h"#include <iostream>#include <vector>using namespace std;struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight;};void FindPath(BinaryTreeNode *pRoot, int nSum, vector<int>&
Time of Update: 2018-12-03
轉自:http://blog.csdn.net/yangliuy/article/details/8296481 以PLSA和LDA為代表的文本語言模型是當今統計自然語言處理研究的熱點問題。這類語言模型一般都是對文本的產生過程提出自己的機率圖模型,然後利用觀察到的語料資料對模型參數做估計。有了語言模型和相應的模型參數,我們可以有很多重要的應用,比如文本特徵降維、文本主題分析等等。本文主要介紹文本分析的三類參數估計方法-最大似然估計MLE、最大後驗機率估計MAP及貝葉斯估計。1、最大似然估計MLE
Time of Update: 2018-12-03
特徵點檢測和匹配是電腦視覺中一個很有用的技術。在物體檢測,視覺跟蹤,三維常年關鍵等領域都有很廣泛的應用。這一次先介紹特徵點檢測的一種方法——FAST(features from accelerated segment
Time of Update: 2018-12-03
分析:1. 二叉樹中,每個結點都有兩個指向子結點的指標。2. 在雙向鏈表中,每個結點也有兩個指標,分別指向前一個結點和後一個結點。3. 二叉搜尋樹中,左子結點的值總是小於父結點的值,右子結點的值總是大於父結點的值。4. 將二叉搜尋樹轉換為雙向鏈表時,原先指向左子結點的指標調整為鏈表中指向前一個結點的指標,原先指向右子結點的指標調整為鏈表中指向後一個結點的指標。5. 由於要求轉換之後的鏈表是排好序的,所以我們採取中序遍曆。6.
Time of Update: 2018-12-03
原來一直覺得OpenCV裡的長條圖函數十分簡單,今天臨時需要用才發現原來OpenCV的calcHist功能如此強大,不僅能計算常見的1D Hist, calcHist理論上支援32維以下的Hist.(32維啊 有木有!)void calcHist(const Mat* images, int nimages, const int* channels, InputArray mask, OutputArray hist, int dims, const int* histSize, const
Time of Update: 2018-12-03
SIFT 後來有兩種擴充,都用到PCA的概念。1. PCA-SIFT PCA-SIFT與標準sift有相同的亞像素位置(sub-pixel),尺度(scale)和主方向(dominant orientations),但在第4步計算描述子的時候,它用特徵點周圍的41×41的像斑計算它的主元,並用PCA-SIFT將原來的2×39×39維的向量降成20維,以達到更精確的表示方式 一
Time of Update: 2018-12-03
思路:二叉樹的深度等於左右子樹的最大深度加1,顯然利用遞迴。代碼:#include "stdafx.h"#include <iostream>#include <deque>using namespace std;struct BinaryTreeNode{int m_nValue;BinaryTreeNode *m_pLeft;BinaryTreeNode *m_pRight;};//求二叉樹的深度int Depth(BinaryTreeNode *pRoot){if
Time of Update: 2018-12-03
==============================================著作權:小熊不去實驗室CSDN部落格==============================================浮雕的演算法是對映像的每一個點進行卷積處理,採用的矩陣如下 [1 0 0; 0 0 0; 0 0 -1 ];假設原映像為X,處理後的映像為Y
Time of Update: 2018-12-03
注意:當函數輸入無效時,返回為0,而子數組的和也有可能為0,為了區分,設定一個全域變數標記輸入是否有效。思路用下表說明:代碼:#include "stdafx.h"#include <iostream>using namespace std;bool bInvalidInput = false;//用全域變數標記是否為無效輸入//求連續子數組的最大和int FindGreatestSumOfSubArray(int nArr[], int nLength){ if (nArr
Time of Update: 2018-12-03
分析:在後序遍曆得到的序列中,最後一個數字是樹的根結點的值,數組中前面的數字可分為兩個部分:第一部分是左子樹結點的值,它們都比根結點的值小,第二部分是右子樹結點的值,它們都比根結點的值大。代碼:#include "stdafx.h"#include <iostream>using namespace std;bool VerifySequenceOfBST(int nSequence[], int nLength){if (nSequence == NULL || nLength &
Time of Update: 2018-12-03
方法一:對n個整數進行排序(快速排序或堆排序),取出前K個元素(最容易想到的最笨的方法,不可取)時間複雜度:O(n*logn) + O(k) = O(n*logn)採用快速排序的代碼:#include "stdafx.h"#include <iostream>using namespace std;//劃分數組,找到樞軸元素下標,使得其左邊的元素都比其小,右邊的元素都比其大int Partition(int nArr[], int
Time of Update: 2018-12-03
方法一:先對數組進行排序,再遍曆排序後的數組,統計每個數的次數,出現次數最大的數即為要找的數。時間複雜度 O(nlogn) + O(n) = O(nlogn)不需要額外儲存空間方法二:先對數組進行排序,出現次數超過數組長度的一半的數必然是數組中間的那個數時間複雜度O(nlgn)+ O(1)= O(nlgn)不需要額外儲存空間方法三:不排序,掃描一遍數組,每次刪除兩個不同的數,最終得到那個數即為要找的數時間複雜度O(n)空間複雜度O(1) 代碼:#include