www.pudn.com > Image_segment.rar > ImageMagick.h


//Copyright (c) 2004-2005, Baris Sumengen 
//All rights reserved. 
// 
// CIMPL Matrix Performance Library 
// 
//Redistribution and use in source and binary 
//forms, with or without modification, are 
//permitted provided that the following 
//conditions are met: 
// 
//    * No commercial use is allowed.  
//    This software can only be used 
//    for non-commercial purposes. This  
//    distribution is mainly intended for 
//    academic research and teaching. 
//    * Redistributions of source code must 
//    retain the above copyright notice, this 
//    list of conditions and the following 
//    disclaimer. 
//    * Redistributions of binary form must 
//    mention the above copyright notice, this 
//    list of conditions and the following 
//    disclaimer in a clearly visible part  
//    in associated product manual,  
//    readme, and web site of the redistributed  
//    software. 
//    * Redistributions in binary form must 
//    reproduce the above copyright notice, 
//    this list of conditions and the 
//    following disclaimer in the 
//    documentation and/or other materials 
//    provided with the distribution. 
//    * The name of Baris Sumengen may not be 
//    used to endorse or promote products 
//    derived from this software without 
//    specific prior written permission. 
// 
//THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT 
//HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
//EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT 
//NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
//MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
//PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
//CONTRIBUTORS BE LIABLE FOR ANY 
//DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 
//EXEMPLARY, OR CONSEQUENTIAL DAMAGES 
//(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT 
//OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
//DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
//HOWEVER CAUSED AND ON ANY THEORY OF 
//LIABILITY, WHETHER IN CONTRACT, STRICT 
//LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 
//OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 
//OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
//POSSIBILITY OF SUCH DAMAGE. 
 
 
 
#pragma once 
#ifndef IMAGEMAGICK_H 
#define IMAGEMAGICK_H 
 
#include  
 
#include "cimpl.h" 
using namespace CIMPL; 

#include "wand/magick_wand.h"
#include  
#include   
 
#ifndef ThrowWandException 
 
#define ThrowWandException(wand) \ 
{ \ 
char \ 
*description; \ 
\ 
ExceptionType \ 
severity; \ 
\ 
description=MagickGetException(wand,&severity); \ 
(void) fprintf(stderr,"%s %s %ld %s\n",GetMagickModule(),description); \ 
description=(char *) MagickRelinquishMemory(description); \ 
exit(-1); \ 
} 
 
#endif 
 
 
 
 
 
namespace ImageMagick 
{ 
 
 
 
	enum CimplImageMap 
	{ 
		I, 
		RGB, 
		RGBA 
	}; 
 
	struct CimplImageInfo 
	{ 
		int Width; //Pixels 
		int Height; //Pixels 
		long long Size; //Bytes 
		string Format; 
	}; 
	 
	struct CimplColor 
	{ 
		unsigned char Intensity; 
		unsigned char Red; 
		unsigned char Green; 
		unsigned char Blue; 
		unsigned char Alpha; 
		CimplColor() 
		{ 
			Red = 255; 
			Green = 255; 
			Blue = 255; 
			Alpha = 255; 
			Intensity = 255; 
		} 
	}; 
	 
	 
	//enum NoiseType
	//{
	//	UndefinedNoise,
	//	UniformNoise,
	//	GaussianNoise,
	//	MultiplicativeGaussianNoise,
	//	ImpulseNoise,
	//	LaplacianNoise,
	//	PoissonNoise
	//};
 
 
 
	// Query... - Later. 
	// Annotate() ??? 
 
	int GetImageColors(MatrixList &Image); 
	int GetImageColors(Matrix &Image); 
	CimplImageInfo PingImage(string filename); 
	 
	MatrixList AdaptiveThresholdImage(MatrixList &Image, int width, int height, int offset); 
	Matrix AdaptiveThresholdImage(Matrix &Image, int width, int height, int offset); 
 
	MatrixList AddNoiseImage(MatrixList &Image, NoiseType noise); 
	Matrix AddNoiseImage(Matrix &Image, NoiseType noise); 
	 
	//AffineTransformImage(); 
	 
	MatrixList BlackThresholdImage(MatrixList &Image, CimplColor pixel); 
	Matrix BlackThresholdImage(Matrix &Image, CimplColor pixel); 
 
	MatrixList BlurImage(MatrixList &Image, double supportRadius, double sigma); 
	Matrix BlurImage(Matrix &Image, double supportRadius, double sigma); 
	 
	MatrixList BorderImage(MatrixList &Image, CimplColor borderColor, int borderWidth, int borderHeight); 
	Matrix BorderImage(Matrix &Image, CimplColor borderColor, int borderWidth, int borderHeight); 
	 
	MatrixList CharcoalImage(MatrixList &Image, double supportRadius, double sigma); 
	Matrix CharcoalImage(Matrix &Image, double supportRadius, double sigma); 
	 
	 
	MatrixList ChopImage(MatrixList &Image, int offsetX, int offsetY, int chopWidth, int chopHeight); 
	Matrix ChopImage(Matrix &Image, int offsetX, int offsetY, int chopWidth, int chopHeight); 
	 
	MatrixList CropImage(MatrixList &Image, int offsetX, int offsetY, int cropWidth, int cropHeight); 
	Matrix CropImage(Matrix &Image, int offsetX, int offsetY, int cropWidth, int cropHeight); 
 
 
	//ColorFloodFillImage(); 
	 
 
	//DescribeImage(); 
	//ColorizeImage(); 
	//ContrastImage(); 
	//ConvolveImage(); 
	//DespeckleImage(); 
	//DrawImage(); 
	//EdgeImage(); 
	//EmbossImage(); 
	//EnhanceImage(); 
	//EqualizeImage(); 
	//GaussianBlurImage(); 
	//FrameImage(); 
	//ImplodeImage(); 
	//GammaImage(); 
	//LevelImage(); 
	 
	MatrixList MagnifyImage(MatrixList &Image); 
	Matrix MagnifyImage(Matrix &Image); 
	 
	//MedianFilterImage(); 
	//MinifyImage(); 
	//MontageImage(); 
	//Modulateimage(); 
	//MotionBlurImage(); 
	//NegateImage(); 
	//NormalizeImage(); 
	//PreviewImage(); 
	//OilPaintImage(); 
	//PosterizeImage(); 
	//RaiseImage(); 
	//QuantizeImage(); 
	//ReduceNoiseImage(); 
	//ResampleImage(); 
	//ResizeImage(); 
	//RollImage(); 
	//RotateImage(); 
	//SampleImage(); 
	//ScaleImage(); 
	//SharpenImage(); 
	//ShaveImage(); 
	//ShearImage(); 
	//SolarizeImage(); 
	//SpreadImage(); 
	//SpliceImage(); 
	//StereoImage(); 
	//SteganoImage(); 
	//SwirlImage(); 
	//TextureImage(); 
	//TintImage(); 
	//ThresholdImage(); 
	//TrimImage(); 
	//UnsharpMaskImage(); 
	//WaveImage(); 
	//WhiteThresholdImage(); 
 
 
 
	//CompareImages(); 
	//MorphImages(); 
 
 
 
 
	// Create an object oriented interface to ImageMagick. 
 
 
 
 
}; 
 
 
 
#endif