Monthly Archives: February 2020


Neural Networks and Deep Learning
Deep Learning, Ian Goodfellow and Yoshua Bengio and Aaron Courville
Code samples for my book “Neural Networks and Deep Learning”
CS231n Convolutional Neural Networks for Visual Recognition
Padding and Stride
A Beginner’s Guide To Understanding Convolutional Neural Networks Part 2


General examples
Hysteresis thresholding
Mean filters
Denoising a picture
Unsharp masking
Canny edge detector
Straight line Hough transform
Circular and Elliptical Hough Transforms
Rescale, resize, and downscale
Piecewise Affine Transformation
Histogram Equalization
RGB to grayscale
Adapting gray-scale filters to RGB images
Thresholding, Otsu’s method
Morphological Filtering
Rank filters
Image Segmentation
A crash course on NumPy for images


Module: io
Module: filters
Module: transform
Module: morphology
Module: color
Module: exposure


Bright ridge detection not working as expected with Frangi, Frangi-, Hessian-Filter
IPython (Jupyter) widgets: An image convolution demo
Wiener Filter for image deblur
Histogram Equalization


Multidimensional image processing (scipy.ndimage)




Generatoren und Iteratoren
Lambda, filter, reduce und map
Listen-Abstraktion (List Comprehension)

ORDIX blog

Python Generator-Funktionen und -Expressions: Ein alter Hut kann auch modern sein
Einstieg in Neuronale Netze mit TensorFlow und Keras
Data Mining in der Praxis (Teil I): Was ist Data Mining?
Data Mining in der Praxis (Teil II): Klassifikation
Data Mining in der Praxis (Teil III) Lineare Regression

Real Python

Python 3’s f-Strings: An Improved String Formatting Syntax (Guide)

name = "Eric"
age = 28

### Option #1: %-formatting
print("Hello, %s. You are %d." % (name, age))

### Option #2: str.format()
print("Hello, {}. You are {}.".format(name, age))

### Option #3: f-Strings
print(f"Hello, {name}. You are {age}.")


Digitize your Receipts using Computer Vision
Deep Dive Into OCR for Receipt Recognition
Simple OCR implementation on Android with Google’s ML Kit

find intersection point of two lines drawn using houghlines opencv
Intersection of two lines defined in (rho/theta ) parameterization
Reading multiple invoices from an image using OCR/computer vision
How can I detect an object from static image and crop it from the image using openCV?
Receipt Scanning – How to scan a receipt and extract data from it

how to find coordinates of intersection of lines after using “houghlines”

Expense Reports in a Snap (or a Tap)

Homogene Koordinaten

Homogene Koordinaten

Homogene Koordinaten
Lecture 2: Homogeneous Coordinates, Lines and Conics (PDF)

Computer Vision (SBE404B)

Asem Alaa
Ayman Anwar

Computer Vision (SBE404B) – Spring 2020
Computer Vision (SBE404B) – Spring 2019
Computer Vision (SBE404B) – Spring 2018

Week 1: Warming up with Python Basics
Week 2: Image Processing 1
Week 3: Images in Frequency Domain
Week 4: Image Filtering and Edge Detection
Week 5: Hough Transform (Line and Circle Detection)
Week 6: Corner Detection
Week 7: Segmentation (Thresholding and Region growing)
Week 8: Segmentation (Clustering Segmentation)
Week 10: Image features, feature descriptors, and feature matching

Week 1

Deep Learning Alchemy to close the Perception Loop in Vision: Part 1 – Image Alignment with Pytorch
CS231n Convolutional Neural Networks for Visual Recognition – Python Numpy Tutorial
CS228 Python Tutorial (Notebook)
Python Single Line For Loops
The Confusing Double Colon (::) in NumPy


PyX — Python graphics package
Python:Flags Tutorial
Python:Flags with Lines Tutorial

Python Essentials

Data Structure

4. Data Structures (list, dict, tuples, sets, strings)
5. Data Structures

Python Data Types
Basic Data Types in Python
Python Data Types
Data Types in Python

Format String

Format String Syntax
Format String Syntax
Format Specification Mini-Language


Understanding slice notation

Loop, Iteration

Loop better: A deeper look at iteration in Python
Python Basics: Iteration, Iterables, Iterators, and Looping


W3Resources: NumPy Exercises, Practice, Solution
Machine Learning Plus: 101 NumPy Exercises for Data Analysis (Python)
HackerRank: Numpy Challenges

Week 2

How can I draw lines into numpy arrays?
How to draw thick anti-aliased lines in SciPy?
scikit-image – Module: draw
scikit-image – Shapes
Wikipedia: Line drawing algorithm
Rasterung von Linien

Week 3

Convert NumPy

How to convert a boolean array to an int array


Histograms in Image Processing with skimage-Python

Week 4

Image Processing with Python

Python 3 – Built-in Functions
Python 3 – Built-in Types

Module: transform




Image Analysis in Python with SciPy and Scikit Image | Scipy 2019 Tutorial | Nunez-Iglesias
Image Analysis in Python with SciPy and scikit-image | SciPy 2018 Tutorial | Stefan van der Walt
20 – Introduction to image processing using scikit-image in Python


Glossary: ABC
Abstract Base Classes for Containers

Iterable / Iterator

Iter-ables are able to be iterated over. Iter-ators are the agents that perform the iteration.

Iterators are lazy single-use iterables (not precompiled, just-in-time calculation)

  • They’re “lazy” because they have the ability to only compute items as you loop over them.
  • And they’re “single-use” because once you’ve “consumed” an item from an iterator, it’s gone forever.
  • The term “exhausted” is often used for an iterator that has been fully consumed.

The Iterator Protocol: How “For Loops” Work in Python

Importantly, it should be noted that iterators are stateful. Meaning once you’ve consumed an item from an iterator, it’s gone. So after you’ve looped over an iterator once, it’ll be empty if you try to loop over it again.

An iterator is like a stream of items. You can only look at the items in the stream one at a time and you only ever have access to the first element. To look at something in the stream, you need to remove it from the stream and once you take something from the top of the stream, it’s gone from the stream for good.


range is an iterable, but not an iterator

Sequence Types — list, tuple, range
Python’s range() Function Explained
Python: range is not an iterator!

  • immutable sequence type
  • looping a specific number of times in for loops
  • When you’re using an iterator, every loop of the for statement produces the next number on the fly.

The advantage of the range type over a regular list or tuple is that a range object will always take the same (small) amount of memory, no matter the size of the range it represents (as it only stores the start, stop and step values, calculating individual items and subranges as needed).


Python iterator and zip
Using the Python zip() Function for Parallel Iteration

Packing / Unpacking

4.7.4. Unpacking Argument Lists


Iterable -> Iterator -> Generator

Python Generators
Python Generators vs Iterators – Comparison Between Python Iterators and Generators
Difference between Python’s Generators and Iterators

Generator Expressions vs. List Comprehension

# Generator expression
(x*2 for x in range(256))

# List comprehension
[x*2 for x in range(256)]
line_list = ['  line 1\n', 'line 2  \n', ...]

# Generator expression -- returns iterator
stripped_iter = (line.strip() for line in line_list)

# List comprehension -- returns list
stripped_list = [line.strip() for line in line_list]

Generator Expressions vs. List Comprehension
Generator expressions and list comprehensions
Python List Comprehensions vs Generator Expressions

Week 10

Converting image from RGB to LUV and back results in different image

K-Means Clustering in OpenCV
Liste der Farbräume

Week 14

Hiroto Honda’s Medium Blog Posts