Image Processing with Plain C BMP Library Synthetic...

53
Image Processing with Plain C BMP Library Synthetic Images ORT Braude Engineering College, Course: Image Processing 31651, Lecturer: Dr. Samuel Kosolapov [email protected]

Transcript of Image Processing with Plain C BMP Library Synthetic...

Page 1: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Image Processing with Plain CBMP Library

Synthetic Images

ORT Braude Engineering College, Course: Image Processing 31651,Lecturer: Dr. Samuel Kosolapov [email protected]

Page 2: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Image Creation with Lens

Real 2D Image

Real 3D Object

Page 3: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Thin Convex Lens:

Real Image Formation

Page 4: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Basic Eye Structure: Image Formation on the Retina

4

To the Brain

Page 5: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Basic Eye Structure: PhotoReceptors:

Finite Number of Rods and Cones

5

Page 6: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Basic Eye Structure: PhotoReceptor as Electronic DeviceLight leads to “structural changes” Current/Voltage changes

6

Page 7: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Basic Eye Structure: PhotoReceptor as Electronic Device:

Light Electric Signal

7

Page 8: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Basic Eye Structure: Final Number Of Receptors

Two points can/cannot be resolved Resolution concept

Pixel

8

Page 9: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Resolution concept PixelOnly Final Number of “pixels”

(Picture elements == pixel)are needed to be presented to the human eye

9

Page 10: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Considering “digital encoding of the light intensity” (details later)

Human Eye can distinguish Only Limited Number of “Gray Levels”

10

Page 11: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Human Eye has 4 types of PhotoReceptors:Rods (for the night “gray” vision)

and 3 types of Cones (day color vision)[Details later]

11

Page 12: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

3 Types of color PhotoReceptors 3 basic colors (R G B)

are enough for human vision

12

Page 13: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Pixels: Gray and Color(RGB) images creation

13

Page 14: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

BW Image as 2D matrix of PIXELS = Picture Elements

* * * * * * * * * * * *

* * * * * * * * * * * *

* * * * * *

* * * * * *

* * * * * *

* * * * * * * * * * * *

* * * * * * * * * * * *

0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 1 1 1 1 1 1 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0

0 0 0 0 0 0 0 0 0 0 0 0

Simplest image: BW – Black and White image. Two values of Pixel(s) are possible:Pixel Value "0" := Black : "*" ; Pixel Value "1" := White: "Space". 1 bit per pixelExample: White Rectangle on Black background

2D Matrix of BW pixelsPixel “A”:Row = 0;Column = 0;Pixel Value = 0 (Black)

History: “Console” presentationPixel “A”:Row = 0;Column = 0;Pixel Value = 0 (Black): “*”

14

Page 15: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Gray Image as 2D matrix of PIXELSGray Image:

Pixel Value 0 corresponds to BLACKPixel Value 255 corresponds to WHITE

Pixel Values between 0 and 255 are seen as GRAY. (256 Gray Levels) Pixel value is Byte

Generally: 1 Byte per Pixel is allocated (8 bit per pixel)

2D Matrix of Gray pixelsPixel “A”:Row = 0;Column = 0;Pixel Value = 0 (Black)

Pixel “B”:Row = 3Column = 6Pixel value = 127 (Gray)

0

100 121 112 133 132 131 127 122 55 199 200 100Row = 3

Co

lum

n = 6

15

Page 16: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

RGB (True Color) Image as 3D matrix of PIXELS

RGB Pixel: Vector: {R, G, B} - Red, Green, Blue = 3 Bytes per Pixel, 24 bit per pixel

Each pixel on the computer monitor is made up of a triadof red, green, and blue phosphors

From the distance > 30 cm Human Eye “see” triad as some colorIndividual pixels are practically undistinguishable (CGA, VGA)

16

Page 17: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

RGB Color treatment

Color RGB

Red {255,0,0}

Yellow {255,255,0}

Green {0,255,0 }

Cyan {0,255,255}

Blue {0,0,255}

Magenta {255,0,255}

White {255,255,255}

Black {0,0,0}

17

Page 18: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

RGB Color presentation

Digital Color : RGB Space– 3 Basic colors

256 levels are good enough for Human Eye

Number of possible colors =256 Levels of Red*256 Levels of Green

*256 Levels of Blue

= ~ 16 millions POSSIBLE colors

== 24 bit per pixel

== true color image

RGB Color digital presentation : {R,G,B} Black : {0,0,0}, White: {255,255,255}Red: {255,0,0}

18

Page 19: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Gray Image Declaration2D Matrix of bytes

1 byte per pixel

#define NUMBER_OF_ROWS (240)#define NUMBER_OF_COLUMNS (320)

unsigned char ImageA [ NUMBER_OF_ROWS] [NUMBER_OF_COLUMNS] ;

Explain: unsigned char, macro usage, count from 0, +/- 1 error out of range

19

Page 20: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

True Color Image Declaration3D Maitix of bytes3 bytes per pixel

#define NUMBER_OF_ROWS (240)#define NUMBER_OF_COLUMNS (320)

unsigned char ImageA [ NUMBER_OF_ROWS] [NUMBER_OF_COLUMNS] [3];

32 Bit Per Pixel: RGB + Alpha Channel: transparency (Starting from Windows Vista)32 bpp Image Quality: Is equivalent to 24 Bit Per Pixel

20

Page 21: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Sources of Images

• Digital camera,

• Medical Device

• File (BMP, JPG, etc.)

• Synthetic Image

Synthetic Image == Test Image Usage in the Image Processing: To check algorithms.

We know exactly what the input is(Camera – unknown noise is always present)

21

Page 22: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Goal: Create Set of Simple Test Images(Compare with: Signal Generator in electronics laboratory)

• White Rectangle on Black Background

• Rectangle of Color #1 on Background of Color #2

• Analog Gray Ramp

• Digital Gray Ramp

• Funny Color Image

• Gray Gaussian

• Gray 1D and 2D sin

• BW Fence

22

Page 23: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

BMP Library: Goal & Rationale• We need to “create”/”process” images and present

results on the monitor• “Console” application has no simple means to present

image on the monitor (explain history of…)• This can be done by using Windows GUI API or by using

newer .NET approach.• But writing Windows GUI applications require OOP and

experience • Typical solution is: “create”/”process” images in the

“console” application and store image as file• BMP file will be used as appropriate format• JPEG format is too complex + compression creates

many problems in Image Processing

23

Page 24: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Multi File Project Structure

ImProc.cppContains:

#Include ImProcInPlainC.h to provide access to BMP functionsmain() function calling functions created by student

Functions to be created by students according to the assignment

ImProcInPlainC.h

Contains declarations and BMP functions prototypes

No need to modify this file except setting image sizes

ImProcInPlainC.cpp

Contains implementationof the BMP functions

No need to modify this file except bugs correction

24

Page 25: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProcInPlainC.h: Declarations#pragma once

// The following declarations are needed for Plain C programming#define CGA_WIDTH (320) // Please do not change#define CGA_HEIGHT (240) // Please do not change

#define VGA_WIDTH (640) // Please do not change#define VGA_HEIGHT (480) // Please do not change

#define SIZE_256 256 // for simple FFT tests#define SIZE_512 512 // for CT and MRI files

#define NUMBER_OF_ROWS (CGA_HEIGHT)#define NUMBER_OF_COLUMNS (CGA_WIDTH)

#define NUMBER_OF_COLORS (3)#define B (0)#define G (1)#define R (2)

25

Page 26: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProcInPlainC.h: Clarifications

/*Image size is restricted to properly aligned images like 320x240, 512x512

WARNING: Big image sizes may create Real-Time problems in STACKS640x480 may be big size

In that case declare images "globally" - bad practice, but...

Example of declaration of the Gray Image:unsigned char Image[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];

Example of declaration of the BGR Image:unsigned char

Image[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS];

*/

26

Page 27: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProcInPlainC.h: “Store”functions prototypes declarations

void StoreBgrImageAsTrueColorBmpFile( unsigned char image[][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS],char bmpFileName[] );

void StoreBgrImageAsGrayBmpFile( unsigned char image[][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS],char bmpFileName[] );

void StoreGrayImageAsTrueColorBmpFile( unsigned char image[][NUMBER_OF_COLUMNS],char bmpFileName[] );

void StoreGrayImageAsGrayBmpFile( unsigned char image[][NUMBER_OF_COLUMNS],char bmpFileName[] );

27

Page 28: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProcInPlainC.h: “Load”functions prototypes declarations

void LoadBgrImageFromTrueColorBmpFile( unsigned char image[][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS],char bmpFileName[] );

void LoadBgrImageFromGrayBmpFile( unsigned char image[][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS],char bmpFileName[] );

void LoadGrayImageFromTrueColorBmpFile( unsigned char image[][NUMBER_OF_COLUMNS],char bmpFileName[] );

void LoadGrayImageFromGrayBmpFile( unsigned char image[][NUMBER_OF_COLUMNS],char bmpFileName[] );

28

Page 29: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProcInPlainC.h: Servicefunctions prototypes declarations

// Service functionsvoid WaitForUserPressKey();

void ConvertGrayImageToColorImage( unsigned char source[][NUMBER_OF_COLUMNS],unsigned char destination[][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS]);

void ConvertColorImageToGrayImage( unsigned char source[][NUMBER_OF_COLUMNS][NUMBER_OF_COLORS],unsigned char destination[][NUMBER_OF_COLUMNS]);

29

Page 30: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProcInPlainC.cpp:“store/load & service ” functions

implementations

On this stage there is no need to explore this file.

It is Lecturer’ responsibility that implementation is correct

Later, explanations HOW to store/load BMP filesin a number of situations will be provided

30

Page 31: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProc.cpp: usage of“store/load & service” functions

void main(){

// Declare Gray Imageunsigned char Image[NUMBER_OF_ROWS][NUMBER_OF_COLUMNS];

CreateGrayRectangle(Image);StoreGrayImageAsGrayBmpFile(Image, "GrayRectangle.bmp");

CreateGrayRamp(Image);StoreGrayImageAsGrayBmpFile(Image, "GrayRamp.bmp");

WaitForUserPressKey();}

31

Page 32: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProc.cpp: function CreateGrayRectangle

32

Page 33: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

ImProc.cpp: function CreateGrayRamp

Remind: BYTE Arithmetic : 255+1 = 0; 255+2 =1

33

Page 34: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Run “ImProc.exe” (F5 or from current directory)

34

2 Standard BMP files created

Page 35: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Created “synthetic” BMP filescan be seen by any appropriate “viewer”,

for example MS PAINT

35

Page 36: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To see details of BMP image:use “BMP Viewer”

36

image[row][column] = column;

Demonstrate & Explain usage

Page 37: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create really important Test-Image: “Analog Ramp” (Change the size to 100x1024)

37

Page 38: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create really important Test-Image: “Digital Ramp” (Change the size to 100x1024)

38

Show Mach Bands(Google images of )

Experiment:How much Gray Level

Can really be distinguished

Page 39: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create really important Test-Image: “Fence” (Change the size to 100x1024)

39

Warning: Use only “Pixel Viewer” like “BMP Viewer”Otherwise “strange effects” will be seen

Explanation (alias) will be provided in a due time

Page 40: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create really important Test-Image: “2D Gaussian”

40

2

exp

xxF

2

0exp

xxxF

2

0

2

0 expexp,yx

yyxxyxF

Page 41: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create really important Test-Image: “2D Gaussian”

41

2

0

2

0 expexp,yx

yyxxyxF

Page 42: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Recommendation for writing Math Code

42

Polite advice: Write complex math function in one line of code

only in case You are participating in the contest“Write the shortest unclear code in C”

Use a number of variables and advance step by step.Leave “optimization” to compiler

(in case You are not creating code for “Hetz” project)

Page 43: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Code of “2D Gaussian”

43

Page 44: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create the following Test-Image “1D sin” Important for FFT: Value[0]==Value[Last]

Explain: Low/High space frequency(Illusion: 3D effect “Space Columns)

44

Page 45: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create the following Test-Images “2D sin”

Important for FFT: Explain: Low/High space frequencies wx wy

45

Page 46: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create the following Test-Image

46

Color Rectangle

Page 47: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

To do: create the following Test-Images

47

Funny 1

Funny 2

Page 48: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Code for “Funny Image1”

48

Play with code and Explore Profile

Page 49: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Code for “Funny Image 2”

49

Play with code and Explore Profile

Page 50: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Blending Technique

50

Image C = Image A + Image BQ1. What does this may meanQ2. How to do

A1. Matrix C = Matric A + Matrix B(Matrix A,B,C are of the same size !!!)

A2. For each Pixel:ImageC[row,col] =

ImageA[row,col]+ImageB[row,col]

Page 51: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Blending Technique

51

Problem 1: Byte overflow(White + White = 200 + 200 = ?)

Solution: Use Factors

For each Pixel:ImageC[row,col] =

a* ImageA[row,col]+b*ImageB[row,col]

Page 52: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Blending Technique

52

Reminder: Specific VS problem(no more “DOS” development is welcome)

Arrays Declaration placement in “DOS C” (Stack or Heap ?)

Page 53: Image Processing with Plain C BMP Library Synthetic Imagesbrd4.ort.org.il/~ksamuel/ImProc.31651/Laboratory.For Students/03 B… · Recommendation for writing Math Code 42 Polite advice:

Now Create something really funny

53

?