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

📄 imganalyse.h

📁 用C++实现的数字图像处理各个算法源代码 我精心整理的 很难的啊 希望可以给大家带来帮助
💻 H
字号:
// ImgAnalyse.h: interface for the CImgAnalyse class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_IMGANALYSE_H__74A2A985_E51E_43DC_893F_E82EC4C920A2__INCLUDED_)
#define AFX_IMGANALYSE_H__74A2A985_E51E_43DC_893F_E82EC4C920A2__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

//////////////////////////////////////////////////////////////////////////////
//功能:EdgePoint是一个存储边界跟踪中边界点的坐标、当前矢量、次矢量的结构。
//      TraceArray为存储边界跟踪结果的元素为EdgePoint型的模板数组。
//说明:(1)当前矢量:前一个边界点到当前边界点的矢量链码;
//      (2)次矢量:边界上当前点到下一个边界点的矢量链码;
//	    (3)程序中采用的8方向链码,其方向定义如下:
//            3     2     1
//            4     P     0
//            5     6     7
//      (4)边界跟踪时,从下到上,从左到右,逆时针进行。
//////////////////////////////////////////////////////////////////////////////
struct EdgePoint
{
	BYTE nCurVerct;			//当前矢量,即在轮廓跟踪中的前一个搜索方向
	CPoint CurPoint;		//当前点的坐标
};
static CArray<EdgePoint,EdgePoint&> TraceArray;

//区域标记结果的结构体
struct LabelResult
{
	int nLabelNo;			//区域标记号
	CPoint StartPoint;		//标记区域的起始点
	CPoint CenterPoint;		//区域中心坐标
	DWORD LabelArea;		//标记区域的面积
};

static CArray<LabelResult,LabelResult&> LabelArray;

#include "DibObject.h"
#include "matlib.h"

class CImgAnalyse : public CObject  
{
	DECLARE_DYNCREATE(CImgAnalyse)
public:
	//获取标记区域的质心坐标
	POINT GetCentroid();
	//区域标记
	BOOL LabelArea(CDibObject *pDibObject = NULL);
	//求傅立叶描述子
	double * FourierFactor(int *nDimSize);
	//由边界链码计算封闭区域的周长
	BOOL PeriByChainCode(float m_fXScale,float m_fYScale,float m_fXYScale,float *fP);
	//利用格林公式由边界点坐标计算封闭区域面积
	BOOL AreaByGreen(float m_fXScale,float m_fYScale,float *fArea);
	//由边界链码求面积
	BOOL AreaByChain(float *fArea);
	//获取边界点数
	int GetEdgePointNum();
	//尺寸标定
	void Calibrate(float *X_Scale, float *Y_Scale, float *XY_Scale,float realSize);
	//边界跟踪
	BOOL EdgeTrace(CDibObject *pDibObject = NULL);
	//构造函数
	CImgAnalyse();
	CImgAnalyse(CDibObject * );

	//析构函数
	virtual ~CImgAnalyse();

	//设置DibObject类对象
	void SetDibObjectClass( CDibObject * );

	//诊断调试函数
	#ifdef _DEBUG
		virtual void Dump( CDumpContext &dc) const;
		virtual void AssertValid() const;
	#endif

protected:
	CDibObject * m_pDibObject;
	//定义MatLab矩阵变量
	Mm mFourier;

};

#endif // !defined(AFX_IMGANALYSE_H__74A2A985_E51E_43DC_893F_E82EC4C920A2__INCLUDED_)

⌨️ 快捷键说明

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