function plot_wave_coef_join(cf_vec,dim_vec) dn = 3; num = (length(cf_vec)-1)/dn; tmpa = wkeep(cf_vec{1}, dim_vec(1, :), 'c'); tmpa = im2uint8(mat2gray(tmpa)); tmpa(1, :) = 255; tmpa(end, :) = 255; tmpa(:, 1) = 255; tmpa(:, end) = 255; for j = 1:num tmpv = wkeep(cf_vec{(j-1)*dn+2}, dim_vec(j, :), 'c'); tmph = wkeep(cf_vec{(j-1)*dn+3}, dim_vec(j, :), 'c'); tmpd = wkeep(cf_vec{(j-1)*dn+4}, dim_vec(j, :), 'c'); tmpv = im2uint8(mat2gray(tmpv)); tmph = im2uint8(mat2gray(tmph)); tmpd = im2uint8(mat2gray(tmpd)); tmpv(1, :) = 255; tmpv(end, :) = 255; tmpv(:, 1) = 255; tmpv(:, end) = 255; tmph(1, :) = 255; tmph(end, :) = 255; tmph(:, 1) = 255; tmph(:, end) = 255; tmpd(1, :) = 255; tmpd(end, :) = 255; tmpd(:, 1) = 255; tmpd(:, end) = 255; tmp = [tmpa,tmpv;tmph,tmpd]; stc = size(tmp); if stc >= dim_vec(j+1, :) tmpa = tmp(1:dim_vec(j+1, 1), 1:dim_vec(j+1,2)); else tmp = tmp([1:end-1, end-2:end-1], [1:end-1, end-2:end-1]); tmpa = tmp(1:dim_vec(j+1, 1), 1:dim_vec(j+1,2)); end tmpa = im2uint8(mat2gray(tmpa)); tmpa(1, :) = 255; tmpa(end, :) = 255; tmpa(:, 1) = 255; tmpa(:, end) = 255; end figure; imshow(tmpa, []); title('小波系数塔式图');
时间: 2023-08-22 09:08:21 浏览: 79
probability.rar_function plot_matlab density plot_probability_pr
这段代码实现了小波系数的塔式图绘制。具体来说,输入参数是小波系数向量 cf_vec 和尺度向量 dim_vec,其中 cf_vec 是一个长度为 (3*L+1) 的单元向量,L 是小波变换的层数。每个单元包含一组小波系数(近似、水平、垂直和对角线),即 cf_vec{1} 为第一层近似系数,cf_vec{2} - cf_vec{4} 为第一层细节系数,cf_vec{5} - cf_vec{7} 为第二层细节系数,以此类推。dim_vec 是一个 (L+1)*2 的矩阵,每行表示每一层小波系数的尺度大小。
在代码中,首先将第一层近似系数画出来,并对其进行边界处理,然后循环遍历每一层细节系数,分别画出其水平、垂直和对角线系数,并将它们与上一层的近似系数拼接在一起,形成一个新的小波系数图像。最后将最后一层的小波系数图像输出并显示。
需要注意的是,在代码中使用了 wkeep 函数对小波系数进行了裁剪,以保证每一层小波系数的尺度大小正确。同时,还对小波系数进行了归一化和转换为 uint8 型,以便于图像显示。
阅读全文