c++ image processing tutorials

I want to learn image processing in C++, but I don’t want to use any 3rd party library for image manipulation. Use of library for displaying the image(s) is okay, but all manipulations are to be done manually.

Please point me to some good tutorials. I’m a beginner in this field, so I also need to know how to display an image.

You’re going to have to read the JPG specification, understand the theory behind imagine manipulations (unless you’re doing simple things like cropping), and then apply those manipulations to the specific format of JPG. And then you’ll need to repeat for PNG, GIF, etc. If you like, converting pdf to jpg is a good choice, 3rd parth library using in C#.NET will a good help, using this c# pdf to jpg converter, you can change the pdf page to compressd jpg image format.

Seems you lack basic knowledge of Digital Image Processing, I recommand to you this book. Digital Image Processing

For basic operation using OpenCV(which I am familiar with), here is an example:

/*
function:image reverse
*/
#include “stdafx.h”
#include
#include
#include #include
#include
int main(int argc, char *argv[])
{
IplImage* img = 0;
int height,width,step,channels;
uchar *data;
int i,j,k;
if(argc<2)
{
printf(“Usage: main /n/7”);
exit(0);
}
// Load image
img=cvLoadImage(argv[1],-1);
if(!img)
{
printf(“Could not load image file: %s\n”,argv[1]);
exit(0);
}
// acquire image info
height = img->height;
width = img->width;
step = img->widthStep;
channels = img->nChannels;
data = (uchar *)img->imageData;
printf(“Processing a %dx%d image with %d channels/n”,height,width,channels);
// create display window
cvNamedWindow(“mainWin”, CV_WINDOW_AUTOSIZE);
cvMoveWindow(“mainWin”, 100, 100);
// reverse image
for(i=0;i<height;i++)
for(j=0;j<width;j++)
for(k=0;k<channels;k++)
data[i*step+j*channels+k]=255-data[i*step+j*channels+k];
// display reversed image
cvShowImage(“mainWin”, img );
cvWaitKey(0);
cvReleaseImage(&img );
printf(“height=%d width=%d step=%d channels=%d”,height,width,step,channels);
return 0;
}

I don’t want to go in details of JPEG or other containers. What I want to do is: load up the image (use of 3rd party library will be better for this IMO), then apply manual modifications to pixel data (the RGB values) to perform various manipulations.

I need to save a large image on disk – so large it creates outofmemory errors (like 10000×10000 px). It’s suppose to be a tiling and I have the tile stored in memory as a BufferedImage. I read something about TiledImage class being able to work only with part of image, the rest being stored on disk

Leave a Reply

Your email address will not be published. Required fields are marked *