www.pudn.com > 医学图像处理示例源代码.rar > ImageProcess.h


 
 
// 图像区域的各种属性 
struct AreaAttrib  
{ 
	double Centerx, Centery; 
	RECT   Outline; 
	double Area; 
}; 
// 灰度图像处理 直接操作数据指针的函数 (与CImage 类无关) 
 
// 图像卷积 (一个模板) 
void Image_Convolution_33 (BYTE* InputImage , int ImgW , int ImgH , 
						   int *Template); 
// 图像卷积 (两个模板) 
void Image_Convolution_33 (BYTE* InputImage , int ImgW , int ImgH, 
						   int *Template1, int *Template2); 
// sobel 边缘提取  
void Image_Sobel             (BYTE* InputImage , int ImgW , int ImgH); 
// sobel 边缘方向提取 
void Image_EdgeOrention_Sobel(BYTE* InputImage , int ImgW , int ImgH); 
// roberts 边缘提取 
void Image_Roberts (BYTE* InputImage , int ImgW , int ImgH); 
// prewitt 边缘提取 
void Image_Prewitt (BYTE* InputImage , int ImgW , int ImgH); 
// laplacian 边缘提取 
void Image_Laplacian (BYTE* InputImage , int ImgW , int ImgH); 
// wallis 边缘提取 
void Image_Wallis    (BYTE* InputImage , int ImgW , int ImgH,  
					  double Ia, int Imean, int Isigma, int Iam); 
// 均值滤波 
void Image_MeanFilter       (BYTE* InputImage, int ImgW, int ImgH ,int Masksize); 
// 递归中值滤波 
void Image_RMiddleFilter    (BYTE* InputImage, int ImgW, int ImgH ,int Masksize); 
// 非递归中值滤波 
void Image_NonRMiddleFilter (BYTE* InputImage, int ImgW, int ImgH ,int Masksize); 
// 快速中值滤波 
void Image_FastMedian       (BYTE* InputImage, int ImgW, int ImgH ,int Masksize); 
// 高斯滤波 
void Image_Gauss_Blur       (BYTE *InputImage, int ImgW, int ImgH, double Sigma); 
// 高斯增强 
void Image_Gauss_Sharpen    (BYTE *InputImage, int ImgW, int ImgH, double Sigma); 
// 图像的阈值二值化 
void Image_AutoBinary						(BYTE* InputImage, int ImgSize); 
void Image_AutoBinary_MaxExpection			(BYTE* InputImage, int ImgSize); 
void Image_AutoBinary_Qtsu					(BYTE* InputImage, int ImgSize); 
void Image_AutoBinary_EntropicCorrelation   (BYTE* InputImage, int ImgSize); 
void Image_ManualBinary		                (BYTE* InputImage, int ImgSize, BYTE Threshold, int Type); 
// 图像的线性增强 
void Image_LinearScalar     (BYTE *InputImage, int ImageSize ,int a, int b); 
void Image_AutoLevels		(BYTE *InputImage, int ImageSize, int a= 0, int b= 255); 
// 图像的直方图增强 
void Image_Histogramenhance (BYTE *InputImage, int ImageSize); 
// SUSAN滤波 
void Image_SUSAN_Filter      (BYTE* InputImage, int ImgW, int ImgH, int bt, double dt); 
void Image_SUSAN_Principle   (BYTE* InputImage, int ImgW , int ImgH ,int bt); 
void Image_SUSAN_thin        (int *r, BYTE *mid, int x_size, int y_size); 
void Image_SUSAN_Edge_Normal (BYTE* InputImage, int ImgW , int ImgH ,int bt); 
// 旋转不变矩算子提取边缘 
void Image_Edge_RotateInvariantOperator         (BYTE *InputImage, int ImgW, int ImgH, int Masksize); 
// 旋转不变矩算子提取边缘方向 
void Image_EdgeOrention_RotateInvariantOperator (BYTE *InputImage, int ImgW, int ImgH, int Masksize); 
// marrhildreth 算子提取边缘 
void Image_Edge_MarrHildreth (BYTE *InputImage, int ImgW, int ImgH, double Sigma); 
// 灰度图像腐蚀 
BOOL Image_Gray_Erosion      (BYTE *image, int ImgW, int ImgH, BYTE *Mask, int MaskSize); 
// 灰度图像膨胀 
BOOL Image_Gray_Dilation     (BYTE *image, int ImgW, int ImgH, BYTE *Mask, int MaskSize); 
 
//好玩的显示函数 
void Image_Mosaic_Show  (BYTE* InputImage, int ImgW, int ImgH ,int Masksize); 
void Image_Pyramid_Show (BYTE *InputImage, int ImgW, int ImgH); 
 
//二值图像处理函数 
void Image_Binary_Thin_Hilditch (BYTE* InputImage , int ImgW , int ImgH ,BYTE TargetGray); 
void Image_Binary_Thin_ZhangSuen(BYTE* InputImage , int ImgW , int ImgH ,BYTE TargetGray); 
void Image_Binary_Thin_Somebody (BYTE* InputImage , int ImgW , int ImgH ,BYTE TargetGray); 
 
BOOL Image_Binary_HoughTransform(BYTE* InputImage , int ImgW , int ImgH ,BYTE TargetGray); 
BOOL Image_Binary_RadonTransform(BYTE* InputImage , int ImgW , int ImgH ,BYTE TargetGray); 
 
BOOL Image_Binary_Dilation(BYTE *image, int ImgW, int ImgH, BYTE *Mask, int MaskSize, BYTE TargetGray); 
BOOL Image_Binary_Erosion (BYTE *image, int ImgW, int ImgH, BYTE *Mask, int MaskSize, BYTE TargetGray); 
 
void Image_Binary_Get_Area_Attrib(BYTE *image, int imgW, int imgH, struct AreaAttrib *attrib, int PtNum); 
BOOL Image_Binary_grass(BYTE **image, int imgW , int imgH, BYTE TargetGray,  
						int Startx, int Starty, int AreaLabel, int &PixelNum); 
int  Image_Binary_grass_label(BYTE *image , int imgW , int imgH, BYTE TargetGray); 
 
BOOL Image_Binary_SimpleEdge(BYTE *InputImage, int ImgW, int ImgH, BYTE TargetGray); 
 
void Image_Improve_Radon(BYTE *InputImage, int ImgW, int ImgH, int Masksize); 
// 与CImage类有关的函数 
float   Image_Edge_Canny_EstimateNoise(FloatImage &mag, float amax, float q); 
 
void    Image_Edge_Canny_NonMaximalSuppress  
					  (CImage     &dest,  
					   FloatImage &xgrad,  
					   FloatImage &ygrad, 
					   FloatImage &mag, 
					   float       amax); 
void    Image_Edge_Canny(CImage		&InImage, 
						 float		sigma, 
						 float		&noise, 
						 float		lambda= 8, 
						 float		tau= 0, 
						 int		MaskType= 0, 
						 FloatImage *ori= NULL);