首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >带DWT的Matlab问题

带DWT的Matlab问题
EN

Stack Overflow用户
提问于 2011-06-12 14:36:25
回答 1查看 2K关注 0票数 0

我试图得到一个图像的第4级DWT使用10点daubechies滤波器。(自然倒置!)

代码语言:javascript
运行
复制
host = double(imread('lena512.bmp'));       % Load image data
nLevel = 4;                                 % Number of decompositions
cwA = cell(1,nLevel);                       % Approximation coefficients
cwH = cell(1,nLevel);                       % Horizontal detail coefficients
cwV = cell(1,nLevel);                       % Vertical detail coefficients
cwD = cell(1,nLevel);                       % Diagonal detail coefficients

% Do the DWT
myImage = host;
for iLevel = 1:nLevel,
  [cwA{iLevel},cwH{iLevel},cwV{iLevel},cwD{iLevel}] = dwt2(myImage,'db10');
  myImage = cwA{iLevel};
end

% Do the inverse DWT
fullRecon = cA{nLevel};
for iLevel = nLevel:-1:1
  fullRecon = idwt2(fullRecon,cH{iLevel},cV{iLevel},cD{iLevel},'db10');
end

上面的代码一直给我错误:

?使用==> +矩阵尺寸的错误必须一致。

==> idwt2在93 x= upsconv2(a,{Lo_R,Lo_R},sx,dwtEXTM,shift)+ .%近似时的误差。

在18 fullRecon = idwt2(fullRecon,cH{iLevel},cV{iLevel},cD{iLevel},‘db10’)处出错;

我相信,这是因为逆dwt做了一些古怪的事情。我也试过改变dwtmode,但没什么用。我真的很乐意接受任何帮助。

PS: lena512.bmp只是莉娜的一张灰色照片。它的尺寸是512×512。

我愿意接受新的想法

EN

回答 1

Stack Overflow用户

发布于 2011-06-12 22:36:34

将代码重写为

代码语言:javascript
运行
复制
clear all;
host = double(imread('lena512.bmp'));       % Load image data
nLevel = 4;                                 % Number of decompositions
cwA = cell(1,nLevel);                       % Approximation coefficients
cwH = cell(1,nLevel);                       % Horizontal detail coefficients
cwV = cell(1,nLevel);                       % Vertical detail coefficients
cwD = cell(1,nLevel);                       % Diagonal detail coefficients

% Size matrix
s = [size(host,1) size(host,2)];

% Do the DWT
myImage = host ;
for iLevel = 1:nLevel
  [cwA{iLevel},cwH{iLevel},cwV{iLevel},cwD{iLevel}] = dwt2(myImage, 'db10');
  s = [s; size(cwH{iLevel},1) size(cwH{iLevel},2)];
  myImage = cwA{iLevel};
end

% Do the inverse DWT
fullRecon = cwA{nLevel};
for iLevel = nLevel:-1:1
  fullRecon = idwt2(fullRecon,cwH{iLevel},cwV{iLevel},cwD{iLevel},'db10',s(iLevel,:));
end

解决了我的问题。希望它能帮助别人..。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6322512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档