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 pylab import imshow, imread, show
from scipy.misc import imresize
class GrayscaleImage: class GrayscaleImage:
...@@ -38,6 +39,10 @@ class GrayscaleImage: ...@@ -38,6 +39,10 @@ class GrayscaleImage:
imshow(self.data, cmap="gray") imshow(self.data, cmap="gray")
show() show()
# size is of type float
def resize(self, size):
self.data = imresize(self.data, size)
def get_shape(self): def get_shape(self):
return self.data.shape return self.data.shape
shape = property(get_shape) shape = property(get_shape)
......
from PIL import Image from copy import deepcopy
class NormalizedImage: class NormalizedImage:
DEFAULT_SIZE = (100, 200)
def __init__(self, image, size): DEFAULT_SIZE = 100.0
self.letter = image
if size: def __init__(self, image, size=DEFAULT_SIZE):
self.source_image = image
self.size = size self.size = size
else:
self.size = self.DEFAULT_SIZE
self.add_padding()
self.resize()
def add_padding(self): def add_padding(self):
pass pass
def resize(self): # normalize img
return self.letter.resize(self.size, Image.NEAREST) 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,20 +2,49 @@ from GrayscaleImage import GrayscaleImage ...@@ -2,20 +2,49 @@ from GrayscaleImage import GrayscaleImage
from LocalBinaryPatternizer import LocalBinaryPatternizer from LocalBinaryPatternizer import LocalBinaryPatternizer
from LetterCropper import LetterCropper from LetterCropper import LetterCropper
from matplotlib.pyplot import imshow, subplot, show, axis 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") 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() 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 = lbp.create_features_vector()
feature_vector /= 255 # Prepare for displaying -> 0 - 255 -> 0 - 1 feature_vector /= 255 # Prepare for displaying -> 0 - 255 -> 0 - 1
subplot(121) subplot(141)
imshow(image.data, cmap='gray') 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') imshow(feature_vector, cmap='gray')
axis('off') axis('off')
......
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