Real-time image processing and object recognition for robotics applications. Adrian Stratulat

Similar documents
OpenCV Introduction. CS 231a Spring April 15th, 2016

Laboratory of Applied Robotics

OpenCV. OpenCV Tutorials OpenCV User Guide OpenCV API Reference. docs.opencv.org. F. Xabier Albizuri

3D graphics, raster and colors CS312 Fall 2010

Advanced Imaging Applications on Smart-phones Convergence of General-purpose computing, Graphics acceleration, and Sensors

Throughput Exploration and Optimization of a Consumer Camera Interface for a Reconfigurable Platform

IDENTIFICATION OF MATURED COCONUT AND ITS LOCATION USING OPENCV

Introduction to Computer Vision Laboratories

ARM Controller Based Object Recognition

Color, Edge and Texture

Mobile Robotics: Vision and Manipulation

The NAO Robot, a case of study Robotics Franchi Alessio Mauro

Game Programming. Bing-Yu Chen National Taiwan University

Illumination and Shading

Studio 4. software for machine vision engineers. intuitive powerful adaptable. Adaptive Vision 4 1

CUDA OPTIMIZATION WITH NVIDIA NSIGHT ECLIPSE EDITION

Object Shape Recognition in Image for Machine Vision Application

Introduction to the Tegra SoC Family and the ARM Architecture. Kristoffer Robin Stokke, PhD FLIR UAS

Image processing. Reading. What is an image? Brian Curless CSE 457 Spring 2017

Introduction to OpenCV. Marvin Smith

Computational Foundations of Cognitive Science

Scheduling Image Processing Pipelines

COS Lecture 10 Autonomous Robot Navigation

TR An Overview of NVIDIA Tegra K1 Architecture. Ang Li, Radu Serban, Dan Negrut

FPGA BASED OBJECT TRACKING SYSTEM PROJECT APPROVAL

Computer Graphics. Bing-Yu Chen National Taiwan University The University of Tokyo

JAVA DIP - OPEN SOURCE LIBRARIES

Computer Organization and Design, 5th Edition: The Hardware/Software Interface

Multimedia Retrieval Exercise Course 2 Basic of Image Processing by OpenCV

The Articial Landmark Design for Mobile Robots Localization and Mapping

Video and Image Processing for Finding Paint Defects using BeagleBone Black

Real time game field limits recognition for robot self-localization using collinearity in Middle-Size RoboCup Soccer

INTEGRATING COMPUTER VISION SENSOR INNOVATIONS INTO MOBILE DEVICES. Eli Savransky Principal Architect - CTO Office Mobile BU NVIDIA corp.

ARM Powered SoCs OpenEmbedded: a framework for toolcha. generation and rootfs management

Noise Model. Important Noise Probability Density Functions (Cont.) Important Noise Probability Density Functions

ITP 140 Mobile App Technologies. Colors

Intel s MMX. Why MMX?

Scheduling Image Processing Pipelines

Object Tracking by PID Control and Image Processing On Embedded System

Cross-platform Mobile Document Scanner

Contour Detection on Mobile Platforms

CISC 110 Week 1. An Introduction to Computer Graphics and Scripting

Improving the Addweighted Function in OpenCV 3.0 Using SSE and AVX Intrinsics

CS 464 Review. Review of Computer Graphics for Final Exam

CSE2003: System Programming Final Exam. (Spring 2009)

Graphics Overview ECE2893. Lecture 19. ECE2893 Graphics Overview Spring / 15

Output models Drawing Rasterization Color models

TEGRA K1 AND THE AUTOMOTIVE INDUSTRY. Gernot Ziegler, Timo Stich

LAB SESSION 1 INTRODUCTION TO OPENCV

CISC 1600 Lecture 3.1 Introduction to Processing

Anno accademico 2006/2007. Davide Migliore

Carmen Alonso Montes 23rd-27th November 2015

Image Processing Fundamentals. Nicolas Vazquez Principal Software Engineer National Instruments

Optimized Scientific Computing:

w w w. b a s e t r a i n i n g i n s t i t u t e. c o

ECE 471 Embedded Systems Lecture 2

A model-based approach for tool tracking in laparoscopy

Graflog User s guide

Cortex-R5 Software Development

Future Computer Vision Algorithms for Traffic Sign Recognition Systems

Edge Detection Using Streaming SIMD Extensions On Low Cost Robotic Platforms

FreeBSD and Beaglebone Black, a robotic application.

Robot vision review. Martin Jagersand

How to supply your artwork to us in a print ready format

Unleashing the benefits of GPU Computing with ARM Mali TM Practical applications and use-cases. Steve Steele, ARM

OpenCV on Zynq: Accelerating 4k60 Dense Optical Flow and Stereo Vision. Kamran Khan, Product Manager, Software Acceleration and Libraries July 2017

Ten (or so) Small Computers

File Preparation & Design considerations

EMBEDDED MACHINE VISION

CS103L PA3 It's So Belurry

Matrix. Get Started Guide

Department of Industrial Engineering. Sharif University of Technology. Operational and enterprises systems. Exciting directions in systems

Applets and the Graphics class

New functionality in OpenCV 3.0

CS A485 Computer and Machine Vision

Adobe Illustrator CS Design Professional CREATING TEXT AND GRADIENTS

GTC 2013 March San Jose, CA The Smartest People. The Best Ideas. The Biggest Opportunities. Opportunities for Participation:

ECE 471 Embedded Systems Lecture 3

William Stallings Computer Organization and Architecture 8 th Edition. Chapter 14 Instruction Level Parallelism and Superscalar Processors

Take GPU Processing Power Beyond Graphics with Mali GPU Computing

Overview. Java2D. Graphics in Java2D: Colour Images Fonts. The bigger picture of Java Graphics: Java Advanced Imaging (JAI) API Java3D

Use of SIMD Vector Operations to Accelerate Application Code Performance on Low-Powered ARM and Intel Platforms

Enabling a Richer Multimedia Experience with GPU Compute. Roberto Mijat Visual Computing Marketing Manager

CS 556: Computer Vision. Lecture 18

Ekalavya, Summer Internship, Scilab Computer Vision Toolbox. Scilab Computer Vision Toolbox

Bits, bytes, binary numbers, and the representation of information

Anatomy of a Globally Recursive Embedded LINPACK Benchmark

DT Vision Foundry. Now With FDA 21 CFR Part 11 Support, New Color Split Tool, and Many Enhancements!

THE LEADER IN VISUAL COMPUTING

Note: TAO OCR is a derivitive of the same OCR engine used in Microsoft's "Seeing AI" application!

ECE 471 Embedded Systems Lecture 2

NetBSD Work-in-Progress

HP Designjets with In-Printer Processing Architecture

GPGPU on ARM. Tom Gall, Gil Pitney, 30 th Oct 2013

Mobile Robot Navigation Using Omnidirectional Vision

Tracking facial features using low resolution and low fps cameras under variable light conditions

5. ARM 기반모니터프로그램사용. Embedded Processors. DE1-SoC 보드 (IntelFPGA) Application Processors. Development of the ARM Architecture.

Computer and Machine Vision

Computer and Machine Vision

Nvidia Jetson TX2 and its Software Toolset. João Fernandes 2017/2018

Transcription:

Real-time image processing and object recognition for robotics applications Adrian Stratulat

What is computer vision? Computer vision is a field that includes methods for acquiring, processing, analyzing, and understanding images and, in general, highdimensional data from the real world in order to produce numerical or symbolic information, e.g., in the forms of decisions.

What are its applications? OCR 3d scanning Obstacle avoidance Pattern recognition Object recognition Event detection Augmented reality Computer interaction

The Theory Computer Vision

Color spaces How do we represent colors as data?

Color spaces RGB (Red, Green, Blue)

Color spaces CMYK (Cyan, Magenta, Yellow, black)

Color spaces HSV (Hue, Saturation, Value)

Color spaces HSL (Hue, Saturation, Lightness)

Color spaces Grayscale

Image processing What can we do with images?

Simple filtering Modifying the value of a pixel depending on its current value: treshholding, color space conversion

More advanced filtering (I) Algorithms based on a convolution matrix: Blurring, edge detection

More advanced filtering (II) Sobel operator: finding edges:

More advanced filtering (III) Scharr operator:

More advanced filtering (IV) Laplacian operator:

More advanced filtering (V) Smoothing (blurring): Gaussian blur Mean filtering Median filtering Bilateral filtering

From bitmaps to contours After running edge detection, we can analyze the properties of the shape.

Advanced algorithms (I) The Hough Transform can be used to detect even broken lines

Advanced algorithms (II) The Hough Transform algorithm can also be modified to detect circles.

The Software: OpenCV Open Source Computer Vision Library

OpenCV BSD licensed Written in C++ Has bindings for C, C++, Java and Python Cross-platform Website: http://opencv.org/

OpenCV Timeline: 1999 Intel started the project 2000 first alpha release 2006 version 1.0 launched 2008 the project receives corporate support from Willow Garage 2009 version 2.0 launched

OpenCV Modular design: Core Imgproc Highgui Calib3d etc.

OpenCV Core: Masking Containers for data etc.

OpenCV Imgproc Blur Treshholding Structural analysis Hough transform

OpenCV Highgui: Windows Trackbars Reading and writing images Camera capture

The Hardware: pcduino ARM Cortex-A8 dev board

pcduino Hardware specifications: Allwinner A10 SoC ARM Cortex-A8 core Mali400 GPU 1GB RAM 2GB Flash 3 USB ports 1 HDMI output 1 Ethernet port

pcduino CPU core details: 32 bit registers 31 general purpose registers ARMv7 Superscalar architecture NEON SIMD unit VFP unit

pcduino CPU core NEON unit: The NEON unit has 32 128bit registers for SIMD processing Supports arithmetic operations as 8bit, 16bit, 32bit signed and unsigned integers and simpleprecision floating-point operations Operations include saturating arithmetic

pcduino CPU core VPF unit: Supports arithmetic operations on single and double precision floating point numbers ISN'T A SIMD UNIT

The Optimizations How to improve performance several times

Tips to improve performance on ARM (I) Don't use bigger data types than you need! Remember that the NEON registers are 128 bits wide, so in one clock cycle it can add 16 8-bit integers or 4 32-bit integers!

Tips to improve performance on ARM (II) Avoid double-precision floating-point numbers! This is the only data type that cannot be processed by the NEON unit, and will be processed by the VFP. (this isn't ideal as the VFP isn't a SIMD unit)

Tips to improve performance on ARM (III) When iterating an array, prefetch! ARM doesn't have automatic prefetching, so the prefetch assembly instruction needs to be called explicitly to avoid waiting for a cache miss later (prefetch brings the data from the RAM to the L2 cache). If the compiler doesn't add it, modify the code.

Tips to improve performance on ARM (IV) Don't be afraid to use ARMspecific instructions, like saturating arithmetic operations! Even if you are afraid to write assembly, you may always use the processor's intrinsic functions.

Tips to improve performance on ARM (V) Using some of these tips, I've managed to modify the OpenCV library to obtain speed-ups up to 6 times.

Questions?