📄 imgproc_b.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 + -