⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 imgproc_b.h

📁 图像处理软件,功能比较基础
💻 H
字号:
#ifndef _IMGPROCH_

#define _IMGPROCH_

#include<stdio.h>


/*--------------------- Common Define --------------------------*/

#ifndef _BITMAPINFOHEADER_
#define _BITMAPINFOHEADER_
typedef struct tagBITMAPINFOHEADER{
	unsigned long      biSize;
	signed long       biWidth;
	signed long       biHeight;
	unsigned short       biPlanes;
	unsigned short       biBitCount;
	unsigned long      biCompression;
	unsigned long      biSizeImage;
	signed long       biXPelsPerMeter;
	signed long       biYPelsPerMeter;
	unsigned long      biClrUsed;
	unsigned long      biClrImportant;
} BITMAPINFOHEADER;
#endif

#ifndef _BITMAPFILEHEADER_
#define _BITMAPFILEHEADER_
typedef struct tagBITMAPFILEHEADER {
	unsigned short    bfType;
	unsigned long     bfSize;
	unsigned short    bfReserved1;
	unsigned short    bfReserved2;
	unsigned long     bfOffBits;
}BITMAPFILEHEADER;
#endif

#ifndef _RGBQUAD_
#define _RGBQUAD_
typedef struct tagRGBQUAD {
	unsigned char    rgbBlue;
	unsigned char    rgbGreen;
	unsigned char    rgbRed;
	unsigned char    rgbReserved;
} RGBQUAD;
#endif

#ifndef _COORDINATE_
#define _COORDINATE_
typedef struct
{
  short   x;
  short   y;
}COORDINATE;
#endif

#ifndef _COORD2d_
#define _COORD2d_
typedef struct tagCOORD2d{
	short x;
	short y;
	}COORD2d;
#endif

#ifndef _FRAME_
#define _FRAME_
typedef struct {
	short left;
	short up;
	short right;
	short down;
}FRAME;
#endif
	
#ifndef _COORD2df_
#define _COORD2df_
typedef struct tagCOORD2df{
	double x;
	double y;
}COORD2df;	//
#endif

#ifndef _AREA_
#define _AREA_
typedef struct
{
 int          Height,Width,Value;
 COORDINATE   Left_Up,Right_Down;
}AREA;
#endif

#define LABELMODE_1  1
#define LABELMODE_2  2

#define MAXSLINK     256   /* 0 --- 255  */
#define MAXLINK      1024  /* 0 --- 1023 */
#define MAXSUBBLOCK  1023  /* 1 --- 1023 */
#define MAXBLOCK     255   /* 1 --- 255  */
#define MAXLEVEL	255
#define MAXGRAYLEVEL	255

#define   DIRECTION_NUMBER  8
#define   MAX_POINT_NUMBER 100
#define   MINLEVEL     0


/*--------------------- Basic Routine -------------------------*/
/*basic.c*/
void **fspace_2d(short row,short col,short length);
void *fspace_1d(short col,short length);
void ffree_2d(void **a,short row);
unsigned char **InputImageWithName(short *Row,short *Col,char *FileName);
FILE *wfread1(short *row,short *col,short *type,char *s);
void OutputImageWithName(unsigned char **Image,short Row,short Col,char *FileName);
FILE *wfwrite1(short row,short col,short type,char *filen);
unsigned char **ReadBMPFile(short *Row,short *Col,char *FileName);
void OutputBMPWithName(unsigned char **image,short Row,
						short Col,char *FileName);
int ChangeFileName(char *filename);


/*--------------------- Segmentation --------------------------*/
/*seg.c*/
/*segment.c*/
unsigned char **ImageFold(unsigned char **Image,int Row,int Col,int Margin);
/* int ucMax1d(unsigned char *a,int col,int margin); */
int ucMax2d(unsigned char **a,int row,int col,int margin,int *minp);
float ucGetSquareSum(unsigned char **Image,int YStart,int XStart,int Row,
                     int Col);
float ucGetZSquareSum(unsigned char **Image,int YStart,int XStart,int Row,
                      int Col,float ImageAve);
float ucAverage(unsigned char **a,int YStart,int XStart,int row,int col,
                int margin);
float ucDeviation(unsigned char **a,int YStart,int XStart,int row,int col,
                  float average,int margin);
int iMax2d(int **a,int row,int col,int margin,int *minp);
float iGetSquareSum(int **Image,int YStart,int XStart,int Row,int Col);
float iGetZSquareSum(int **Image,int YStart,int XStart,int Row,int Col,float ImageAve);
float iAverage(int **a,int YStart,int XStart,int row,int col,int margin);
float iDeviation(int **a,int YStart,int XStart,int row,int col,float average,int margin);
/* void ucProbability(unsigned char **a,int row,int col,float *d,int margin); */
float fMax2d(float **a,int row,int col,int margin,float *minp);
float fGetSquareSum(float **Image,int YStart,int XStart,int Row,int Col);
float fGetZSquareSum(float **Image,int YStart,int XStart,int Row,int Col,
                     float ImageAve);
float fAverage(float **a,int YStart,int XStart,int row,int col,int margin);
float fDeviation(float **a,int YStart,int XStart,int row,int col,
                 float average,int margin);
void fProbability(float **a,int row,int col,float *d,float min,float ratio,
                  int margin);
static int SortFunction(const unsigned char *p1,const unsigned char *p2);
unsigned char **Median(unsigned char **Image,short YStart,
			           short XStart,short Row,short Col,short MaskSize);
unsigned char **Dilation(unsigned char **Image, unsigned char **Model,
			 short IRow, short ICol, short MRow, short MCol,
			 short YCenter, short XCenter);
unsigned char **Erosion(unsigned char **Image, unsigned char **Model,
			short IRow, short ICol, short MRow, short MCol,
			short YCenter, short XCenter);
double Entropy(unsigned char** InImg, short YStart, short XStart, 
			  short Row, short Col);
short Otsu(unsigned char **Image,short Row,short Col);
short MaxEntropy(unsigned char **Image,short Row,short Col);
void Motsu(short Row, short Col, unsigned char** OriginalImg, 
		   unsigned char ** SegmentImg,double EntropyThreshold );
short NonlineOtsu(unsigned char** Image, short YStart, 
				  short XStart, short Row, short Col, double C);








/*--------------------- Label Routine -------------------------*/
/*label.c*/
unsigned GetNeighborTable(unsigned char **array, short RowLen, short ColLen,
                          unsigned **neighbor, unsigned **TemArray,
                          unsigned *TabLen, unsigned *area);

unsigned GetMapTable(unsigned **neighbor, unsigned TabLen, unsigned *map);
short ModifyMapTable1(unsigned *map, unsigned *area, unsigned GrayNo,
                    unsigned TrueObj, short MinArea);
void ModifyMapTable2(unsigned *map, unsigned *area, unsigned GrayNo,
                     unsigned TrueObj);
void DoMap(unsigned char **array, unsigned **TemArray, short RowLen, short ColLen,
           unsigned *map);
short Label(unsigned char **array,short RowLen, short ColLen,short LabelMode,
          short MinArea);
//int SearchSingleContour(unsigned char **Image,short Row,short Col,
//				COORD2d *Start,unsigned char *LinkerCode,short *PointNum);
int SearchSingleContour(unsigned char **Image,short Row,short Col,
				COORD2d *Start,unsigned char *LinkerCode,short *PointNum,
				unsigned char labelnum);
int ParaCoord(unsigned char *LinkerCode,short PointNum,
			  COORD2d Start,COORD2df *Para,short ParaNum);
double ChainLength(unsigned char *LinkerCode,short PointNum);
int curvature(COORD2df *Para,short ParaNum,double *curv);

/*-----------------ATR Routine --------------------------**/
void  Moment(double B[7],unsigned char **Image,short Row,short Col);
void  Recognition(unsigned char **InImg,short InImgRow,short InImgCol,
		  unsigned char **ReferImg,short ReferImgRow,short ReferImgCol,
		  COORDINATE *RecArea_LeftUp, COORDINATE *RecArea_RightDown);
void Find_Peak(short AreaNo, unsigned char** InputImg, COORDINATE StartPoint, COORDINATE EndPoint, COORDINATE * LocalMaxPoint, short * LocalMaxPointNumber, COORDINATE * LocalMinPoint, short * LocalMinPointNumber);
void ShapeRec(short Row, short Col, unsigned char** InputImg, COORDINATE * Left_Up, COORDINATE* Right_Down);
void GetAreaInfo(short AreaNumber, unsigned char** LabelImg, short Row, short Col, AREA * Area);
void NextTrackPoint(short * OutsideFlag, COORDINATE StartPoint, COORDINATE EndPoint, short Direction, COORDINATE ThisPoint, COORDINATE * NextPoint);
/*End of ATR Routine */
#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -