?
Solved

Image Processing

Posted on 2005-03-27
21
Medium Priority
?
1,628 Views
Last Modified: 2013-11-19
I am planning to learn image processing in c++ to do my project. i want to know if it is good idea to learn it in c++. Any experts in image processing here?
May i know where can i get resources to do this topic? any good books?

i just want to know anything about image processing as i know nothing about it.

Experts who has experience in Image Processing are welcomed to post here.
Thanks in advance!
0
Comment
Question by:beryl666
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 8
  • 5
  • 3
  • +4
21 Comments
 
LVL 55

Assisted Solution

by:Jaime Olivares
Jaime Olivares earned 200 total points
ID: 13641141
Have a look to  http://www.codeproject.com/bitmap/cximage.asp to a good stating point.
0
 
LVL 5

Author Comment

by:beryl666
ID: 13649182
i want to get more comments about image processing. sso i increase the points until 500. I hope that i can get to know morea bout this.

Thanks.
0
 

Expert Comment

by:skumar_rao
ID: 13650181
start your learning curve from BMP then select a Image compression stand like JPEG for DCT or JPEG2000 for DWT for further advance learing .

You can find the sample code for image read write or any operation like rotate , flip etc from the Image libraries like Freeimage from the net.
0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
LVL 5

Author Comment

by:beryl666
ID: 13651401
to skumar rao and jaime plivares:
do both of you have any experience about it?
Can tell me more?
how should i learn it? and how much time do i need to learn?
i am planning to make this as my assignment title which will last for a year.

Any suggestions is welcomed!
0
 
LVL 38

Assisted Solution

by:lherrou
lherrou earned 200 total points
ID: 13651627
I'm not a C++ programmer, so there isn't a lot I can add (followed the cross-link from Graphics General). However, take a look at the Cool Image library at http://cimg.sourceforge.net/ for some additional ideas. If you get good at it, maybe even contribute!

If this is an exercise in programming, then that's a good way to go. If you are looking for an already existant set of functions, I would look at Image Magick. This is a great, stand-alone, open-source, command-line image processing program. It also has a C++ API (http://studio.imagemagick.org/Magick++/), which is likely to be easier, faster, and more effective than the other route.

Good luck!
0
 

Expert Comment

by:skumar_rao
ID: 13651756
i am working in the image processing domain around 2years till now....

the work in this field can very prolonged or it can be very quick depending if want to use the ready to use library or you want to write your own code for doing the same work...

0
 
LVL 6

Expert Comment

by:guitaristx
ID: 13652339
I've done professional programming in advanced image processing algorithms.  What, in particular, are you interested in doing?
0
 
LVL 6

Expert Comment

by:guitaristx
ID: 13652364
To expound on my previous post, there are, in general, three areas in image processing:
1. Compression/decompression - turning binary data into a viewable image (or vice versa)
2. Image manipulation - crop, rotate, color shift, blur, sharpen, change contrast, brigten/darken, remap, etc.
3. Data extraction - OCR, "intelligent" crop, forms recognition

What, area(s) are you interested in?
0
 
LVL 5

Author Comment

by:beryl666
ID: 13652446
to skumar_rao :
where can i find the ready to use library and its documentation? i don't think i have th capability to develope my own code.

to guitaristx:
i want to get image information from video and interpret it into useful data. what category should i put it?

Thanks for response.
0
 
LVL 5

Author Comment

by:beryl666
ID: 13652464
another Q in my mind, image processing can be in what languages? it can be any languages?
0
 

Expert Comment

by:skumar_rao
ID: 13652646
From the last post, i found that you want to work with the Video (that is moving pitcures). One of the best Video processing library is "LIBAVCODEC" that comes with ffmpeg-0.4.9-pre1. You can download it from "http://ffmpeg.sourceforge.net" another is from "MP4IP" can be downloaded from the "http://mpeg4ip.sourceforge.net/".

As in video processing the speed is requried but as the processing overhead on the processer is very high so we requre a laguage that is close to the processor and provide low level file/memory access functions. I think that is why both of above libararies are in C/C++ and some of the functions are written in Assembly.
0
 
LVL 5

Author Comment

by:beryl666
ID: 13653524
thanks skumar_rao.  i will check it out.
0
 
LVL 12

Assisted Solution

by:stefan73
stefan73 earned 80 total points
ID: 13653872
Also have a look at this:
http://www.geocities.com/~charlie_x/gfxlinks.htm

My favourite is TIFFlib: ftp://ftp.sgi.com/graphics/tiff

TIFF is a quite nice format for all sorts of pixel graphics.
0
 
LVL 5

Author Comment

by:beryl666
ID: 13654669
to learn Image Processing, where should i start?
can anyone tell me step by step that i need to learn?

for example:
1. need to know how image file store in hard disk.
2. need to know how the image file transfer from one device to another device
3. .....
4. ....
0
 
LVL 6

Accepted Solution

by:
guitaristx earned 720 total points
ID: 13655393
> to guitaristx:
 >i want to get image information from video and interpret it into useful data. what category should i put it?
You're talking about "video processing," of which "image processing" is a subset, so your question directed at me is based upon false pretenses, I thought we were talking about image processing, not video processing.

However, regarding:
> 1. need to know how image file store in hard disk.

You'll need to learn about the file format of the particular file type that you're dealing with, e.g. TIFF, JPEG, PNG, BMP, GIF, whatever.  Every format is different.  If you're afraid of dealing with byte-ordering, bit-ordering, or extracting certain bits from data, either:
1. get over it
2. run away screaming from this particular area of image processing.

> 2. need to know how the image file transfer from one device to another device
It all depends on the device.  For example, most TWAIN stuff, IIRC, deals with DIBs (that is, Device Independent Bitmaps), so you'll have to learn about dealing with DIBs if you want to do TWAIN stuff.

For many areas of image processing, much of the task deals with mathematics.  For instance, JPEG data is encoded using a Discrete Cosine Transform (DCT), so to write a codec for JPEG images would require a strong grasp of mathematics.  Image processing also deals with approaching a problem using a variety of methods.  For instance, most video hardware displays image pixels as an additive blend of their red, green, and blue (RGB) components.  However, many useful operations on images can be done by transforming an image into its hue, saturation, and volume (HSV) components.  Have you ever seen a black & white photograph that's been "colorized" in certain places, usually with very vivid colors?(see the trailers for the movie "Sin City" for some video examples)
This can be done easily by starting with a color image.  Select the area of the image that you wish to keep "colorized."  Invert the selection, such that your selection now refers to all of the area that you wish to be black & white.  Now, set the saturation for that area of the image to zero.  Voila!  A "colorized" black & white image.

The important thing with image processing (or any broad topic field) is to understand, what, specifically, you want to do, and then begin identifying specific concepts that apply to your problem.  For instance, do you just want to decode an image file so you can display it on your screen?  There are tons of free libraries available for you to do that - probably some that you could obtain the source code from (e.g. the GIMP).  The more specific you are with your questions, the more specific (and helpful) your answers will be.
0
 

Assisted Solution

by:skumar_rao
skumar_rao earned 400 total points
ID: 13658927
I also agree with  guitaristx that you have to very good in mathmatics and lowlevel memory / file access......

But donot worry .... For a Project with a very small time duration like your. You can use the Freely available libaries from the net to decode or encode the video to and from a given source, with out knowing the specific image processing standards.

For Example if you want to decode a .MPG (with MPEG2 video encoded )file to a .AVI file (with MPEG4 videoencoded) then you can use the following libraries for the same.

1. Decode the .MPG file using the "LIBAVCODE " to raw YUV or RGB frames.
2. Encode the RAW YUV/RGB frames to MPEG4 using the XVID Encoder library.
3. Then use the AVIDECAP class in MP4IP to put the encoded .mp4 file in to the .AVI file format.

In this way you just must know.
1. File operation (Read/Write) functions.
2. How to use the Libraries from the 3rd party providers.
3. Basic Understanding of the File formats like .avi , .mpeg, .rm, etc....
4. Atleast BMP file format and how to display a BMP on screen

Any comments are well come


0
 

Expert Comment

by:skumar_rao
ID: 13668676
Computer Vision (CV) is one of the growing fields in Image processing but it is not image processing.
0
 
LVL 5

Author Comment

by:beryl666
ID: 13669881
may i know what is computer vison? it is a company? there are so many things up there, now i still don't have time to try it. i will find those library and go to the web when i am free.

i will leave it to get more input. Thanks all for participating. and please welcome to put more comments here.
0
 
LVL 9

Assisted Solution

by:jhshukla
jhshukla earned 400 total points
ID: 13676337
>> Computer Vision (CV) is one of the growing fields in Image processing but it is not image processing.
True. but I provided the link because it is a form of information extraction.

'computer vision' is achieved by programming computers so that they can recognize and identify shapes like humans. the foto can be taken from any angle and orientation, but by looking at the surrondings the computer will determine the orientation of the camera that took the picture, and identify object(s). The computer must be trained first by making it recognise a shape (i.e. an interesting feature) and then telling it what object it is. Definition of interesting feature depends on the application. Once the computer is trained (say by seeing 100 samples), it can then look at an image, identify the object and tell you that it found such and such object at such and such co-ordinates. Most widely used form of CV is, i believe, optical character recognition or recognizing text from scanned documents. Quite a bit of research is going on for face recognition (under different lighting conditions), automated vehicles and information extraction from video sequences. Very intersting area. Last semester I saw a project that recognized an action being performed in a video sequence. Simply amazing.
0
 
LVL 5

Author Comment

by:beryl666
ID: 13683377
Thanks. i am now busy for my exam. so i will ask more question about image, sound, vidoe processing after my exam.

I give everyone points. if i missed anyone, please let me know.

:-)
0

Featured Post

Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
Container Orchestration platforms empower organizations to scale their apps at an exceptional rate. This is the reason numerous innovation-driven companies are moving apps to an appropriated datacenter wide platform that empowers them to scale at a …
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to clear a vector as well as how to detect empty vectors in C++.
Suggested Courses
Course of the Month10 days, 19 hours left to enroll

770 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question