Monthly Archives: February 2020

TSM_CompVis

skimage

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

API

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

Tutorial

Bright ridge detection not working as expected with Frangi, Frangi-, Hessian-Filter
IPython (Jupyter) widgets: An image convolution demo
Wiener Filter for image deblur
github.com/scikit-image/skimage-demos/blob/master/clock_deblur.py
Histogram Equalization

scipy

Multidimensional image processing (scipy.ndimage)

API

scipy.ndimage.binary_fill_holes

Python

python-kurs.eu

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}.")

Homework

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
Ebenengleichung
Koordinatenform

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

Computer Vision (SBE404B)

Asem Alaa
EslamAdel
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

github.com/sbme-tutorials/cv-week1-demo
github.com/sbme-tutorials/sbe401-week2-demo
github.com/sbme-tutorials/cv_week3_demo
github.com/sbme-tutorials/cv-week4-demo
github.com/sbme-tutorials/cv-week8-demo

Week 1

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

Flags

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

Slice

Understanding slice notation

Loop, Iteration

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

Exercise

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
Rasterung

Week 3

Convert NumPy

How to convert a boolean array to an int array

Histogramm

Histograms in Image Processing with skimage-Python

Week 4

Image Processing with Python

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

scikit-image.org

Module: transform

kite

resize
rescale

YouTube

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

ABC

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

range is an iterable, but not an iterator

Sequence Types — list, tuple, range
Ranges
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).

zip

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

Packing / Unpacking

4.7.4. Unpacking Argument Lists

Generator

Iterable -> Iterator -> Generator

Python Generators
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