OpenGL - Halftoning and Image Processing

*** Please see attachment for complete description. ***

The object of this TME is to help you to understand colour from the perspective of computer hardware and software. The vehicle for learning this will be the construction of a *halftone generator*, a computer program that reads in an RGB specificiation of an image, and transforms the image into several forms, including "true" grayscale, black and white and colour clustered and dispersed dot halftones.

Program 9 ([url removed, login to view]) contains skeletal code that uses of OpenGL's implementation of pixmaps. However, that code was little simpler because the dimensions of the pixmap could be declared at compile time and ordinary C++ array subscripting could be used. As well, the dimensions of the pixmap conveniently fit all the hardware and software constraints. So that the program can process an image of any dimension, it is necessary to get into some hardware/software details, namely that OpenGL pixmaps are aligned on 4 byte boundaries. This will be explained in more detail later.

A BMP file called lis provided for this assignment. This is not a tiny bitmap and you should consider using some program to generate some simple images.

Your first task will be to compile a BMP 'viewer'. Most of the necessary code is provided. However, there are three issues to take careful note of, because they will affect all of the rest of the code you are required to write. The first is that OpenGL stores its pixmaps "upside down". Although the image was chosen to be pleasant to look at upside down, this is only for viewing comfort. Of course, OpenGL doesn't "know" whether the image is upside down or not, and you can write code as is convenient.

The second issue is that the image is pointed to by a pointer of type GLubyte. This is required by glDrawPixels. Since the dimensions of the image are not known until runtime, you have to do your own subscript arithmetic when processing the image. Generally, if an array ARR is of width W and height H, the contents of location normally specified by ARR[i][j] is given ...

*** Please see attachment for complete description. ***

## Deliverables

Coder is to not disclose any information regarding the details of this project to any outside parties.

1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.

2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):

a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.

b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.

3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).

## Platform

Required to work on: Visual C++ 6.0

Windows XP.

Skills: .NET, 3D Modelling, C Programming, Engineering, MySQL, PHP, Software Architecture, Software Testing, Visual Arts, Visual Basic

See more: web programming course, vehicle hire software, vehicle for hire, stores that hire at 16, stores that hire at 15, runtime computer, programming learning sites, programming and computer software, pointer programming, opengl programming, opengl help, opengl *, object programming web software, look and write a or b, learning to write code, learning programming on your own, learning programming, learning of php programming, learning c# web programming, learning computer code

About the Employer:
( 29 reviews ) Canada

Project ID: #3297888