matlab 小波

来源:百度知道 编辑:UC知道 时间:2024/06/02 14:05:39
x=imread('luoding.bmp'); %luoding.bmp是一幅24位图
[c,s]=wavedec2(x,2,'db1');

出现如下的错误:
??? Error using ==> vertcat
All rows in the bracketed expression must have the same
number of columns.

Error in ==> wavedec2 at 54
s = [size(x);s]; % store size
谢谢你,我试验过使用matlab自带的图像可以成功,可是不是matlab自带的图像,怎么也成功不了呢?比如luoding.bmp就是我自己放到work里面的一幅二维图像,会出现如下错误:
??? Error using ==> conv2
First and second arguments must be single or double.

Error in ==> wconv2 at 25
case 'row' , y = conv2(x,f(:)',shape);

Error in ==> dwt2 at 80
z = wconv2('row',y,Lo_D,'valid');

Error in ==> wavedec2 at 52
[x,h,v,d] = dwt2(x,Lo_D,Hi_D); % decomposition

彩色图像是3维矩阵,二维小波当然会出错,每一层分开处理即可

下面是例子:
x=imread('liftingbody.png');
imshow(x);%显示原图
[c,s]=wavedec2(double(x),2,'db1');%分解
y=waverec2(c,s,'db1');%重构
figure;imshow(uint8(y))%显示