def filterPoints(method, filters, alpha, K, source, name): fname1 = os.path.join(source, name) img = sp.ndimage.imread(fname1) if img.ndim == 3: #only use color images pixelResponses = np.zeros((alpha, 3 * len(filters))) imageResponse = extractFilterResponses(img, filters) #apply filters #Get alpha points for each image if method == 'Random': points = getRandomPoints(img, alpha) elif method == 'Harris': points = getHarrisPoints(img, alpha, K) #Extract filter responses at points for row in range(0, alpha): x, y = points[row, :] pixelResponses[row] = imageResponse[x, y, :] return pixelResponses
def getVisualWords(I, dictionary, filterBank): print("Getting Visual Words") imgResponse = extractFilterResponses( I, filterBank) #apply filters, (H,W,3n) size H, W, filt = imgResponse.shape imgResponse = imgResponse.reshape((H * W, filt)) #each row is a point dist = sp.spatial.distance.cdist(imgResponse, dictionary, metric='euclidean') wordMap = dist.argmin( axis=1 ) #find minimum of each row aka what cluster is closest, returns a shape (H*w,1) wordMap = wordMap.reshape((H, W)) #2D return wordMap
import os from createFilterBank import createFilterBank from extractFilterResponses import extractFilterResponses import scipy as sp fname = '../data/campus/sun_ahprylpgnmgqiyuz.jpg' img = sp.ndimage.imread(fname) #testing for Q1.1 Filter responses filters = createFilterBank() Im = extractFilterResponses(img,filters) image1 = Im[:,:,0:3] #guassian 0,3,6,9,12,|| 15,18,21,24,27 || ,30,33,36,39,42, || 45,48,51,54 image2 = Im[:,:,30:33] image3 = Im[:,:,45:48] sp.misc.imsave('../og.png', img) sp.misc.imsave('../filter1.png', image1) sp.misc.imsave('../filter2.png', image2) sp.misc.imsave('../filter3.png', image3)