#include <ipl98/cpp/image.h>
#include <ipl98/cpp/algorithms/mask_operation.h>
#include <ipl98/cpp/algorithms/morphology.h>
using namespace ipl;

class Ip
{
public:
/**
*   This is a method for computing the difference between two CImages.
*
*   @param  One     The reference CImage    
*   @param  Two     The alarm CImage
*   @return A CImage which is the differce image
*
*/
ipl::CImage ComputeDiff(CImage* One, CImage* Two);
/**
*   Method that performs a intensity correction of the images.  
*
*   @param  One     The reference CImage    
*   @param  Two     The alarm CImage
*/
void HistoEqImages(CImage* One, CImage* Two);
/**
*   Method for finding several histogram-related variables. 
*
*   @param img1 The reference CImage
*   @param img2 The alarm CImage
*   @param minP The minimum intensity found in the alarm CImage
*   @param maxP The maximum intensity found in the alarm CImage
*   @param avgP1 The average intensity found in the reference CImage
*   @param avgP2 The average intensity found in the alarm CImage
*   @param changeP The change in average intensity between the two CImages 
*/
void FindingHistoVar(CImage* img1, CImage* img2, int* minP, int* maxP, double* avgP1, double* avgP2, double* changeP);
/**
*   Method that finsd information about the objects found in the difference image.  
*
*   @param Img  The difference CImage
*   @param nrObjects    The number of objects found in the image
*   @param largestObject The size of the largest object found in the difference CImage
*   @param avgObject The average size of all objects found in the difference CImage
*/
void CountNrOfObjects(CImage* Img, long* nrObjects, long* largestObject, double* avgObject);
/**
*   Method that converts a RGB-CImage to grayscale. 
*
*   @param One The CImage that is going to be converted
*   @param sizex The x-size of the CImage
*   @param sizey The y-size of the CImage
*   @return The converted CImage in grayscale
*/
ipl::CImage ConvertRGBtoGray(CImage* One, int* sizex, int* sizey);
/**
*   Method that controls the flow in the image processing module.   
*
*/  
void InitializeStart();
    //void main();


};