Commit 51bf48ba authored by Taddeüs Kroes's avatar Taddeüs Kroes

Fixed some whitespace issues.

parent e1d45d10
...@@ -8,11 +8,12 @@ class GaussianFilter: ...@@ -8,11 +8,12 @@ class GaussianFilter:
self.scale = scale self.scale = scale
def gaussian(self, x): def gaussian(self, x):
'''Return the value of a 1D Gaussian function for a given x and scale''' """Return the value of a 1D Gaussian function for a given x."""
return exp(-(x ** 2 / (2 * self.scale ** 2))) / (sqrt(2 * pi) * self.scale) return exp(-(x ** 2 / (2 * self.scale ** 2))) \
/ (sqrt(2 * pi) * self.scale)
def get_1d_gaussian_kernel(self): def get_1d_gaussian_kernel(self):
'''Sample a one-dimensional Gaussian function of scale s''' """Sample a one-dimensional Gaussian function of scale s."""
radius = int(ceil(3 * self.scale)) radius = int(ceil(3 * self.scale))
size = 2 * radius + 1 size = 2 * radius + 1
...@@ -25,7 +26,7 @@ class GaussianFilter: ...@@ -25,7 +26,7 @@ class GaussianFilter:
return result return result
def get_filtered_copy(self, image): def get_filtered_copy(self, image):
'''Apply a gaussian blur to an image, to suppress noise.''' """Apply a gaussian blur to an image, to suppress noise."""
kernel = self.get_1d_gaussian_kernel() kernel = self.get_1d_gaussian_kernel()
image = convolve1d(image.data, kernel, axis=0, mode='nearest') image = convolve1d(image.data, kernel, axis=0, mode='nearest')
return GrayscaleImage(None, convolve1d(image, kernel, axis=1, mode='nearest')) return GrayscaleImage(None, convolve1d(image, kernel, axis=1, mode='nearest'))
......
...@@ -8,7 +8,7 @@ class GrayscaleImage: ...@@ -8,7 +8,7 @@ class GrayscaleImage:
if image_path != None: if image_path != None:
self.data = imread(image_path) self.data = imread(image_path)
extension = image_path.split('.',3)[-1] extension = image_path.split('.', 3)[-1]
if extension == "jpg": if extension == "jpg":
self.data = self.data[::-1] self.data = self.data[::-1]
...@@ -50,7 +50,7 @@ class GrayscaleImage: ...@@ -50,7 +50,7 @@ class GrayscaleImage:
def make_histogram(self): def make_histogram(self):
return hist(self.data) return hist(self.data)
def resize(self, size): # size is of type float def resize(self, size): # size is of type float
self.data = imresize(self.data, size) self.data = imresize(self.data, size)
def get_shape(self): def get_shape(self):
......
...@@ -4,14 +4,15 @@ class Histogram: ...@@ -4,14 +4,15 @@ class Histogram:
self.bins = [0] * bins self.bins = [0] * bins
self.min = min self.min = min
self.max = max self.max = max
def add(self, number): def add(self, number):
bin_index = self.get_bin_index(number) bin_index = self.get_bin_index(number)
self.bins[bin_index] += 1 self.bins[bin_index] += 1
def remove(self, number): def remove(self, number):
bin_index = self.get_bin_index(number) bin_index = self.get_bin_index(number)
self.bins[bin_index] -= 1 self.bins[bin_index] -= 1
def get_bin_index(self, number): def get_bin_index(self, number):
return (number - self.min) / ((self.max - self.min) / len(self.bins)) return (number - self.min) / ((self.max - self.min) / len(self.bins))
\ No newline at end of file
...@@ -36,14 +36,14 @@ class LicensePlate: ...@@ -36,14 +36,14 @@ class LicensePlate:
N = max(y0, y1, y2, y3) - min(y0, y1, y2, y3) N = max(y0, y1, y2, y3) - min(y0, y1, y2, y3)
matrix = array([ matrix = array([
[x0, y0, 1, 0, 0, 0, 0, 0, 0], [x0, y0, 1, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, x0, y0, 1, 0, 0, 0], [ 0, 0, 0, x0, y0, 1, 0, 0, 0],
[x1, y1, 1, 0, 0, 0, -M*x0, -M*y1, -M], [x1, y1, 1, 0, 0, 0, -M * x0, -M * y1, -M],
[ 0, 0, 0, x1, y1, 1, 0, 0, 0], [ 0, 0, 0, x1, y1, 1, 0, 0, 0],
[x2, y2, 1, 0, 0, 0, -M*x2, -M*y2, -M], [x2, y2, 1, 0, 0, 0, -M * x2, -M * y2, -M],
[ 0, 0, 0, x2, y2, 1, -N*x2, -N*y2, -N], [ 0, 0, 0, x2, y2, 1, -N * x2, -N * y2, -N],
[x3, y3, 1, 0, 0, 0, 0, 0, 0], [x3, y3, 1, 0, 0, 0, 0, 0, 0],
[ 0, 0, 0, x3, y3, 1, -N*x3, -N*y3, -N] [ 0, 0, 0, x3, y3, 1, -N * x3, -N * y3, -N]
]) ])
P = inv(self.get_transformation_matrix(matrix)) P = inv(self.get_transformation_matrix(matrix))
......
...@@ -4,7 +4,7 @@ from LetterCropper import LetterCropper ...@@ -4,7 +4,7 @@ from LetterCropper import LetterCropper
from GaussianFilter import GaussianFilter from GaussianFilter import GaussianFilter
class NormalizedCharacterImage(GrayscaleImage): class NormalizedCharacterImage(GrayscaleImage):
def __init__(self, image=None, data=None, size=(60, 40), blur=1.1, crop_threshold=0.9): def __init__(self, image=None, data=None, size=(60, 40), blur=1.1, crop_threshold=0.9):
if image != None: if image != None:
GrayscaleImage.__init__(self, data=deepcopy(image.data)) GrayscaleImage.__init__(self, data=deepcopy(image.data))
...@@ -22,13 +22,13 @@ class NormalizedCharacterImage(GrayscaleImage): ...@@ -22,13 +22,13 @@ class NormalizedCharacterImage(GrayscaleImage):
self.data -= self.data.min() self.data -= self.data.min()
self.data /= self.data.max() self.data /= self.data.max()
def gausse_filter(self): def gausse_filter(self):
filter = GaussianFilter(1.1) filter = GaussianFilter(1.1)
filter.filter(self) filter.filter(self)
def crop_to_letter(self): def crop_to_letter(self):
cropper = LetterCropper(0.9) cropper = LetterCropper(0.9)
cropper.crop_to_letter(self) cropper.crop_to_letter(self)
def resize(self): def resize(self):
GrayscaleImage.resize(self, self.size) GrayscaleImage.resize(self, self.size)
\ No newline at end of file
class Rectangle: class Rectangle:
def __init__(self, x, y, width, height): def __init__(self, x, y, width, height):
self.x = x; self.x = x
self.y = y; self.y = y
self.width = width; self.width = width
self.height = height; self.height = height
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