Commit 5903a6fc authored by Richard Torenvliet's avatar Richard Torenvliet

Made get_normalized_letter in NormalizedImage.py

parent 60a05ec2
from pylab import imshow, imread, show
from scipy.misc import imresize
class GrayscaleImage:
......@@ -38,6 +39,10 @@ class GrayscaleImage:
imshow(self.data, cmap="gray")
show()
# size is of type float
def resize(self, size):
self.data = imresize(self.data, size)
def get_shape(self):
return self.data.shape
shape = property(get_shape)
......@@ -51,4 +56,4 @@ class GrayscaleImage:
height = property(get_height)
def in_bounds(self, y, x):
return x >= 0 and x < self.width and y >= 0 and y < self.height
\ No newline at end of file
return x >= 0 and x < self.width and y >= 0 and y < self.height
from numpy import zeros, byte
class LocalBinaryPatternizer:
def __init__(self, image, cell_size = 16):
self.cell_size = cell_size
self.image = image
......@@ -25,4 +25,4 @@ class LocalBinaryPatternizer:
return self.features
def is_pixel_darker(self, y, x, value):
return self.image.in_bounds(y, x) and self.image[y, x] > value
\ No newline at end of file
return self.image.in_bounds(y, x) and self.image[y, x] > value
from PIL import Image
from copy import deepcopy
class NormalizedImage:
DEFAULT_SIZE = (100, 200)
def __init__(self, image, size):
self.letter = image
if size:
self.size = size
else:
self.size = self.DEFAULT_SIZE
self.add_padding()
self.resize()
DEFAULT_SIZE = 100.0
def __init__(self, image, size=DEFAULT_SIZE):
self.source_image = image
self.size = size
def add_padding(self):
pass
def resize(self):
return self.letter.resize(self.size, Image.NEAREST)
# normalize img
def get_normalized_letter(self):
self.result_image = deepcopy(self.source_image)
self.result_image.resize(self.size / self.source_image.height)
return self.result_image
......@@ -2,21 +2,50 @@ from GrayscaleImage import GrayscaleImage
from LocalBinaryPatternizer import LocalBinaryPatternizer
from LetterCropper import LetterCropper
from matplotlib.pyplot import imshow, subplot, show, axis
from NormalizedImage import NormalizedImage
# Comment added by Richard Torenvliet
# Steps in this test files are
# 1. crop image
# 2. resize to default hight (in future also to width)
# 3. preform LBP
# 4. construct feature vector
# 5. plot
# Image is now an instance of class GrayscaleImage
# GrayscaleImage has functions like resize, crop etc.
image = GrayscaleImage("../images/test.png")
cropper = LetterCropper(image)
# Crops image; param threshold is optional: LetterCropper(image, threshold=0.9)
# image: GrayscaleImage, threshold: float
cropper = LetterCropper(image, 0.9)
cropped_letter = cropper.get_cropped_letter()
lbp = LocalBinaryPatternizer(cropped_letter)
# Show difference in shape
print cropped_letter.shape
# Resizes image; param size is optional: NormalizedImage(image, size=DEFAULT)
# image: GrayscaleImage, size: float
norm = NormalizedImage(cropped_letter)
resized = norm.get_normalized_letter()
# Difference is noticable
print resized.shape
lbp = LocalBinaryPatternizer(resized)
feature_vector = lbp.create_features_vector()
feature_vector /= 255 # Prepare for displaying -> 0 - 255 -> 0 - 1
subplot(121)
subplot(141)
imshow(image.data, cmap='gray')
subplot(122)
subplot(142)
imshow(cropped_letter.data, cmap='gray')
subplot(143)
imshow(resized.data, cmap='gray')
subplot(144)
imshow(feature_vector, cmap='gray')
axis('off')
show()
\ No newline at end of file
show()
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment