320 likes | 463 Views
Recap. Low Level Vision. Input Image sensor data Processing Neighborhood operators Mathematical operators Local contextual operators Output Pixel based features. Mid Level Vision. Input Pixel based features Processing Statistical operators Mathematical operators
E N D
Recap CSC508
Low Level Vision • Input • Image sensor data • Processing • Neighborhood operators • Mathematical operators • Local contextual operators • Output • Pixel based features CSC508
Mid Level Vision • Input • Pixel based features • Processing • Statistical operators • Mathematical operators • Global contextual operators • Output • Objects CSC508
Mid-Level Vision CSC508
Homogeneous Intensity Regions • Areas of constant intensity within the image • May represent • Objects • Regions of interest • Computed by [one method among many] • Binarization • Connected component analysis CSC508
Binarization (revisited) Original Gray Level Image Binary Image CSC508
Binarization (revisited) CSC508
1 2 4 3 Region Formation Original Gray Level Image Marked Region Image CSC508
Boundary Information Original Gray Level Image Region Boundary Image CSC508
Finding Regions viaConnected Component Analysis • In the input image the intensity of each region may be arbitrary • In the binarized image the intensity of each region is 255 (maximum, or at least different from the background) • The goal of connected component analysis is to “label” the pixels of each connected region with a value unique to that region CSC508
Connected Component Analysis • A simple recursive “flood-fill” algorithm will do the trick but… • It is slow • A large object will overflow the stack (memory intensive) • Smarter algorithms can be found in the computer graphics, graph theory, and image processing literature CSC508
Connected Component Analysis • One algorithm works as follows: • Pass 1: • Assign labels to each object pixel • Keep track of neighboring labels that belong to the same object • Pass 2: • Rectify associations • Pass 2 is somewhat complex and comes from a language parsing algorithm – I won’t describe the details here CSC508
1 2 4 3 Connected Component Analysis Original Gray Level Image Marked Region Image CSC508
Connected Component Analysis • Note that this image is “ideal” • You might expect images as such in a manufacturing environment • In less than ideal cases objects may get broken up or merged by thin lines, etc. • Correction can be made through the use of Morphological operators • Erosion • Dilation • More on Morphological operators next week CSC508
Boundary Extraction • Once you have identified regions it is [conceptually] simple to extract their boundaries • Find the upper-left most pixel of the region • “Walk around” the region always keeping it to your right • Keep track of the directions you step along the way (north, south, east, or west) • Stop when you return back to the beginning • This creates a chain-code of the region boundary • From the chain-code you can compute the perimeter length and other descriptors CSC508
“*” marks the starting point (upper-left most pixel of the region) Resultant chain-code is NEEESESSSWSSWSWWWWNNNNEESENWN Resultant perimeter is 30 Boundary Chain-Code N E E E * S E N S N E E/W E N S N S E W S N S N W S W W W W S CSC508
Region Description CSC508
Object Description • Now that we have identified objects we need a way to describe them that will facilitate recognition CSC508
Moments • A set of descriptors for representing the shape of an object • Typically applied to an identified region but may be used with gray-level CSC508
Discrete Case • Moment of an region (general definition) • Central moments 0 if not in region 1 if in region (Object centroid) CSC508
Central Moments • First few central moments: CSC508
Moment Features • Centroids (average x and y locations) • Principle axis orientation CSC508
Convex Hull • Another useful shape descriptor • The smallest convex border encasing the object • Think of stretching a rubber band around the outside of the object and letting it wrap around it • This will be the convex hull • Input to the algorithm is a set of points • These are the boundary points found previously CSC508
Region: 1 Area: 27753.0 xBar: 171.26 yBar: 131.89 theta: -32.87 perimeter: 1098 Convex Hull Perimeter: 812 Region Descriptors CSC508
Region: 2 Area: 10390.0 xBar: 230.82 yBar: 252.99 theta: 87.51 perimeter: 580 Convex Hull perimeter: 515 Region Descriptors CSC508
Region Descriptors • Region: 3 • Area: 8049.0 • xBar: 362.24 • yBar: 223.76 • theta: -6.62 • perimeter: 411 • Convex Hull • perimeter: 322 CSC508
Region Descriptors • Region: 4 • Area: 11203.0 • xBar: 357.98 • yBar: 378.14 • theta: -27.80 • perimeter: 648 • Convex Hull • perimeter: 520 CSC508
Region: 5 Area: 14880.0 xBar: 92.5 yBar: 366.5 theta: 0.0 perimeter: 492 Convex Hull perimeter: 484 Region Descriptors CSC508
Other Features • Average Intensity • Circularity or Compactness p: perimeter, a: area CSC508
Things To Do • Reading for Next (few) Week(s) • Chapter 14 – Segmentation by Clustering • We’ll consider various clustering methods • Chapter 15 – Segmentation by Models • We’ll analyze the Hough Transform CSC508
Things To Do • Homework • Convex Hull • Find an algorithm for computing the convex hull of a set of points • Describe the algorithm in words • Test the code • Boundary Extraction • Write the code to trace the boundary (chain code) of a specified region • Print out the chain code symbols (start pixel row, column followed by a sequence of N E W S directions) • Test the code • Moments • Code the μ00, μ10, μ01, μ11, μ20, μ02 moments • Test the code • You may write in any programming language you choose • Deliverables: • Zipped images in email • Email the source code to reinhart@clunet.edu with the subject line CSC508 PROGRAM 3 • Due beginning of class in two weeks • (late assignments will be penalized 10%) • I will post test images CSC508