You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
2.3 KiB
C++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/*
* Copyright (c) 2015,中国航天电子技术研究院 无人机系统工程研究所
* All rights reserved.
*
* 文件名称waveReconstruct.h
* 摘 要:小波重构接口
*
* 当前版本1.0
* 作 者:王家星
* 完成日期2015年08月27日
*/
#pragma once
// OpenCV
#include <opencv2\opencv.hpp>
using namespace cv;
// 功能:函数 waveRec2() 对输入的分解系数矩阵coef进行 level 层重构, 得到重构矩阵rec
// 输入:
// coef 分解系数其结构如下coef = {cA_N;cV_N;cH_N;cD_N;cV_N-1;cH_N-1;cD_N-1;……;cV_1;cH_1;cD_1}
// scf: 存储各级分解系数矩阵的大小以及原始(图像)矩阵的大小
// wname: 小波名称
// level小波重构层数
// 输出:
// rec: 重构矩阵
// 返回值:
// 运算有效返回true否则返回false
bool waveRec2(cv::Mat& rec, const std::deque<cv::Mat> &coef, const std::deque<cv::Vec2i> &scf, const string wname = "sym5", const unsigned int level = 10);
// 功能:函数 getWaveRecFilter() 基于小波名称wname计算小波重构滤波器
// 输入:
// wname: 小波名称
// 支持小波:
// 1. haar
// 2. symN [1, 10]
// 3. dbN [1, 10]
// 4. coifN [1, 5]
// 输出:
// Lo_R 低通滤波器
// Hi_R 高通滤波器
// 返回值:
// 运算有效返回true否则返回false
bool getWaveRecFilter(cv::Mat &Lo_R, cv::Mat &Hi_R, const string wname);
// 功能:函数 idwt() 对输入的小波分解系数进行逆离散小波变换重构出信号序列dst
// 输入:
// cA: 平均部分的小波分解系数;
// cD: 细节部分的小波分解系数
// LF: 重构用的低通滤波器
// HF 重构用的高通滤波器
// 输出:
// dst 重构序列
// 返回值:
// 运算有效返回true否则返回false
bool idwt(cv::Mat &dst, const cv::Mat &cA, const cv::Mat &cD, const cv::Mat &LF, const cv::Mat &HF);
// 功能:函数 idwt2() 对输入的子矩阵序列进行逆小波变换, 得到重构矩阵outcA
// 输入:
// rcA,rcV,rcH,rcD : 同级低频、高频系数矩阵
// Lo_R,Hi_R :图像重构用到的低通、高通滤波器系数矩阵
// size : 本级小波分解系数矩阵的大小
// 输出:
// outcA: 重构矩阵
// 返回值:
// 运算有效返回true否则返回false
bool idwt2(cv::Mat &outcA,
const cv::Mat &rcA, const cv::Mat &rcV, const cv::Mat &rcH, const cv::Mat &rcD,
const cv::Mat &Lo_R, const cv::Mat &Hi_R,
cv::Vec2i size);