DOC PREVIEW
Columbia COMS W4115 - EZIP - Easy Image Processing

This preview shows page 1 out of 4 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 4 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

EZIP: Easy Image ProcessingKevinChiuTejasNadkarniSwatiKumarAvantiDharkar{kgc2113, tgn2104, sak2144, ad2518}@columbia.eduSeptember 24, 2007In this project, we are planning to design and implement a language for image processing, whichcan perform arbitrary convolutions and various types of image arithmetic.1 IntroductionIt does not come as a surprise that we are surrounded by images. We use images for communication,transmitting information, creation of fiction etc. . In short we need image processing to understand,analyze and even change the world around us. Computer Vision techniques are widely applied intelevision, medicine, and even Hollywood movies.We have developed efficient technologies to process digital images; however, Computer Visionremains a challenging domain. A deep understanding of the difficulties in the existing best practiceshas led us to the development of a suitable language for image processing. We call it EZIP, or EasyImage Processing.2 BackgroundImage processing operations like smoothing and edge detection, and many more are very widely usedin areas like Computer Vision. These operations are generally performed on images represented asmatrices. We need a language using which can perform matrix operations like addition, subtraction,multiplication and convolution simply and easily.The inspiration for our language stems from our own experiences with writing computer visionalgorithms in C and C++. We noticed that while implementing simple image processing algorithmslike blurring, edge detection, smoothing etc. most of our time was spent in writing the code ratherthan developing effective algorithms. In C and C++, the traditional implementation language forComputer Vision algorithms, the user is left to handle matrix operations using loops and conditionalstatements that make the code convoluted and difficult to read and understand.The goal of our language is to provide the user with easy matrix manipulation techniques requiredfor image processing. Generally image processing algorithms have an image and a kernel that workson that image. Our language is specifically designed to elegantly handle various kernel operations onthe image and deliver an output image in a user-friendly manner. The user no longer has to worryabout numerous unintuitive and error prone constructs, he only has to think about the operations hewants to perform on the image.13 Related Works3.1 MatlabMatlab is a high-level language and interactive environment that enables the user to program compli-cated algorithms faster than with traditional programming languages such as C, C++, and Fortran.The image processing add on provides powerful libraries for image processing. It has native supportfor the class of Computer Vision algorithms that involve kernel convolutions and is also adeptly suitedto performing global image operations such as histogram equalization and contrast enhancement.However, Matlab is targeted at users working in the commercial or research fields who have plenty offunds to afford it. The cost of an individual license of Matlab exceeds the budget for many individualusers. For an average individual looking to perform some basic image processing, Matlab is not afeasible option. Our language provides a suitable alternative for such users. At no cost, the usercan perform basic image processing using few lines of code. The user need not even have muchprogramming background since the syntax is intuitive.[1]3.2 C/C++It is well established that C and C++ are extremely powerful and flexible languages for performingcomputationally intensive numerical operations. An experienced programmer can use C/C++ toimplement complex image processing algorithms from first principles. However, implementation isnot such a trivial matter for people with lesser programming skills. EZIP, although not as flexibleas C/C++, is better suited to developers who need to quickly program Computer Vision algorithmswithout having to implement low level, elementary functions.4 GoalThe goal of our language is to provide a simpler, more programmer-friendly way of doing imageprocessing. We will make image processing accessible to the masses.4.1 Ease-of-Use and FreedomThe most common use cases will be de-noising, edge detection, and image enhancement. Most of thesecomplex operations will be accomplishable with only a few lines of code in our language. EZIP is amodular language that is consistent with standard methods and naming of matrix operations. It hasa clear and concise way of defining matrix operations relevant to image processing and a user familiarwith image processing can look at the code and understand the function of the program. Commondata structures, such as kernels, will also be simple to create and straight forward to use.Our language and implementation will be free to use and modifiable by anyone under an opensource license, such as the BSD or MIT license. The combination of power and freedom will ensurethat our language offers an attractive alternative to existing methods. EZIP is also platform agnostic.It is a translated language targeted to Java, which runs on the vast majority of platforms availabletoday.25 Main Language FeaturesIn this section we describe some of main features in our language.5.1 Image OperationsBasic image operations should be supported, e.g., convolution, addition, subtraction, division, multi-plication, resizing.5.2 KernelsOur language will include a set of built-in kernels that are commonly used in image processing, suchas the gaussian kernel, typically used for blurring images, and the Mexican hat kernel, typically usedfor finding edges. The user will also be able to define custom kernels.5.3 Program Flow ControlThe main statements of program flow control should be implemented, including if-else, while, andbreak.5.4 Internal FunctionsThe minimum set of internal functions includes print, view, copy, load, and save. Print will printASCII representations of objects to the command line. View will show a graphical representationof the image passed into it. Copy, load, and save will handle making copies of images in betweenvariables, loading images from, and saving images to, the disk.3Figure 1: An example image blurred multiple times.[2]5.5 Code SampleThis sample code implements a blurring function similar to the one illustrated in Figure 1. The codegives an example of how we will comment code, make image declarations, make kernel declaration,and perform convolution. The syntax may


View Full Document

Columbia COMS W4115 - EZIP - Easy Image Processing

Documents in this Course
YOLT

YOLT

13 pages

Lattakia

Lattakia

15 pages

EasyQL

EasyQL

14 pages

Photogram

Photogram

163 pages

Espresso

Espresso

27 pages

NumLang

NumLang

6 pages

EMPATH

EMPATH

14 pages

La Mesa

La Mesa

9 pages

JTemplate

JTemplate

238 pages

MATVEC

MATVEC

4 pages

TONEDEF

TONEDEF

14 pages

SASSi

SASSi

16 pages

JTemplate

JTemplate

39 pages

BATS

BATS

10 pages

Synapse

Synapse

11 pages

c.def

c.def

116 pages

TweaXML

TweaXML

108 pages

Load more
Download EZIP - Easy Image Processing
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view EZIP - Easy Image Processing and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view EZIP - Easy Image Processing 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?