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

📄 surfaceletfilterbank.h

📁 A set of C++ and Matlab routines implementing the surfacelet transform surfacelet的一个非常好用的工具箱
💻 H
字号:
//////////////////////////////////////////////////////////////////////////
//	SurfBox-C++ (c)
//////////////////////////////////////////////////////////////////////////
//
//	Yue Lu and Minh N. Do
//
//	Department of Electrical and Computer Engineering
//	Coordinated Science Laboratory
//	University of Illinois at Urbana-Champaign
//
//////////////////////////////////////////////////////////////////////////
//
//	SurfaceletFilterBank.h
//	
//	First created: 04-02-06
//	Last modified: 04-14-06
//
//////////////////////////////////////////////////////////////////////////

#ifndef SURFACELET_FILTER_BANK
#define SURFACELET_FILTER_BANK

#include <sstream>
#include "SurfArray.h"
#include "PyramidFilterBank.h"
#include "NdDirectionalFilterBank.h"


// Reconstruction Information

class SurfaceletRecInfo
{
public:
	SurfaceletRecInfo();
	~SurfaceletRecInfo();

	//	Set decomposition and reconstruction parameters
	void SetParameters(int nDims_, int bo_, int mSize_, double beta_, double lambda_, int PyrLevel_, enum Pyramid_Mode pyr_mode_, enum SmoothFunctionType func_type_, string& dir_info);
	
	//	Set decomposition and reconstruction parameters (without reading the filter coefficients)
	void SetParameters(int nDims_, int mSize_, double beta_, double lambda_, int PyrLevel_, enum Pyramid_Mode pyr_mode_, enum SmoothFunctionType func_type_);

	//	Get the decomposition level info at a certain scale
	void GetNdfbLevel(int scale, int Level[]) const;

	//	Set the decomposition level info at a certain scale
	void SetNdfbLevel(int scale, int Level[]);

	//	Directly set the checkerboard filters
	void SetFilters(double *pFilter0, int pDims0[], int center0[], 
		double *pFilter1, int pDims1[], int center1[], double *pFilter2, int pDims2[], int center2[],
		double *pFilter3, int pDims3[], int center3[]);

	enum Pyramid_Mode pyr_mode;
	enum SmoothFunctionType func_type;
	int bo;
	int mSize;
	double beta;
	double lambda;
	int PyrLevel;
	int **NdfbLevels;
	int nDims;

	SurfMatrix Dec_filter0, Dec_filter1;
	int Dec_center0[2], Dec_center1[2];

	SurfMatrix Rec_filter0, Rec_filter1;
	int Rec_center0[2], Rec_center1[2];

private:
	NdDirectionalFilterBank ndfb_fb;
};


class SurfaceletFilterBank
{
public:
	SurfaceletFilterBank();
	~SurfaceletFilterBank();

    // Surfacelet decomposition
	bool GetDecomposition(SurfArray &InArray, SurfArray **OutHighpassArrays[], SurfArray &OutLowpassArray, SurfaceletRecInfo &ReconstructionInfo);
	
    // Surfacelet reconstruction
    void GetReconstruction(SurfArray ***InHighpassArrays, SurfArray &InLowpassArray, SurfArray &OutArray, SurfaceletRecInfo &ReconstructionInfo);

private:
    // Check the validity of the decomposition parameters
	bool CheckParameters(SurfArray &InArray, SurfaceletRecInfo &ReconstructionInfo);

    // Multidimensional multiscale pyramid
	PyramidFilterBank	pyr_fb;

    // Multidimensional directional filter bank
	NdDirectionalFilterBank NDFB_fb;
};

//	This software is provided "as-is", without any express or implied
//	warranty. In no event will the authors be held liable for any 
//	damages arising from the use of this software.

#endif

⌨️ 快捷键说明

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