Finish project 5 question 4.

main
Felix Martin 2022-01-03 16:54:06 -05:00
parent a73b2b35ac
commit 8f80129f4e
1 changed files with 49 additions and 6 deletions

View File

@ -54,6 +54,14 @@ def basicFeatureExtractorFace(datum):
each pixel in the provided datum is an edge (1) or no edge (0)
"""
a = datum.getPixels()
features = util.Counter()
for x in range(DIGIT_DATUM_WIDTH):
for y in range(DIGIT_DATUM_HEIGHT):
if datum.getPixel(x, y) > 0:
features[(x,y)] = 1
else:
features[(x,y)] = 0
return features
features = util.Counter()
for x in range(FACE_DATUM_WIDTH):
@ -64,6 +72,43 @@ def basicFeatureExtractorFace(datum):
features[(x,y)] = 0
return features
def whiteAreasFeature(datum):
def getNeighbors(pixel):
x, y = pixel
potentialNeighbors = [
(x - 1, y + 1), (x, y + 1), (x + 1, y + 1),
(x - 1, y), (x + 1, y),
(x - 1, y - 1), (x, y - 1), (x + 1, y - 1),
]
neighbors = [(x, y) for x, y in potentialNeighbors
if x >= 0 and x < DIGIT_DATUM_WIDTH
if y >= 0 and y < DIGIT_DATUM_HEIGHT]
return neighbors
whitePixels = set()
for x in range(DIGIT_DATUM_WIDTH):
for y in range(DIGIT_DATUM_HEIGHT):
if datum.getPixel(x, y) > 0.9:
pass
else:
whitePixels.add((x, y))
count = 0
while whitePixels:
count += 1
queue = set([whitePixels.pop()])
while queue:
currentPixel = queue.pop()
for neighbor in getNeighbors(currentPixel):
if neighbor in whitePixels:
whitePixels.discard(neighbor)
queue.add(neighbor)
return {("whiteAreas", i):
1 if i == count else 0
for i in range(1, 4)}
def enhancedFeatureExtractorDigit(datum):
"""
Your feature extraction playground.
@ -76,14 +121,11 @@ def enhancedFeatureExtractorDigit(datum):
##
"""
features = basicFeatureExtractorDigit(datum)
"*** YOUR CODE HERE ***"
util.raiseNotDefined()
whiteAreas = whiteAreasFeature(datum)
features.update(whiteAreas)
return features
def basicFeatureExtractorPacman(state):
"""
A basic feature extraction function.
@ -175,7 +217,8 @@ def analysis(classifier, guesses, testLabels, testData, rawTestData, printImage)
# print "Predicted %d; truth is %d" % (prediction, truth)
# print "Image: "
# print rawTestData[i]
# break
# print whiteAreasFeature(rawTestData[i])
# break
## =====================