Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 60

Chris Jordan G. Aliac M.C.S.

Research Coordinator
Intelligent Systems Lab.
Cebu Institute of Technology
Topics
 Image Properties
Pixels/Color Property
Image Size
Loading an image
Saving an Image
Topics
 Basic Image Manipulations
Basic Pixel Copy
GreyScaling
Color Inversion
 Analysis of Images
Histograms
 Image Contrasting
Equalization vs Brightness
Topics
 Image POSE/SIZE
Flipping (horizontal/Vertical)
Rotation
Scaling
 Binary Operations on images
Thresholding
Image Subtraction
Topic
 Dynamic Frames
WebCam Input
Application of Static Image process techniques
 Pointer Based Systems
Method vs Pointers
 Convolution Matrix
Definition
Calculation
Topic
 Convolution Matrix Samples
Smooth
Gaussian Blur
Mean Removal
Sharpen
Emboss
 Edge Detection
Sobel
Prewitt
Kirsh
What is Image Processing?

 Manipulation of the properties of images for the


following uses:
Analysis
Enhancement
Systems Application
Data Acquisition
IMAGE
 “A picture Paints a Thousand words” (wrong)
 A picture is a million bytes…
 Collection of Colors arranged on vector locations
 A color in an image is a PIXEL (picture element)

COLOR = ALPHA + RED + GREEN + BLUE

Where: RED, GREEN, BLUE is a value between 0 – 255


A mixture of there components yield to a pixel color
Sample

0,0,0

255,255,255
MSPAINT
RGB color space interior
planes

1,1,1 0,1,1 0,0,1 1,1,1

1,0,0 0,0,0 0,0,0 1,1,0


Color Spaces
 RGB (Red, Green, Blue)
- used for screen displays (e.g. monitor)
 CMYK (Cyan, Magenta, Yellow, Black)
- used for printing
 HSI (Hue, Saturation, Intensity)
- used for manipulation of color components
 L*a*b*, L*u*v* (“perceptual” color spaces)
- distances in color space correspond
to distances in human color perception
Colored Light vs. Color Pigment

RGB color space

light

pigment

CMYK color space


Image Size
Image Width = Number of Columns = X
data on 2D space

Image Height =
Number of Rows =
Y data on 2D
space
Images Processing in C#
 C# is a programming language that is the main
flagship tool for .NET tech. (Microsoft)
 Environment feels like JAVA but looks like Visual
Basic.
 Contains Easy Managed Codes from the .NET
Framework
Images on C#
 An image is represented as a Bitmap in C#
 Images are loaded as Bitmaps and placed to view
on a PictureBox
Loading/Saving
 Loading images can be done by using the
instruction:

○ Image.FromImage(“filename);

 For Ease of File selection, use a Dialogs to get the


filename string.

(demo)
Basic Image Manipulations
 Basic Copy
This is done by scanning all the pixels and copy each
pixel into another empty bitmap.
Taking color samples is done via “GetPixel()”
Placing colors to a specified vector location is done via
“SetPixel()”
Colors can also be manufactured by a Color class
method “Color.FromARGB(byte,byte,byte)”
GrayScaling
 The Term GrayScaling is the convertion of colors
to different shades of gray.

 Misconception: GrayScaling is not called “BLACK


AND WHITE”
RGB Space Map
GrayScale
 To obtain different shades of grey, the average of
the color properties must be done.

pixel = R = G = B =(R+G+B)/3

This must be done for all pixels in the image.


Grayscale
 Converting an image to Grayscale form is
essential to faster analysis and computation
because the image data has been reduced in its
one dimensional form (1 byte)
Color Inversion
 Our eyes accept light from dark spaces
 We see better colors with more light gathered by
our eyes
 Inversion is the opposite of this concept as light is
taken away by the color values.

pixel = 255-R , 255 - G, 255 – B

this is done for all pixels


Analysis of Images
 An image must be converted into data that is easy
to analyze on the mathematical scale.
 Image must analyzed for further application of for
estimation for the correct enhancement of images
 The easiest way of doing this is by representing
an image into a 2D space where x is the degree of
image intensity and y as the magnitude of the
intensity
 This is called a HISTORGRAM
HISTOGRAM
HISTOGRAM
HISTOGRAM
 Higher Magnitudes toward 255 level for light
colored images
 Higher Magnitudes toward 0 level for dark colored
images
 This is done scanning all pixels and counting all
the color of different levels
Example
 Step 1 Convert the image to grayscale.
 Step 2 Use an array to count up pixels of same levels
 Step 3 Plot the values of the array on a bitmap graph

0 0 0 0 1 ….. 50 …. ….. ….. ….. …. 255

50 50 255
3 0 0 2 0 0 0 0 0 4

255 255 255


Image Intensity
 Brightness
This Process is done by adding the magnitude for all
pixels by the same factor.
 Contrast
This is done by evenly distributing magnitude data over
the histogram (HISTOGRAM EQUALIZATION)
Brightness
Contrast
See The Difference
 You Judge for Yourself
 What is the Difference between Brightness and
Contrast?
Flipping
 Flipping: An image translation tool for creating
mirror images from the original image
This can be done in 2 ways:
○ Horizontal:
- taking pixels from original image at 0 to width-1 columns
- Placing each pixel taken to empty bitmap at width-1 to 0 columns
○ Vertical
- taking pixels from original image at 0 to height-1 rows
- Placing each pixel taken to empty bitmap at height-1 to 0 rows
Rotation
 Using a rotation matrix will make the image rotate
at positive degrees (clockwise) or negative
degrees (counter-clockwise)

x` cos θ - sin θ x
y` sin θ cos θ y
0 0 1
x`= xcos θ + y(-sin θ )
y`=xsin θ +ysin θ
Scaling
 An image of any size can be resized to any
desired width and height
Large to Small size: samples from original image will be
taken an placed on a smaller, empty bitmap.
Small to Large: samples from original image will be
taken an placed numerous times on a larger empty
bitmap.
xSource = xTarget * origwidth / targetWidth
ySource = yTarget * origheight / targetHeight
example
 Large to small
1 2 3 4 1 3

5 6 7 8

9 10 11 12 9 11

13 14 15 16
Example
 Small to large

1 2 1 1 2 2

1 1 2 2

3 4 3 3 4 4

3 3 4 4
Binary Operations
 Thresholding: A method used to convert images to
extreme values 0 (black) 1 (white)
Useful for converting images from colored to this format
for old dot matrix printers
Good tool for determining objects of study without the
image noise
Thresholding
 Step1 : convert the image to grayscale
 Step2 : compare the image grayscale data with a
limit value
If data is less than the limit = convert the pixel to black
Else , convert pixel to white
Subtraction
 Image tool for comparing 2 images and detect
differences on them
For all pixels
○ result = |A(x,y)-B(x,y)|
where A and B are images taken with colors of the same location.
If result is > than limit sensitivity value then a pixel has
changed from its original image A
Dynamic Processing
 You need to have a real time image acquisition
device
Camera
Video Stream
Video Clip
Simple requirements
 In this case, we will be using a simple WEBCAM.
The camera must be properly installed with the
right manufactured drivers
DLL
 A DLL or Direct Link Library is a system file that
references your newly installed hardware to the
operating system
 DLL’s communicate between the main application
program interface (device) and to the operating system
 The concept of communication is to send “message” to
system files DLL to and fro the application
C# DLL
 C# can easily create DLL’s and can also easily
manipulate predefined and user defined DLL’s
using the dllimport instruction
 This makes C# the ideal tool for creating user
friendly applications that are powerful enough to
handle devices
How to?
 I have already made two C# classes
Device.cs = a class that sends Messages to the DLL
DeviceManager.cs = functions/methods that manipulate
the Device.cs class
 Both these classes are of the same namespace
(WebCamLib)
How to
 Device.cs class manipulates a certain DLL called
AVICAP.DLL
 The AVICAP.DLL is a system file that generically
manipulates any webcam devices installed onto
the computer.
How to class functions
 Public void showWindow (object) = shows the
preview of the images on the camera
 Public void stop() = stops camera preview
 Public void sendMessage() = sends refresh data
instructions to the camera (devicehandle)
How to class functions
 Public static Device[] getAllDevices() = gets all
available camera devices
 public static Device GetDevice(int deviceIndex) =
gets the current available device
How to steps
 Upon loading, get all devices by calling the
getAllDevice() function
 Select the certain device and use the
showWindow() function
 Place the preview onto a picture box object in c#
How to process images
 Images are processed via bitmap casting of the
image
 Once a bitmap is made out of an image, pixels are
analyzed for further enhancement and or
alteration
How to
 IDataObject data;
 Image bmap;
 Device d = DeviceManager.GetDevice(listBox1.SelectedIndex);
 d.Sendmessage();
 data=Clipboard.GetDataObject();
 bmap = (Image)(data.GetData("System.Drawing.Bitmap",true));
 Bitmap b=new Bitmap(bmap);
Pointer Based DIP
 A pointer is used to access address location of the
actual image and manipulate its RGB pixels
 This process is faster than the managed code
method
Convolution Matrix
 Convolution matrix is used to manipulate pixels
and its neighboring pixels to a desired effect
 Normal convolution image is an 3x3 pixel matrix
compared to each 3x3 grid pixel
topleft topmid Topright
left pixel right
bottomleft bottommid bottomright

 COMPUTATION
∑[3x3][3x3matrix]/factor + offset value
Convolution Matrix
Samples
 Smooth 1 1 1
1 Weight 1

1 1 1

 Gaussian Blur
1 1 1
2 Weight 2

1 2 1
 Mean Removal
-1 -1 -1
-1 Weight -1

-1 -1 -1

 Sharpen

0 0 0
-2 Weight -2

0 -2 0
 Emboss
-1 -1 -1
0 4 0

-1 0 -1
Edge Detection
 Sobel
1 0 -1
2 0 -2

1 0 -1

 Prewitt
-1 0 1
-1 0 1

-1 0 1
Edge Detection
 Kirsh
5 -3 -3
5 0 -3

5 -3 -3
Others
 Explore other color Space Maps like HSL
 Avid C# programmers can use the color Matrix to
do color manipulations
THANK YOU

chris.jordan.aliac@cit.edu

You might also like