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

📄 watersheddoc.h

📁 分水岭算法
💻 H
字号:
// WaterShedDoc.h : interface of the CWaterShedDoc class
//
/////////////////////////////////////////////////////////////////////////////

#if !defined(AFX_WATERSHEDDOC_H__68533D2C_2AC3_42C0_A159_CBDDD58AA973__INCLUDED_)
#define AFX_WATERSHEDDOC_H__68533D2C_2AC3_42C0_A159_CBDDD58AA973__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "Imageload.h"
#include "ImageObject.h"
#include "MyMath.h"



typedef struct tagRgnInfo{
	BOOL  isflag;//备用标记;
	INT   ptcount;//该区所含的点数;
	FLOAT   l;//该区l均值
	FLOAT   u;//该区u均值
	FLOAT   v;//该区v均值
}MyRgnInfo;//分割后各个区的一些统计信息,图像中各点所属区域的信息存放在flag数组中;

typedef struct tagMyLUV{
	FLOAT l;
	FLOAT u;
	FLOAT v;
}MyLUV;	

class CWaterShedDoc : public CDocument
{
protected: // create from serialization only
	CWaterShedDoc();
	DECLARE_DYNCREATE(CWaterShedDoc)

// Attributes
public:
	CString imageName;
    BOOL isImageLoaded;
	BYTE* imageData;
	
	LONG dataLen;

	LONG  imageWidth;
	LONG  imageHeight;
	CImageObject* myImageObject;

	MyMath myMath;
	MyLUV* luvData;//
// Operations
public:

// Overrides
	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CWaterShedDoc)
	public:
	virtual BOOL OnNewDocument();
	virtual void Serialize(CArchive& ar);
	virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
	virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
	//}}AFX_VIRTUAL

// Implementation
public:
	BOOL RgbtoLuvPcm(BYTE* inDatas, int width, int height, MyLUV* luvbuff);
	void MergeNearest(INT curid, MyRgnInfo* rginfoarr, CString* neiarr, INT* mergearr);
	void AddBNeiToANei(INT curid, INT nearid, CString* neiarr, INT* mergearr);
	void MergeTwoRgn(INT curid, INT nearid, CString* neiarr, MyRgnInfo* rginfoarr, INT* mergearr);
	int FindNearestNei(INT curid, CString neistr, MyRgnInfo* rginfoarr, INT* mergearr);
	int FindMergedRgn(INT idint, INT* mergearr);
	void AddNeiRgn(INT curid, INT neiid, CString* neiarr);
	void AddNeiOfCur(INT curid, INT left, INT right, INT up, INT down, INT* flag, CString* neiarr);
	BOOL Luv2Rgb(FLOAT l, FLOAT u, FLOAT v, INT& r, INT& g, INT& b);
	BOOL LuvToRgb(FLOAT* luvData, INT width, INT height, BYTE* rgbData);
	void MergeRgs(MyRgnInfo* rginfoarr, INT rgnumber, INT* flag, INT width, INT height, INT* outmerge, INT& rgnum);
	void FloodVincent(MyImageGraPt* imiarr, INT* graddarr, INT minh, INT maxh, INT* flagarr, INT& outrgnumber);
	void RefreshImageObject();
	void GetGradient(BYTE* image, INT width, INT height, FLOAT* deltar, FLOAT* deltasita);
	virtual ~CWaterShedDoc();
#ifdef _DEBUG
	virtual void AssertValid() const;
	virtual void Dump(CDumpContext& dc) const;
#endif

protected:

// Generated message map functions
protected:
	//{{AFX_MSG(CWaterShedDoc)
	afx_msg void OnWatershed();
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

/////////////////////////////////////////////////////////////////////////////

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_WATERSHEDDOC_H__68533D2C_2AC3_42C0_A159_CBDDD58AA973__INCLUDED_)

⌨️ 快捷键说明

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