用Matlab将一副256*256灰度图进行小波变换和逆变换,得到的图颜色加深了
i=imread('A.tif');[A,B,C,D]=dwt2(i,'haar');[a,b,c,d]=dwt2(A,'haar');A=idwt2(a,b,c,d,'...
i=imread('A.tif');
[A,B,C,D]=dwt2(i,'haar');
[a,b,c,d]=dwt2(A,'haar');
A=idwt2(a,b,c,d,'haar');
i=idwt2(A,B,C,D,'haar');
imshow(i,[]);
逆变换后的灰度图显得颜色更深,这是正常的吗?
有没有办法逆变换后的图和原图一样,或看不出差别呢? 展开
[A,B,C,D]=dwt2(i,'haar');
[a,b,c,d]=dwt2(A,'haar');
A=idwt2(a,b,c,d,'haar');
i=idwt2(A,B,C,D,'haar');
imshow(i,[]);
逆变换后的灰度图显得颜色更深,这是正常的吗?
有没有办法逆变换后的图和原图一样,或看不出差别呢? 展开
1个回答
展开全部
头一次见人用这样的方式做多层的DWT,很有创新性,但从小波理论和物理意义上是完全错误的,您压根就没明白DWT的做法。dwt2(A,'haar');中的A是[A,B,C,D]=dwt2(i,'haar');得出的小波系数A,它不是你要分解的信号,从物理意义上讲你的A是没有量纲的小波系数,用于dwt2(A,'haar');这种格式就是错误的,因为使用dwt2函数时,这里的A就应该是你要分析的信号,应该是有量纲的。
另外,从DWT的小波理论讲,单层(单一尺度)的函数dwt2分解时,其尺度和平移参数的运作和多层DWT时是不同的,用多个单层的分解妄图模仿多层分解从小波理论的原理上讲就已经是错误的了,更别说还用物理含义的量纲问题。
所以这中做法本身就是错误的,从意义上分析它是混乱的(有量纲的和无量纲的量混合计算,天知道得到的结果应怎么去解释),从数值上分析它可能会有溢出的问题,逆变换重构后其值域可能难于预测。因此别玩得这么有新意了,老老实实用wavedec2和waverec2吧!
另外,从DWT的小波理论讲,单层(单一尺度)的函数dwt2分解时,其尺度和平移参数的运作和多层DWT时是不同的,用多个单层的分解妄图模仿多层分解从小波理论的原理上讲就已经是错误的了,更别说还用物理含义的量纲问题。
所以这中做法本身就是错误的,从意义上分析它是混乱的(有量纲的和无量纲的量混合计算,天知道得到的结果应怎么去解释),从数值上分析它可能会有溢出的问题,逆变换重构后其值域可能难于预测。因此别玩得这么有新意了,老老实实用wavedec2和waverec2吧!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询