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
예제 #2
0
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
예제 #3
0
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)