资源简介
在openCV平台下的小波变换函数,可以进行图像的小波分解和重构!
代码片段和文件信息
// DWT.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “cv.h“
#include “highgui.h“
// 二维离散小波变换(单通道浮点图像)
void DWT(IplImage *pImage int nlayer)
{
// 执行条件
if (pImage)
{
if (pImage->nChannels == 1 &&
pImage->depth == IPL_DEPTH_32F &&
((pImage->width >> nlayer) << nlayer) == pImage->width &&
((pImage->height >> nlayer) << nlayer) == pImage->height)
{
int i x y n;
float fValue = 0;
float fRadius = sqrt(2.0f);
int nWidth = pImage->width;
int nHeight = pImage->height;
int nHalfW = nWidth / 2;
int nHalfH = nHeight / 2;
float **pData = new float*[pImage->height];
float *pRow = new float[pImage->width];
float *pColumn = new float[pImage->height];
for (i = 0; i < pImage->height; i++)
{
pData[i] = (float*) (pImage->imageData + pImage->widthStep * i);
}
// 多层小波变换
for (n = 0; n < nlayer; n++ nWidth /= 2 nHeight /= 2 nHalfW /= 2 nHalfH /= 2)
{
// 水平变换
for (y = 0; y < nHeight; y++)
{
// 奇偶分离
memcpy(pRow pData[y] sizeof(float) * nWidth);
for (i = 0; i < nHalfW; i++)
{
x = i * 2;
pData[y][i] = pRow[x];
pData[y][nHalfW + i] = pRow[x + 1];
}
// 提升小波变换
for (i = 0; i < nHalfW - 1; i++)
{
fValue = (pData[y][i] + pData[y][i + 1]) / 2;
pData[y][nHalfW + i] -= fValue;
}
fValue = (pData[y][nHalfW - 1] + pData[y][nHalfW - 2]) / 2;
pData[y][nWidth - 1] -= fValue;
fValue = (pData[y][nHalfW] + pData[y][nHalfW + 1]) / 4;
pData[y][0] += fValue;
for (i = 1; i < nHalfW; i++)
{
fValue = (pData[y][nHalfW + i] + pData[y][nHalfW + i - 1]) / 4;
pData[y][i] += fValue;
}
// 频带系数
for (i = 0; i < nHalfW; i++)
{
pData[y][i] *= fRadius;
pData[y][nHalfW + i] /= fRadius;
}
}
// 垂直变换
for (x = 0; x < nWidth; x++)
{
// 奇偶分离
for (i = 0; i < nHalfH; i++)
{
y = i * 2;
pColumn[i] = pData[y][x];
pColumn[nHalfH + i] = pData[y + 1][x];
}
for (i = 0; i < nHeight; i++)
{
pData[i][x] = pColumn[i];
}
// 提升小波变换
for (i = 0; i < nHalfH - 1; i++)
{
fValue = (pData[i][x] + pData[i + 1][x]) / 2;
pData[nHalfH + i][x] -= fValue;
}
fValue = (pData[nHalfH - 1][x] + pData[nHalfH - 2][x]) / 2;
pData[nHeight - 1][x] -= fValue;
fValue = (pData[nHalfH][x] + pData[nHalfH + 1][x]) / 4;
pData[0][x] += fValue;
for (i = 1; i < nHalfH; i++)
{
fValue = (pData[nHalfH + i][x] + pData[nHalfH + i - 1][x]) / 4;
pData[i][x] += fValue;
}
// 频带系数
for (i = 0; i < nHalfH; i++)
{
pData[i][x] *= fRadius;
pData[nHalfH + i][x] /= fRadius;
}
}
}
delete[] pData;
delete[] pRow;
delete[] pColumn;
}
}
}
void main(int argc char* argv[])
{
//
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 353280 2009-05-19 10:42 wavelet\Debug\vc60.idb
文件 561152 2009-05-19 10:42 wavelet\Debug\vc60.pdb
文件 200766 2009-05-19 10:42 wavelet\Debug\wavelet.exe
文件 315172 2009-05-19 10:42 wavelet\Debug\wavelet.ilk
文件 50400 2009-05-19 10:42 wavelet\Debug\wavelet.obj
文件 8356956 2009-05-18 16:40 wavelet\Debug\wavelet.pch
文件 492544 2009-05-19 10:42 wavelet\Debug\wavelet.pdb
文件 263224 2009-05-14 14:48 wavelet\lena.BMP
文件 4817 2009-05-19 10:42 wavelet\wavelet.cpp
文件 7782 2009-05-18 16:29 wavelet\wavelet.cpp.bak
文件 3471 2009-05-18 16:47 wavelet\wavelet.dsp
文件 520 2009-05-18 16:47 wavelet\wavelet.dsw
文件 41984 2009-05-19 10:42 wavelet\wavelet.ncb
文件 50688 2009-05-19 10:42 wavelet\wavelet.opt
文件 1319 2009-05-19 10:42 wavelet\wavelet.plg
目录 0 2009-05-19 10:42 wavelet\Debug
目录 0 2009-05-19 10:42 wavelet
----------- --------- ---------- ----- ----
10704075 17
相关资源
- 基于OPENCV的车牌识别系统设计
- 617张国内车牌60-17bmp图片用于OpenCV正样
- hog特征提取,c版本代码
- 基于Qt5.8+OpenCV3.2的Basler多相机触发开
- 基于Opencv实现的图像纠偏
- ImageWatch2019.vsix
- SIFT特征提取+匹配
- 基于小波变换和直方图均衡的红外图
- 基于SA-GSO的小波加权多模盲均衡算法
- -adic小波的增强对称性
- 基于SIFT算法的图像拼接.rar
- opencv4.1.1+contrib完整版.zip
- OpenCV3.3+contrib-master,VS2013编译后的l
- OpenCV2.4.10官方完整版
- 基于OpenCV3.0的手势识别.rar
- 基于opencv的车牌识别源码
- Firmware_F103 V1.3.rar
- VS2017+opencv写的火焰检测带检测视频哦
- opencv图像处理方法总结.pdf
- bumblebee双目标定/伪彩色深度图/鼠标测
- OpenCV中对图片进行灰度处理
- 车牌识别系统原创+详细注释版+少函数
- 张正友相机标定自己编写calibratie函数
- Ubuntu16.04中配置Qt5.9.1和OpenCV3.4.0过程
- 小波分析及其应用__孙延奎
- 小波十讲中文版ten lectures wavelets
- opencv彩色视频以灰度格式和极坐标格
- 基于open cv的人脸识别
- opencv内置各种分类器
- 图像分割算法研究区域分割,数学形
评论
共有 条评论