求助:simulink常用模块中小波分析模块DWT怎么使用

dwt-matlab Mallat小波快速算法的实现,非常的详 而且函数全部模块化 面调用。
238万源代码下载-
&文件名称: dwt-matlab
& & & & &&]
&&所属分类:
&&开发工具: matlab
&&文件大小: 2 KB
&&上传时间:
&&下载次数: 221
&&提 供 者:
&详细说明:Mallat小波快速算法的实现,非常的详细,而且函数全部模块化,方面调用。-This code is writed by matlab language,it used to process the mallat quick method
文件列表(日期:~)(点击判断是否您需要的文件,如果是垃圾请在下面评价投诉):
&&dwt的matlab编程实现&&...................\&&...................\&&...................\&&...................\Readme.txt
&[]:很好,推荐下载
&近期下载过的用户:
&&&&&&&&&[]
&相关搜索:
&&&&&&&&&&
&输入关键字,在本站238万海量源码库中尽情搜索:
&[] - 一个很好的mallat算法是MATLAB实现原代码,具有很好的操作性。
&[] - [原创]自己写的mallat算法matlab源程序,完全按照教材定义编写,有助于深入理解mallat小波变换。
&[] - 小波谱分析mallat算法经典程序,对学习Mallat算法很有帮助。
&[] - 这是基于加权平均值的图像融合,采用三层小波分解,仅供参考
&[] - vc实现mallat算法-Wavelet。mattat是很有名的算法。本程序提供了完整的示例。君,已阅读到文档的结尾了呢~~
JPEG2000中DWT的MATLAB实现,dwt2 matlab,matlab dwt,matlab中的simulink,matlab中bar的用法,matlab中的figure,matlab中的,matlab中while的用法,matlab中的if语句,matlab中disp的用法
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
JPEG2000中DWT的MATLAB实现
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口3542人阅读
http://szshdy./blog/static//
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:49844次
排名:千里之外
转载:46篇
评论:23条
(1)(1)(1)(4)(6)(1)(1)(4)(1)(2)(14)(13)(3)matlab DWT数字水印程序matlabDWT数字水印程序压缩掉G个灰度,希望得到相应程-知识宝库
你可能对下面的信息感兴趣查看: 4537|回复: 7
求助:opencv实现的离散小波变换结果分析
最近需要用DWT进行图像特征提取,在网上搜到一位前辈写的利用opencv进行DWT的代码,运行之后结果如下图。
请问这从左上到右下7幅图表示什么意义?如果我要提取图像的主特征应该用哪些数据?
(517.6 KB, 下载次数: 98)
01:38 上传
嗯,我知道了谢谢,我想用LL的图像怎么提取出来啊?哪个图像是啊?怎么表示啊?
代码如下:
// 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,
& & & & & & & & & & & & float& &fValue& &= 0;
& & & & & & & & & & & & float& &fRadius&&= sqrt(2.0f);
& & & & & & & & & & & & int& &&&nWidth& &= pImage-&
& & & & & & & & & & & & int& &&&nHeight&&= pImage-&
& & & & & & & & & & & & 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-& i++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & pData[i] = (float*) (pImage-&imageData + pImage-&widthStep * i);
& & & & & & & & & & & & }
& & & & & & & & & & & & // 多层小波变换
& & & & & & & & & & & & for (n = 0; n & nL n++, nWidth /= 2, nHeight /= 2, nHalfW /= 2, nHalfH /= 2)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & // 水平变换
& & & & & & & & & & & & & & & & for (y = 0; y & nH 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] -= fV
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & fValue = (pData[y][nHalfW - 1] + pData[y][nHalfW - 2]) / 2;
& & & & & & & & & & & & & & & & & & & & pData[y][nWidth - 1] -= fV
& & & & & & & & & & & & & & & & & & & & fValue = (pData[y][nHalfW] + pData[y][nHalfW + 1]) / 4;
& & & & & & & & & & & & & & & & & & & & pData[y][0] += fV
& & & & & & & & & & & & & & & & & & & & for (i = 1; i & nHalfW; i++)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & fValue = (pData[y][nHalfW + i] + pData[y][nHalfW + i - 1]) / 4;
& & & & & & & & & & & & & & & & & & & & & & & & pData[y][i] += fV
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & // 频带系数
& & & & & & & & & & & & & & & & & & & & for (i = 0; i & nHalfW; i++)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & pData[y][i] *= fR
& & & & & & & & & & & & & & & & & & & & & & & & pData[y][nHalfW + i] /= fR
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & // 垂直变换
& & & & & & & & & & & & & & & & for (x = 0; x & nW 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 & nH 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] -= fV
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & fValue = (pData[nHalfH - 1][x] + pData[nHalfH - 2][x]) / 2;
& & & & & & & & & & & & & & & & & & & & pData[nHeight - 1][x] -= fV
& & & & & & & & & & & & & & & & & & & & fValue = (pData[nHalfH][x] + pData[nHalfH + 1][x]) / 4;
& & & & & & & & & & & & & & & & & & & & pData[0][x] += fV
& & & & & & & & & & & & & & & & & & & & for (i = 1; i & nHalfH; i++)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & fValue = (pData[nHalfH + i][x] + pData[nHalfH + i - 1][x]) / 4;
& & & & & & & & & & & & & & & & & & & & & & & & pData[i][x] += fV
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & & & & & // 频带系数
& & & & & & & & & & & & & & & & & & & & for (i = 0; i & nHalfH; i++)
& & & & & & & & & & & & & & & & & & & & {
& & & & & & & & & & & & & & & & & & & & & & & & pData[i][x] *= fR
& & & & & & & & & & & & & & & & & & & & & & & & pData[nHalfH + i][x] /= fR
& & & & & & & & & & & & & & & & & & & & }
& & & & & & & & & & & & & & & & }
& & & & & & & & & & & & }
& & & & & & & & & & & & delete[] pD
& & & & & & & & & & & & delete[] pR
& & & & & & & & & & & & delete[] pC
& & & & & & & & }
// 二维离散小波恢复(单通道浮点图像)
//void IDWT(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,
//& &float& &fValue& &= 0;
//& &float& &fRadius&&= sqrt(2.0f);
//& &int& &&&nWidth& &= pImage-&width && (nLayer - 1);
//& &int& &&&nHeight&&= pImage-&height && (nLayer - 1);
//& &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-& i++)
//& & pData[i] = (float*) (pImage-&imageData + pImage-&widthStep * i);
//& &// 多层小波恢复
//& &for (n = 0; n & nL n++, nWidth *= 2, nHeight *= 2, nHalfW *= 2, nHalfH *= 2)
//& & // 垂直恢复
//& & for (x = 0; x & nW x++)
//& &&&// 频带系数
//& &&&for (i = 0; i & nHalfH; i++)
//& && &pData[i][x] /= fR
//& && &pData[nHalfH + i][x] *= fR
//& &&&// 提升小波恢复
//& &&&fValue = (pData[nHalfH][x] + pData[nHalfH + 1][x]) / 4;
//& &&&pData[0][x] -= fV
//& &&&for (i = 1; i & nHalfH; i++)
//& && &fValue = (pData[nHalfH + i][x] + pData[nHalfH + i - 1][x]) / 4;
//& && &pData[i][x] -= fV
//& &&&for (i = 0; i & nHalfH - 1; i++)
//& && &fValue = (pData[i][x] + pData[i + 1][x]) / 2;
//& && &pData[nHalfH + i][x] += fV
//& &&&fValue = (pData[nHalfH - 1][x] + pData[nHalfH - 2][x]) / 2;
//& &&&pData[nHeight - 1][x] += fV
//& &&&// 奇偶合并
//& &&&for (i = 0; i & nHalfH; i++)
//& && &y = i * 2;
//& && &pColumn[y] = pData[i][x];
//& && &pColumn[y + 1] = pData[nHalfH + i][x];
//& &&&for (i = 0; i & nH i++)
//& && &pData[i][x] = pColumn[i];
//& & // 水平恢复
//& & for (y = 0; y & nH y++)
//& &&&// 频带系数
//& &&&for (i = 0; i & nHalfW; i++)
//& && &pData[y][i] /= fR
//& && &pData[y][nHalfW + i] *= fR
//& &&&// 提升小波恢复
//& &&&fValue = (pData[y][nHalfW] + pData[y][nHalfW + 1]) / 4;
//& &&&pData[y][0] -= fV
//& &&&for (i = 1; i & nHalfW; i++)
//& && &fValue = (pData[y][nHalfW + i] + pData[y][nHalfW + i - 1]) / 4;
//& && &pData[y][i] -= fV
//& &&&for (i = 0; i & nHalfW - 1; i++)
//& && &fValue = (pData[y][i] + pData[y][i + 1]) / 2;
//& && &pData[y][nHalfW + i] += fV
//& &&&fValue = (pData[y][nHalfW - 1] + pData[y][nHalfW - 2]) / 2;
//& &&&pData[y][nWidth - 1] += fV
//& &&&// 奇偶合并
//& &&&for (i = 0; i & nHalfW; i++)
//& && &x = i * 2;
//& && &pRow[x] = pData[y][i];
//& && &pRow[x + 1] = pData[y][nHalfW + i];
//& &&&memcpy(pData[y], pRow, sizeof(float) * nWidth);
//& &delete[] pD
//& &delete[] pR
//& &delete[] pC
int _tmain(int argc, _TCHAR* argv[])
& & & & // 小波变换层数
& & & & int nLayer = 2;
& & & & // 输入彩色图像
& & & & IplImage *pSrc = cvLoadImage(&lena.jpg&, 1);
& & & & // 计算小波图象大小,使其width和height都是2的倍数
& & & & CvSize size = cvGetSize(pSrc);
& & & & if ((pSrc-&width && nLayer) && nLayer != pSrc-&width)
& & & & & & & & size.width = ((pSrc-&width && nLayer) + 1) && nL
& & & & if ((pSrc-&height && nLayer) && nLayer != pSrc-&height)
& & & & & & & & size.height = ((pSrc-&height && nLayer) + 1) && nL
& & & & // 创建小波图象
& & & & IplImage *pWavelet = cvCreateImage(size, IPL_DEPTH_32F, pSrc-&nChannels);
& & & & if (pWavelet)
& & & & & & & & // 小波图象赋值
& & & & & & & & cvSetImageROI(pWavelet, cvRect(0, 0, pSrc-&width, pSrc-&height));
& & & & & & & & cvConvertScale(pSrc, pWavelet, 1, -128);//使用线性变换转换数组:pWavelet = pSrc*1-128
& & & & & & & & cvResetImageROI(pWavelet);
& & & & & & & & // 彩色图像小波变换
& & & & & & & & IplImage *pImage = cvCreateImage(cvGetSize(pWavelet), IPL_DEPTH_32F, 1);
& & & & & & & & if (pImage)
& & & & & & & & {
& & & & & & & & & & & & for (int i = 1; i &= pWavelet-&nC i++)
& & & & & & & & & & & & {
& & & & & & & & & & & & & & & & cvSetImageCOI(pWavelet, i);//设置感兴趣通道channel
& & & & & & & & & & & & & & & & cvCopy(pWavelet, pImage, NULL);//pImage为灰度图像,将pWavelet的每个通道数据copy到pImage中
& & & & & & & & & & & & & & & & // 二维离散小波变换
& & & & & & & & & & & & & & & & DWT(pImage, nLayer);//对每个通道进行DWT
& & & & & & & & & & & & & & & & // 二维离散小波恢复
& & & & & & & & & & & & & & & & // IDWT(pImage, nLayer);
& & & & & & & & & & & & & & & & cvCopy(pImage, pWavelet, NULL);//将每个通道变换后的数据存入pWavelet的对应通道中
& & & & & & & & & & & & }
& & & & & & & & & & & & cvSetImageCOI(pWavelet, 0);
& & & & & & & & & & & & cvReleaseImage(&pImage);
& & & & & & & & }
& & & & & & & & // 小波变换图象
& & & & & & & & cvSetImageROI(pWavelet, cvRect(0, 0, pSrc-&width, pSrc-&height));
& & & & & & & & cvConvertScale(pWavelet, pSrc, 1, 128);
& & & & & & & & cvResetImageROI(pWavelet); // 本行代码有点多余,但有利用养成良好的编程习惯
& & & & & & & & cvReleaseImage(&pWavelet);
& & & & // 显示图像pSrc
& & & & cvNamedWindow(&dwt&,1);
& & & & cvShowImage(&dwt&,pSrc);
& & & & cvWaitKey(0);
& & & & cvDestroyWindow(&dwt&);
& & & & // ...
& & & & cvReleaseImage(&pSrc);
& & & & cvReleaseImage(&pSrc0);
& & & & return 0;
兄台,你这个弄明白了没
这是2阶2维小波变换。
从左上角到右下角是图像由LL(低低频)向HH(高高频)的个个子带数据。每一阶二维小波变换都会产生4个子带,多阶的小波变换是在LL频上进行迭代的结果。图像经小波变换后,其频域和时域的信息被分离开,便于进一步的处理。详细可参考
请问我把这个代码写进去,为什么会有提示说fatal error C1083: 无法打开包括文件:“stdafx.h”: No such file or directory,这到底是咋回事啊?上网查的那些方法都没用,这到底是怎么回事啊?还请大家帮忙,谢谢了!
你把 那个文件头注释掉, 试一下, 是工程建立是的 设置不一样造成的
嗯,我知道了谢谢,我想用LL的图像怎么提取出来啊?哪个图像是啊?怎么表示啊? ...
亲,我也好想知道LL图像怎么提取出来,你有答案了么?
Powered by

我要回帖

更多关于 simulink常用模块 的文章

 

随机推荐