复制
收藏
提问
简洁
% test6_3.m % 四叉树分解 clear; close all; clc; I = imread('rice.tif'); %读入原图像 figure; subplot(121); imshow(I); title('原图') %选取阈值为0.2,对原始图像进行四叉树分解 S = qtdecomp(I,0.2); %原始的稀疏矩阵转换为普通矩阵,使用full函数 S2 = full(S); subplot(122); imshow(S2); title('四叉树分解'); ct = zeros(6, 1); %记录子块数目的列向量 % 分别获得不同大小块的信息,子块内容保存在三维数组vals1~val6中,子块数目保存在ct向量中 for ii = 1:6 [vals{ii},r,c] = qtgetblk(I,S2,2^(ii-1)); ct(ii) = size(vals{ii},3); end修改程序,使用 coins.png 图像并缩放为 256*256 后进行运算
3月前
全网
文档
学术
百科
知识库
回答简洁模式
深入研究一些
根据您提供的代码和参考资料,以下是修改后的程序,使用coins.png
图像并将其缩放为256*256像素后进行四叉树分解的步骤:
% test6_3.m
% 四叉树分解
clear; close all; clc;
% 读入coins.png图像
I = imread('coins.png');
% 将图像缩放为256*256像素
I_resized = imresize(I, [256 256]);
figure;
subplot(121); imshow(I_resized); title('原图');
% 选取阈值为0.2,对缩放后的图像进行四叉树分解
S = qtdecomp(I_resized, 0.2);
% 原始的稀疏矩阵转换为普通矩阵,使用full函数
S2 = full(S);
subplot(122); imshow(S2); title('四叉树分解');
% 初始化记录子块数目的列向量
ct = zeros(6, 1);
% 分别获得不同大小块的信息,子块内容保存在三维数组vals1~val6中,子块数目保存在ct向量中
for ii = 1:6
[vals{ii}, r, c] = qtgetblk(I_resized, S2, 2^(ii-1));
ct(ii) = size(vals{ii}, 3);
end
请注意,此代码段假设您已经定义了qtdecomp
和qtgetblk
函数,这些函数用于执行四叉树分解和获取分解后的子块。如果您没有这些函数,您需要从相应的库中导入它们或自行实现这些功能。
此外,imresize
函数用于调整图像大小,确保图像的尺寸符合四叉树分解的要求。在subplot
函数中,我们使用imshow
来显示原始图像和四叉树分解后的图像,并添加了相应的标题以便于区分。1234567
你觉得结果怎么样?