├── BoVW.py ├── FisherVector.py ├── Metric.py ├── VLAD.py ├── colorhist.py ├── gist.py ├── gist_bin ├── glnx86 │ └── gist ├── glnxa64 │ └── gist ├── win32 │ ├── 25.pgm │ ├── ar.ppm │ ├── gist.exe │ ├── libfftw3-3.dll │ ├── libfftw3f-3.dll │ ├── libfftw3l-3.dll │ ├── msvcr100.dll │ ├── msvcr90.dll │ └── pthreadVC2.dll └── win64 │ ├── 1.txt │ ├── 25.pgm │ ├── ar.ppm │ ├── gist.exe │ ├── libfftw3-3.dll │ ├── libfftw3f-3.dll │ ├── libfftw3l-3.dll │ ├── msvcr100.dll │ ├── msvcr90.dll │ └── pthreadVC2.dll ├── hog.py ├── lbp.py ├── sift.py └── sift_bin ├── glnx86 ├── aib ├── libvl.so ├── mser ├── sift ├── test_gauss_elimination ├── test_getopt_long ├── test_gmm ├── test_heap-def ├── test_host ├── test_imopv ├── test_kmeans ├── test_liop ├── test_mathop ├── test_mathop_abs ├── test_nan ├── test_qsort-def ├── test_rand ├── test_sqrti ├── test_stringop ├── test_svd2 ├── test_threads └── test_vec_comp ├── glnxa64 ├── aib ├── libvl.so ├── mser ├── sift ├── test_gauss_elimination ├── test_getopt_long ├── test_gmm ├── test_heap-def ├── test_host ├── test_imopv ├── test_kmeans ├── test_liop ├── test_mathop ├── test_mathop_abs ├── test_nan ├── test_qsort-def ├── test_rand ├── test_sqrti ├── test_stringop ├── test_svd2 ├── test_threads └── test_vec_comp ├── maci ├── aib ├── libvl.dylib ├── mser ├── sift ├── test_gauss_elimination ├── test_getopt_long ├── test_gmm ├── test_heap-def ├── test_host ├── test_imopv ├── test_kmeans ├── test_liop ├── test_mathop ├── test_mathop_abs ├── test_nan ├── test_qsort-def ├── test_rand ├── test_sqrti ├── test_stringop ├── test_svd2 ├── test_threads └── test_vec_comp ├── maci64 ├── aib ├── libvl.dylib ├── mser ├── sift ├── test_gauss_elimination ├── test_getopt_long ├── test_gmm ├── test_heap-def ├── test_host ├── test_imopv ├── test_kmeans ├── test_liop ├── test_mathop ├── test_mathop_abs ├── test_nan ├── test_qsort-def ├── test_rand ├── test_sqrti ├── test_stringop ├── test_svd2 ├── test_threads └── test_vec_comp ├── win32 ├── Microsoft.VC90.CRT.manifest ├── aib.exe ├── mser.exe ├── msvcr90.dll ├── sift.exe ├── test_gauss_elimination.exe ├── test_getopt_long.exe ├── test_gmm.exe ├── test_heap-def.exe ├── test_host.exe ├── test_imopv.exe ├── test_kmeans.exe ├── test_liop.exe ├── test_mathop.exe ├── test_mathop_abs.exe ├── test_nan.exe ├── test_qsort-def.exe ├── test_rand.exe ├── test_sqrti.exe ├── test_stringop.exe ├── test_svd2.exe ├── test_threads.exe ├── test_vec_comp.exe ├── vl.dll └── vl.lib └── win64 ├── aib.exe ├── mser.exe ├── msvcr100.dll ├── msvcr90.dll ├── sift.exe ├── test_gauss_elimination.exe ├── test_gauss_elimination.obj ├── test_getopt_long.exe ├── test_gmm.exe ├── test_heap-def.exe ├── test_host.exe ├── test_imopv.exe ├── test_kmeans.exe ├── test_liop.exe ├── test_mathop.exe ├── test_mathop_abs.exe ├── test_nan.exe ├── test_qsort-def.exe ├── test_rand.exe ├── test_sqrti.exe ├── test_stringop.exe ├── test_svd2.exe ├── test_threads.exe ├── test_vec_comp.exe ├── vl.dll ├── vl.exp └── vl.lib /BoVW.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | #encoding=utf-8 3 | ''' 4 | Bag of visual words (BoVW) is a popular technique for image classification 5 | inspired by models used in natural language processing. BoVW downplays word 6 | arrangement (spatial information in the image) and classifies based on a histogram 7 | of the frequency of visual words. The set of visual words forms a visual vocabulary, 8 | which is constructed by clustering a large corpus of features. 9 | 10 | @author: jerome 11 | @Constact:yunfeiwang@hust.edu.cn 12 | ''' 13 | 14 | import numpy as np 15 | from Metric import distEuclidean 16 | from sklearn import mixture 17 | from sklearn.cluster import KMeans,MiniBatchKMeans 18 | 19 | 20 | def BoVWFeatures(dataLearn,dataEncode,nClus,method='kMeans',encode='hard',distfun=distEuclidean): 21 | ''' 22 | BoVWFeatures(dataLearn,dataEncode,nClus,encode='hard',distfun=distEuclidean) 23 | @Parameters: 24 | dataLearn: nSmp*nDim ndarray, low level features 25 | dataEncode: N*nDim ndarray, low level features to be encoded 26 | nClus: int, number of word in the visual dictionary 27 | encode: string 'soft' or 'hard',the way used to encode the faetures 28 | distfun: metric used to compute distance.(distEuclidean or distCosine) 29 | @Return: 30 | ndarray of size (nClus,) 31 | ''' 32 | #1.Visual vocabulary construction 33 | print('Clustering for visual word dictionary...') 34 | centers=BoVWDictionary(dataLearn, nClus, method, distfun) 35 | 36 | #2. Extract the BoVW representation for an image 37 | print('Generating BoVW features...') 38 | desc=BoVWEncoding(dataEncode, centers, encode, distfun) 39 | return desc 40 | 41 | 42 | def BoVWDictionary(dataLearn,nClus,method='kMeans',distfun=distEuclidean): 43 | ''' 44 | BoVWDictionary(dataLearn,nClus,distfun=distEuclidean) 45 | @Parameters: 46 | dataLearn: nSmp*nDim ndarray, low level features 47 | nClus: int, number of word in the visual dictionary 48 | distfun: metric used to compute distance.(distEuclidean or distCosine) 49 | @Return: 50 | ndarray of size (nClus,nDim) 51 | ''' 52 | #Visual vocabulary construction 53 | method=str.lower(method) 54 | if method not in ('kmeans','gmm'): 55 | raise ValueError('Invalid method for constructing visual dictionary') 56 | 57 | if method=='kmeans': 58 | nSmp=dataLearn.shape[0] 59 | if nSmp<3e4: 60 | km=KMeans(n_clusters=nClus,init='k-means++',n_init=3,n_jobs=-1)#use all the cpus 61 | else: 62 | km=MiniBatchKMeans(n_clusters=nClus,init='k-means++',n_init=3) 63 | km.fit(dataLearn) 64 | centers=km.cluster_centers_ 65 | else: 66 | gmm=mixture.GMM(n_components=nClus) 67 | gmm.fit(dataLearn) 68 | centers=gmm.means_ 69 | return centers 70 | 71 | 72 | def BoVWEncoding(dataEncode,centers,encode='hard',distfun=distEuclidean): 73 | ''' 74 | BoVWEncoding(dataEncode,centers,encode='hard',distfun=distEuclidean) 75 | Extract the BoVW representation for an image 76 | @Parameters: 77 | dataEncode: N*nDim ndarray, low level features to be encoded 78 | centers: nClus*nDim ndarray, clustering centers as the coodbook in the visual dictionary 79 | encode: string 'soft' or 'hard',the way used to encode the faetures 80 | distfun: metric used to compute distance.(distEuclidean or distCosine) 81 | @Return: 82 | ndarray of size (nClus,) 83 | ''' 84 | encode=str.lower(encode) 85 | if encode not in ('soft','hard'): 86 | raise ValueError('Invalid encoding scheme(\'soft\' or \'hard\')') 87 | nClus=centers.shape[0] 88 | desc=np.zeros(nClus) 89 | nSmp=dataEncode.shape[0] 90 | if encode=='hard': 91 | for i in range(nSmp): 92 | # dist_iter=map(lambda x,y:(distfun(dataEncode[i],x),y),centers,range(nSmp)) 93 | # nn=max(dist_iter,key=lambda x:x[0])[1] 94 | dist_iter=map(lambda x:distfun(dataEncode[i],x),centers) 95 | # nn=np.argmin(list(dist_iter)) #this code do the following things 96 | dist=np.Inf 97 | nn=-1 98 | for (cnt,item) in enumerate(dist_iter): 99 | if item2: 8 | raise ValueError('Currently only supports grey-level images') 9 | 10 | if img.dtype.kind=='u':#convert uint image to float 11 | img=img.astype('float') 12 | """ 13 | The first stage applies an optional global image normalisation(sqrt or log) 14 | equalisation that is designed to reduce the influence of illumination 15 | effects. In practice we use gamma (power law) compression, either 16 | computing the square root or the log of each colour channel. 17 | Image texture strength is typically proportional to the local surface 18 | illumination so this compression helps to reduce the effects of local 19 | shadowing and illumination variations. 20 | """ 21 | if normalise: 22 | img=np.sqrt(img) 23 | 24 | """ 25 | The second stage computes first order image gradients with centered operators[-1,0,1] and [-1,0,1]^T. 26 | These capture contour, silhouette and some texture information, while providing 27 | further resistance to illumination variations. The locally dominant 28 | colour channel is used, which provides colour invariance to a large 29 | extent. Variant methods may also include second order image derivatives, 30 | which act as primitive bar detectors - a useful feature for capturing, 31 | e.g. bar like structures in bicycles and limbs in humans. 32 | """ 33 | row,col=img.shape#size of the image 34 | conx_data=np.zeros((row,col)) 35 | cony_data=np.zeros((row,col)) 36 | for cid in range(1,col-1):#horizonal gradient with operator [-1,0,1] 37 | conx_data[:,cid]=img[:,cid+1]-img[:,cid-1] 38 | for rid in range(1,row-1):#vertical gradient with operator [-1,0,1]^T 39 | cony_data[rid,:]=img[rid+1,:]-img[rid-1,:] 40 | con_data=np.sqrt(conx_data**2+cony_data**2) #magnitude of gradient 41 | angle_data=np.abs(np.arctan2(cony_data,conx_data))%np.pi#undirected 42 | 43 | ## newImg=Image.new('L',(row,col),0) 44 | ## for rid in range(0,row): 45 | ## for cid in range(0,col): 46 | ## newImg.putpixel((rid,cid),con_data[rid,cid]) 47 | ## newImg.show() 48 | ## newImg.save('test.jpg','JPEG') 49 | 50 | """ 51 | The third stage aims to produce an encoding that is sensitive to 52 | local image content while remaining resistant to small changes in 53 | pose or appearance. The adopted method pools gradient orientation 54 | information locally in the same way as the SIFT [Lowe 2004] 55 | feature. The image window is divided into small spatial regions, 56 | called "cells". For each cell we accumulate a local 1-D histogram 57 | of gradient or edge orientations over all the pixels in the 58 | cell. This combined cell-level 1-D histogram forms the basic 59 | "orientation histogram" representation. Each orientation histogram 60 | divides the gradient angle range into a fixed number of 61 | predetermined bins. The gradient magnitudes of the pixels in the 62 | cell are used to vote into the orientation histogram. 63 | """ 64 | cellsizex,cellsizey=cellSize 65 | blocksizex,blocksizey=blockSize #number of cells a block contains 66 | n_cellx=row//cellsizex #number of cells along x-axis 67 | n_celly=col//cellsizey #number of cells along y-axis 68 | hogWidth=n_celly-blocksizey+1 69 | hogHeight=n_cellx-blocksizex+1 70 | hogFea=np.zeros((hogWidth*hogHeight,blocksizex*blocksizey*numGrad)) 71 | 72 | base=np.pi/numGrad #the width of the range of angle split 73 | angle_index=np.floor(angle_data/base).astype('int') #generate the index for each orientation 74 | 75 | #histgram of gradient for each cell 76 | con_cell_data=np.zeros((n_cellx,n_celly,numGrad)) 77 | for rid in range(n_cellx): 78 | for cid in range(n_celly): 79 | start_x=rid*cellsizex 80 | end_x=start_x+cellsizex 81 | start_y=cid*cellsizey 82 | end_y=start_y+cellsizey 83 | cell_angle_index=angle_index[start_x:end_x,start_y:end_y] 84 | cell_con=con_data[start_x:end_x,start_y:end_y] 85 | for ori_index in range(numGrad): 86 | pos=np.where(cell_angle_index==ori_index,cell_angle_index,-1) 87 | cell_con_filter=np.where(pos>-1,cell_con,0) 88 | con_cell_data[rid,cid,ori_index]=np.sum(cell_con_filter)#sum of all elements 89 | #collect histogram of gradient across cells 90 | blockcnt=0 91 | for block_rid in range(hogHeight): 92 | for block_cid in range(hogWidth): 93 | b_startx=block_rid 94 | b_endx=b_startx+blocksizex 95 | b_starty=block_cid 96 | b_endy=b_starty+blocksizey 97 | block_con=con_cell_data[b_startx:b_endx,b_starty:b_endy,:] 98 | hogFea[blockcnt]=block_con.flatten()#cascade of HoG for the cells in a block 99 | blockcnt+=1 100 | """ 101 | The fourth stage computes normalisation with L2-norm, which takes local groups of 102 | cells and contrast normalises their overall responses before passing 103 | to next stage. Normalisation introduces better invariance to illumination, 104 | shadowing, and edge contrast. It is performed by accumulating a measure 105 | of local histogram "energy" over local groups of cells that we call 106 | "blocks". The result is used to normalise each cell in the block. 107 | Typically each individual cell is shared between several blocks, but 108 | its normalisations are block dependent and thus different. The cell 109 | thus appears several times in the final output vector with different 110 | normalisations. This may seem redundant but it improves the performance. 111 | We refer to the normalised block descriptors as Histogram of Oriented 112 | Gradient (HOG) descriptors. 113 | """ 114 | eps = 1e-5 115 | for rid in range(hogHeight*hogWidth): 116 | denominator = np.sqrt(np.sum(hogFea[rid] ** 2) + eps) 117 | hogFea[rid] = hogFea[rid] / denominator 118 | 119 | return hogFea.flatten() 120 | -------------------------------------------------------------------------------- /lbp.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | import sys,os 3 | import math 4 | import numpy as np 5 | from PIL import Image 6 | 7 | 8 | def LBPFeatures(img,radius=1,npoints=8,window_size=(3,3),mode='uniform'): 9 | """ 10 | LBPFeatures(img,radius=1,npoints=8,window_size=(3,3),mode='normal') 11 | Extract Local Binary Pattern(LBP) feature for a grey-level image 12 | Parameters 13 | ---------- 14 | image:(M,N) ndarray 15 | input image(greyscale) 16 | radius:float 17 | radius of a circle 18 | npoints:int 19 | number of sampling points on a circle 20 | window_size: 2 tuple(int,int) 21 | number of sampling windows 22 | mode:'normal','uniform','uniform-ror' 23 | 'normal':the original LBP descriptors(2^P patterns) 24 | 'uniform':extention to LBP with uniform patterns(P(P-1)+2 patterns) 25 | 'uniform-ror':extention to LBP with both rotatin invarient and uniform patterns(P+1 patterns) 26 | Returns 27 | --------- 28 | lbp:ndarray 29 | LBP feature for the image as a 1D array 30 | """ 31 | img=np.atleast_2d(img) 32 | if img.ndim>2: 33 | raise ValueError('Currently only supports grey-level images') 34 | if mode not in ('normal','uniform','uniform-ror'): 35 | raise ValueError("Invalid mode for LBP features:'normal','uniform','uniform-ror'") 36 | row,col=img.shape 37 | table=LBP_genHistTable(npoints, mode) 38 | sorted_keys=sorted(table.keys()) 39 | nDim=len(table) #dimensionality of the histogram 40 | w_numx,w_numy=window_size 41 | w_sizex=row//w_numx 42 | w_sizey=col//w_numy 43 | if(w_sizex<2*radius or w_sizey<2*radius): 44 | raise ValueError('Radius is large for the scaning window') 45 | lbp_hist=np.zeros((w_numx,w_numy,nDim)) 46 | 47 | binary_pattern=np.zeros(npoints).astype('int') 48 | coordinate_bias=np.zeros((2,npoints)) 49 | theta=2*math.pi*np.arange(npoints)/npoints 50 | coordinate_bias[0]=-np.sin(theta) 51 | coordinate_bias[1]=np.cos(theta) 52 | coordinate_bias*=radius 53 | 54 | eps=1e-15 55 | val=0 #value for a specific pixel 56 | for w_rid in range(w_numx): 57 | for w_cid in range(w_numy): 58 | w_startx=w_rid*w_sizex 59 | w_endx=w_startx+w_sizex 60 | w_starty=w_cid*w_sizey 61 | w_endy=w_starty+w_sizey 62 | window=img[w_startx:w_endx,w_starty:w_endy] 63 | p_startx=int(np.ceil(radius)) 64 | p_endx=w_sizex-1-p_startx 65 | p_starty=int(np.ceil(radius)) 66 | p_endy=w_sizey-1-p_starty 67 | for p_rid in range(p_startx,p_endx+1): 68 | for p_cid in range(p_starty,p_endy+1): 69 | binary_pattern[:]=0 #clear the binary pattern 70 | for point_id in range(npoints): 71 | new_x=p_rid+coordinate_bias[0,point_id] 72 | new_y=p_cid+coordinate_bias[1,point_id] 73 | 74 | new_x_r=np.round(new_x) 75 | new_y_r=np.round(new_y) 76 | if np.abs(new_x_r-new_x)=window[p_rid,p_cid]: 93 | binary_pattern[point_id]=1 94 | index=-1 95 | if mode=='normal': 96 | index=LBP_binary2int(binary_pattern) 97 | elif LBP_hopCounter(binary_pattern)<=2: 98 | if mode=='uniform-ror': 99 | binary_pattern=LBP_rotate4Min(binary_pattern) 100 | index=LBP_binary2int(binary_pattern) 101 | try: 102 | table[index]+=1 103 | except KeyError: 104 | raise ValueError('Invalid key:%d' %index) 105 | 106 | lbp_hist[w_rid,w_cid]=np.asarray([table[x] for x in sorted_keys]) 107 | lbp_hist[w_rid,w_cid]/=np.sum(lbp_hist[w_rid,w_cid]) 108 | #print([(x,table[x]) for x in sorted(table.keys())]) 109 | for x in table.keys():#clear the data in the histogram 110 | table[x]=0 111 | return lbp_hist.flatten() 112 | 113 | 114 | def LBP_hopCounter(binaryArr): 115 | sz=binaryArr.size 116 | cnt=0 117 | for i in range(1,sz): 118 | if(binaryArr[i]!=binaryArr[i-1]): 119 | cnt+=1 120 | if(binaryArr[0]!=binaryArr[sz-1]): 121 | cnt+=1 122 | return cnt 123 | 124 | 125 | def LBP_rotate4Min(binaryArr): 126 | sz=binaryArr.size 127 | res=np.zeros(sz) 128 | maxPos=0 129 | maxCnt=0 130 | start=0 131 | while(startmaxCnt: 143 | maxPos=pos 144 | maxCnt=buf[pos] 145 | pos=(pos-1+sz)%sz 146 | validDigit=sz-maxCnt 147 | copypos=(maxPos-validDigit+sz)%sz 148 | for idx in range(validDigit): 149 | res[maxCnt+idx]=binaryArr[(copypos+idx)%sz] 150 | return res 151 | 152 | 153 | def LBP_binary2int(binaryArr): 154 | sz=binaryArr.size 155 | res=0 156 | for i in range(sz): 157 | if binaryArr[sz-i-1]: 158 | res+=1< 2 | 3 | 4 | 5 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /sift_bin/win32/aib.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/aib.exe -------------------------------------------------------------------------------- /sift_bin/win32/mser.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/mser.exe -------------------------------------------------------------------------------- /sift_bin/win32/msvcr90.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/msvcr90.dll -------------------------------------------------------------------------------- /sift_bin/win32/sift.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/sift.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_gauss_elimination.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_gauss_elimination.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_getopt_long.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_getopt_long.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_gmm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_gmm.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_heap-def.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_heap-def.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_host.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_host.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_imopv.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_imopv.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_kmeans.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_kmeans.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_liop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_liop.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_mathop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_mathop.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_mathop_abs.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_mathop_abs.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_nan.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_nan.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_qsort-def.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_qsort-def.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_rand.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_rand.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_sqrti.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_sqrti.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_stringop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_stringop.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_svd2.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_svd2.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_threads.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_threads.exe -------------------------------------------------------------------------------- /sift_bin/win32/test_vec_comp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/test_vec_comp.exe -------------------------------------------------------------------------------- /sift_bin/win32/vl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/vl.dll -------------------------------------------------------------------------------- /sift_bin/win32/vl.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win32/vl.lib -------------------------------------------------------------------------------- /sift_bin/win64/aib.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/aib.exe -------------------------------------------------------------------------------- /sift_bin/win64/mser.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/mser.exe -------------------------------------------------------------------------------- /sift_bin/win64/msvcr100.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/msvcr100.dll -------------------------------------------------------------------------------- /sift_bin/win64/msvcr90.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/msvcr90.dll -------------------------------------------------------------------------------- /sift_bin/win64/sift.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/sift.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_gauss_elimination.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_gauss_elimination.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_gauss_elimination.obj: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_gauss_elimination.obj -------------------------------------------------------------------------------- /sift_bin/win64/test_getopt_long.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_getopt_long.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_gmm.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_gmm.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_heap-def.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_heap-def.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_host.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_host.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_imopv.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_imopv.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_kmeans.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_kmeans.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_liop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_liop.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_mathop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_mathop.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_mathop_abs.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_mathop_abs.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_nan.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_nan.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_qsort-def.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_qsort-def.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_rand.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_rand.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_sqrti.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_sqrti.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_stringop.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_stringop.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_svd2.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_svd2.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_threads.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_threads.exe -------------------------------------------------------------------------------- /sift_bin/win64/test_vec_comp.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/test_vec_comp.exe -------------------------------------------------------------------------------- /sift_bin/win64/vl.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/vl.dll -------------------------------------------------------------------------------- /sift_bin/win64/vl.exp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/vl.exp -------------------------------------------------------------------------------- /sift_bin/win64/vl.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jeromewang-github/computer_vision/c7abe0f86e067d16a19ab4994630f8c121596af6/sift_bin/win64/vl.lib --------------------------------------------------------------------------------