04-12-2012, 03:52 PM
IMAGE PROCESSING SUITE
IMAGE PROCESSING SUITE123.doc (Size: 2.85 MB / Downloads: 32)
ABSTRACT
Image processing suite is an image editor that offers all the standard editing and paint tools, as well as image layers and several other features that are usually not found in free image editors. The program also includes screen capture tools, an image browser, and as well as photo frames, channel adjustments and more. The product is part of the image processing software family such as Adobe Photoshop, Corel Draw and likewise.
The project is an effort to build a Photoshop on a smaller case, with an easy to use user interface and an easy to understand user manual guideline to help the user how to play with image pixels and colors and other parameters The captured image can be loaded into the internal image editor for further editing, saved as image file (JPG, PNG, GIF, BMP) or automatically uploaded to your FTP server (upload the image and copy the URL to the clipboard).
INTRODUCTION
Purpose
The purpose of this SRS document is to provide a detailed overview of our software product, its parameters and goals. This document describes the project's target audience and its user interface, hardware and software requirements.
Objectives
• To explore and implement a basic image-processing program to use with the aim of providing the user with a basic knowledge of the fundamental techniques of image filtering.
• To provide the user with an easy to user graphical user interface (GUI) with which the user can filter images using ready loaded filters or custom filters created by the user.
• To gain experience in the Java programming language.
• To create the project as an applet for use on the web, so users can log on to my home page and use this program.
Image processing is a very highly processor intensive activity. There are thousands of calculations to be completed when filtering an image with a simple 3x3-convolution matrix. There are many commonly available image-processing libraries which implement many of the functions within this project, such as DirectX, WinG and Intel’s own Image Processing Library (IPL) which use hardware functions on the Intel CPUs.
Standard Convolution Algorithm
The basic operation of a convolution kernel filtering algorithm is based around a kernel or NxN matrix where N is an odd number. The matrix represents the filter coefficients, which will be applied to the image. The matrix is shifted over the image a pixel at a time and the middle value of the matrix is calculated during each iteration. This involves getting the pixel value in the centre of the matrix as well as, in the case of a 3x3 kernel, the values of its eight neighboring pixels. Each pixel is multiplied by its value or weight in the kernel, and then these values are added together. This result is divided by some divisor and finally a biasing factor is added. The final result becomes the new value of the centre pixel, and the matrix slides over to the next pixel and the process is repeated.
Assumptions and Dependencies
This been a software development project using new technologies a sizeable proportion of time was spent researching strategies for implementation. Therefore the project was developed using Java and UML. Time spent in analysis and development of a logical model can highlight many pitfalls prior to coding and therefore will reward us with an easily maintainable modularized application which lends itself to upgrades more easily in the future. UML gives these benefits to application development and therefore this was one of the main reasons it was chosen. UML gives us object models of how the application should work before coding takes place hence remove design problems before we start coding.
Image Filtering
Signals that are transferred over almost all forms of communication can be open to noise; an image may be subject to this noise and interference from several sources. These noise effects can be minimized by statistical filtering techniques or by application of spatial adhoc processing techniques.
Image noise arising from noisy sensors or channel transmission errors usually appears as discrete isolated pixel variations that are not spatially correlated. Pixels that are in error often appear markedly different from their neighbors. Many noise-cleaning algorithms make use of this fact. By examining a pixel and checking to see if the brightness of this pixel is greater then the average brightness of its immediate neighbors by some threshold level, we can see if this pixel is valid or if it may be noise. If the pixel is noise then we replace this pixel with the average of the neighbors. Noisy images have a higher spatial frequency spectrum than normal images. Hence a simple low-pass filter can smoothen out the noise.
SOFTWARE DESIGN METHODOLOGIES
Before starting to code the project, a decision was made to use OOD (Object Oriented Design) to design the main points of the project, as the language that was to be used was an Object-Oriented language.
Object-Oriented Design (OOD) practice in software engineering is essential for keeping down the cost of the ever-increasing amount of software being developed now and that have to be maintained in the future
The project was designed by using different parts of OMT (Object Modeling Technique) methodology. OMT is a methodology used by many software engineers to design interaction between different parts of a project before starting the work on creating the project. Object Oriented Analysis (OOA) is concerned with generating a problem statement and investigating what needs to be done, while Object Oriented Modeling (OOM) addresses the needs of the Analysis model and is based on three different views of the system, which is the object, dynamic and functional models.
Many problems can be avoided by using good design practices before the software development/coding stage.