image processing system development with model based design · image processing system development...

36
1 © 2013 The MathWorks, Inc. 모델 기반 설계를 통한 이미지 프로세싱 시스템 개발 Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

Upload: others

Post on 02-Nov-2019

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

1 © 2013 The MathWorks, Inc.

모델 기반 설계를 통한 이미지 프로세싱

시스템 개발

Image Processing System Development

with Model Based Design

MathWorks

Senior Application Engineer

Takuya Otani (大谷卓也)

Page 2: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

2

Sim

ulin

k

MA

TLAB

Model-Based Design Adoption Grid

Prototyping

System on PC

Hardware-in-

the Loop

Simulation

Production

Code

Formal

Analysis of

Models

Model

Verification

and Validation

Code Generation

Mo

de

lin

g

IP

System

Process

Prototyping on

PC

Integrate C-

Code with

legacy code

System Design

and Simulation

Algorithm

Exploration

Page 3: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

3

Agenda

Algorithm Development Using MATLAB

– Development of Image Processing Algorithm

– Acceleration and Prototyping on PC

Parallel Computing

GPU Computing

C Code Generation

– Custom GUI for Analysis

System Design Using Simulink

– Camera Pipeline using Simulink

– C Code Generation

– HDL Code Generation

Page 4: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

4

From Sensor Data to Image (Converting raw data from image sensor to color adjusted RGB)

Image Sensor

Bayer pattern

Color Filter

Sensor Arrays

RGB Color Image Raw Image

Page 5: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

5

Digital Camera Pipeline

Example of digital camera pipeline (Processes may be different for different cameras)

Noise

Reduction

Denoise electrical ,

and physical noise.

Demosaic

Interpolate raw

image data to

RGB

Tone

Mapping

Calibrate sensor

RGB values to

reference

Color

Adjust

•White balance

•Gamma

Correction

Page 6: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

6

Development of Tone Mapping Algorithm

sRGB Reference Data

• Read-in Color Chart sRGB reference data

RGBsRGB

Polynomial Curve Fitting

Color Chart Image

(Picture taken under D50

lighting condition)

Identify RGB

Values from grids

Create lookup table

Page 7: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

7

Demo

Development of tone mapping algorithm

Development of a camera pipeline

Page 8: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

8

Tone Mapping (Importing sRGB reference data from ColorChecker)

xlsread command to import Excel data to MATLAB

workspace. (xlswrite to write MATLAB workspace data to Excel)

Create Reference

Table

Page 9: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

9

C based decode

function

(dcraw.C *1)

*1: Open source raw data reader created by David Coffin

http://www.cybercom.net/~dcoffin/dcraw/

Adding gateway routine

void mexFunction(int nlhs, mxArray *plhs[],

int nrhs, const mxArray *prhs[]){

int returnValue, idx;

int nInputArguments;

char *pInputArguments[NPARAMETERS];

MEX Function (Compiled code can run

easily from MATLAB

command line)

>>mex dcraw.c

Using MEX functionality, legacy functions written in C/C++ or

Fortran language can be compiled on MATLAB, and use the code

as a MATLAB function.

Tone Mapping

(Using Raw Data Reader From C code)

Page 10: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

10

12bit Camera RAW Values

sR

GB

Re

fere

nced

Va

lue

s

Tone Mapping

(Curve fitting camera raw data to reference)

Curve Fitting Toolbox GUI (cftool)

Page 11: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

11

Validate Tone Mapping Result (Using various MATLAB visualization)

Compare sRGB reference data

against tone mapped camera RGB

data.

Example MATLAB Code to convert sRGB to L*a*b*

>>C = makecform('srgb2lab');

>>lab_Image = applycform(rgb_Image,C);

Verify the result using

RGB color space

Verify the result using

L*a*b* color space

Page 12: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

12

Digital Camera Pipeline

Example of digital camera pipeline (Processes may be different for different cameras)

Noise

Reduction

Denoise electrical ,

and physical noise.

Demosaic

Interpolate raw

image data to

RGB

Tone

Mapping

Calibrate sensor

RGB values to

reference

Color

Adjust

•White balance

•Gamma

Correction

Page 13: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

13

Noise Reduction (One method to use: Median filter)

10 15

30

13 24 18

22

20

89

Intensity data around 3x3 pixel area

20, 10, 15, 22, 89, 30, 18, 24, 13

Notice the value at center is much larger than the others.

Potential electrical or physical noise in the image.

Sort

10, 13, 15, 18, 20, 22, 24, 30, 89

Replace the center value

20, 10, 15, 22, 20, 30, 18, 24, 13

10 15

30

13 24 18

22

20

20

Page 14: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

14

Example of how median filter performs

Image with “Salt &

Pepper Noise”

Denoised

image with

median filter

MATLAB Code Example (Grayscale image example)

>>Image = imnoise(I,„salt & pepper‟, 0.02); %Add Nose

>>ImageF = medfilt2(Image,[3 3]); %Remove Noise

Page 15: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

15

Demosaic (In case of bilinear algorithm)

R

1

R

2

R

3

R

4

B

1

B

2

B

3

B

4

G

1

G

4

G

3

G

2

(R3+R4) / 2

(R2+R4) / 2

(R1+R2) / 2

(R1+R3) / 2

(R1+R2+R3+R4) / 4

(G1+G2+G3+G4) / 4

(B1+B3) / 2

(B1+B2) / 2

(B2+B4) / 2

(B3+B4) / 2

(B1+B2+B3+B4) / 4

RAW Data (Bayer Pattern)

(In case of “RGGB”)

Page 16: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

16

Performing of Demosaic

Image Processing Toolbox Example

>> rgb_Image = demosaic(raw_Image, 'rggb');

Perform Interpolation

Image Sensor Raw Data

Demosaiced RGB Image

Page 17: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

17

White Balancing / Gamma Correction

Example Of “Gray World” Implementation

Picture taken in a dark room

Correct the illumination using “Gray World”

algorithm

Gamma Correction (imadjust from Image Processing Toolbox )

Find R/G/B correction factor

R_factor = mean of RGB / mean of R

G_factor= mean of RGB / mean of G

B_factor= mean of RGB / mean of B

Page 18: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

18

Agenda

Algorithm Development Using MATLAB

– Development of Image Processing Algorithm

– Acceleration and Prototyping on PC

Parallel Computing

GPU Computing

C Code Generation

– Custom GUI for Analysis

System Design Using Simulink

– Camera Pipeline using Simulink

– C Code Generation

– HDL Code Generation

Page 19: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

19

Parallel Computing Products

Page 20: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

20

Parallel Computing enables you to …

Larger Compute Pool Larger Memory Pool

11 26 41

12 27 42

13 28 43

14 29 44

15 30 45

16 31 46

17 32 47

17 33 48

19 34 49

20 35 50

21 36 51

22 37 52

Speed up Computations Work with Large Data

Page 21: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

21

GPU Support with Parallel Computing Toolbox

NVIDIA GPUs with compute capability 1.3 or greater

– Includes Tesla 10-series

and 20-series products

(e.g., NVIDIA Tesla C2075 GPU:

448 processors, 6 GB memory)

– http://www.nvidia.com/object/cuda_gpus.html

GPU enabled Image Processing Toolbox functions:

imrotate(), imfilter(), imdilate(), imerode(), imopen(),

imclose(), imtophat(), imbothat(), imshow(), padarray(),

bwlookup()

Example: imfilter : 37x37 Filter on 3840 x 5120 pixels image

13 seconds (CPU Only ) 1 seconds (GPU: Tesla C2050)

Page 22: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

22

Algorithm Design and

Code Generation in

MATLAB

With MATLAB Coder, design engineers can

• Maintain one design in MATLAB

• Design faster and get to C/C++ quickly

• Test more systematically and frequently

• Spend more time improving algorithms in MATLAB

Automatic Translation of MATLAB to C

MATLAB Coder

verify /accelerate

itera

te

Page 23: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

23

Demo

Parallel processing of data

Running a camera pipeline in GPU

C Code generation for PC based deployment

Page 24: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

24

Agenda

Algorithm Development Using MATLAB

– Development of Image Processing Algorithm

– Acceleration and Prototyping on PC

Parallel Computing

GPU Computing

C Code Generation

– Custom GUI for Analysis

System Design Using Simulink

– Camera Pipeline using Simulink

– C Code Generation

– HDL Code Generation

Page 25: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

25

Development of custom GUI

GUIDE application allows easy-to-

use GUI creation on MATLAB

Based on the layout of buttons, and

menus , MATLAB automatically creates a

template code

Page 26: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

26

Using MATLAB for Algorithm Development

Easy to use interpreted programming environment

– Easy handling of vectors and matrices

(minimum “loops” in the code)

– Scripting environment for easy debug

– Various algorithms for many applications

– 2D, 3D visualization for analysis

Various options for code acceleration, and deployment

– Seamless utilization of GPGPU

– Easy to use parallel execution

– C code generation for deployment

Page 27: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

27

Agenda

Algorithm Development Using MATLAB

– Development of Image Processing Algorithm

– Acceleration and Prototyping on PC

Parallel Computing

GPU Computing

C Code Generation

– Custom GUI for Analysis

System Design Using Simulink

– Camera Pipeline using Simulink

– C Code Generation

– HDL Code Generation

Page 28: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

28

Simulink System Design Environment

Input from

Hardware

EDA Connection (Ex: Xilinx, Altera、Mentor

Graphics, Cadence)

Co-Simulation

with FPGA

Co-Simulation

with CPU/DSP

IDE Connection (Ex: Texas Instruments,

Analog Devices, Green

Hills, Altium, Eclipse)

Page 29: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

29

Camera Pipeline in Simulink

Median Filter (MATLAB Code)

Demosaic

Tone Mapping

(Lookup Table) White Balance

Gamma

Correction

Page 30: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

30

Fixed-Point Analysis

Convert floating point to optimized fixed-point models

– Automatic tracking of signal range (also intermediate quantities)

– Word / Fraction lengths recommendation

Bit-true models in the same environment

Automatically

identify and solve

fixed-point issues

Page 31: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

31

Generating HDL Code from Simulink Model

Automatically generate

bit true, cycle accurate

HDL code from

Simulink, MATLAB and

Stateflow

always @(posedge clk or posedge reset)

begin : HDL_Counter_process

if (reset == 1'b1) begin

HDL_Counter_count <= 0;

end

else begin

HDL_Counter_count <= HDL_Counter_count +

HDL_Counter_stepreg;

end

end

assign HDL_Counter_out1 = HDL_Counter_count;

// <S140>/Product

assign Product_out1 = avg_all_out1 * Math_Function_out1;

assign factorR = Product_out1;

// <S140>/Math Function1

assign Math_Function1_out1 = (MeanG_out1 == 0 ? 16'b1111111111111111 :

16'b1000000000000000 / MeanG_out1);

// <S140>/Product1

assign Product1_out1 = avg_all_out1 * Math_Function1_out1;

assign factorG = Product1_out1;

HDL HDL

Page 32: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

32

Co-Simulation of HDL with MATLAB/Simulink

Test Bench

Re-use MATLAB/Simulink test benches

Automation through cosimWizard

MATLAB/Simulink

HDL Simulator

Run HDL Co-simulation

System Object

Page 33: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

33

Integrated with HDL Workflow Advisor

Page 34: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

34

Demo

Designing a camera pipeline in Simulink

C/HDL code generation

System verification using FPGA in the loop

Page 35: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

35

INTEGRATION

IMPLEMENTATION

MCU DSP FPGA ASIC

Structured

Text

VHDL,

Verilog C, C++

PLC

Model-Based Design

DESIGN

RESEARCH REQUIREMENTS

Environment Models

Physical Components

Algorithms

TE

ST

AN

D V

ER

IFIC

AT

ION

Code acceleration and generation

for prototyping

System Design as Executable

Specification using Simulink

Functional verification with

software/hardware in the loop

production code generation, and

documentation

Algorithm (IP) design using

MATLAB

Page 36: Image Processing System Development with Model Based Design · Image Processing System Development with Model Based Design MathWorks Senior Application Engineer Takuya Otani (大谷卓也)

36

감사합니다

ありがとうございます

Thank you!

© 2013 The MathWorks, Inc. MATLAB and Simulink are registered trademarks

of The MathWorks, Inc. See www.mathworks.com/trademarks for a list of

additional trademarks. Other product or brand names may be trademarks or

registered trademarks of their respective holders.