最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

实验3 LZW编码

来源:动视网 责编:小OO 时间:2025-10-03 04:19:00
文档

实验3 LZW编码

实验3LZW编码一、实验目的1了解图像压缩的意义和手段;2熟悉LZW编码的基本性质;3熟练掌握LZW编码的方法与应用;4掌握利用MATLAB编程实现数字图像的LZW编码。二、实验原理LZW算法的词典是根据输入的数据动态创建的。LZW算法先将可能的信源符号创建一个初始词典,然后在编码过程中,遇到词典中没有的短语(信源序列)就加到词典中,动态创建词典。提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。看起来
推荐度:
导读实验3LZW编码一、实验目的1了解图像压缩的意义和手段;2熟悉LZW编码的基本性质;3熟练掌握LZW编码的方法与应用;4掌握利用MATLAB编程实现数字图像的LZW编码。二、实验原理LZW算法的词典是根据输入的数据动态创建的。LZW算法先将可能的信源符号创建一个初始词典,然后在编码过程中,遇到词典中没有的短语(信源序列)就加到词典中,动态创建词典。提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。看起来
实验3 LZW编码

一、实验目的

1了解图像压缩的意义和手段;

2熟悉LZW编码的基本性质;

3熟练掌握LZW编码的方法与应用;

4掌握利用MATLAB编程实现数字图像的LZW编码。

二、实验原理

 LZW算法的词典是根据输入的数据动态创建的。LZW算法先将可能的信源符号创建一个初始词典,然后在编码过程中,遇到词典中没有的短语(信源序列)就加到词典中,动态创建词典。提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。看起来和调色板图象的实现原理差不多,但是应该注意到的是,我们这里的编译表不是事先创建好的,而是根据原始文件数据动态创建的,解码时还要从已编码的数据中还原出原来的编译表.

 

三、实验报告内容

1.用MATLAB编程实现对图像的 LZW编码

2叙述实验过程;

3提交实验的原始图像和结果图像。

解:matlab程序源代码:

建立LZW.m函数

function [S,sz]=LZW(x)

% LZW词典编码

% x为输入序列  S为词典  sz为输出

n = length(x); % 序列长度

S = unique(x); % 初始化词典

x = num2cell(x); % 转化为细胞数组

S = num2cell(S); % 转化为细胞数组

sz = []; % 初始化输出序列

temp = []; % 当前序列

% 开始编码

for i = 1:n

    temp = [temp x{i}]; % 取一个元素放入序列中

    for j = 1:length(S)

        if isequal(S{j},temp)

            flag = 1;

            break;

        else

            flag = 0;

        end

    end

    if flag == 1 % 如果当前序列在词典中

        continue;

    else % 如果当前序列不在词典中

        S = [S temp]; % 将当前序列加入词典

        for j = 1:length(S)

            if isequal(S{j},temp(1:end-1))

                T = j;

                break;

            end

        end

        sz = [sz T];

        temp = temp(end); % 重置temp

    end

end

for j = 1:length(S)

    if isequal(S{j},temp(end))

        T = j;

        break;

    end

end

sz = [sz T]; % 最后一位加入输出

建立main.m主函数

% LZW编码 测试应用于图像压缩中

clear;clc

I = imread();

[m,n] = size(I);

x = double(I(:)'); % 转化格式类型

% LZW编码

[S,sz]=LZW(x);

% LZW解码

A =  [];

for i = 1:length(sz)

    A = [A S{sz(i)}];

end

A = [A zeros(1,m*n-length(A))];

II = reshape(A,m,n);

imshow(uint8(II))

原始图像

结果图像 

四、思考题

1.LZW编码有什么特点?

答:

l)LZW压缩技术对于可预测性不大的数据具有较好的处理效果,常用于TIF格式的图像压缩,其平均压缩比在2:1以上,最高压缩比可达到3:1。

2)对于数据流中连续重复出现的字节和字串,LZW压缩技术具有很高的压缩比。

3)除了用于图像数据处理以外,LZW压缩技术还被用于文本程序等数据压缩领域。

4)LZW压缩技术有很多变体,例如常见的ARC、RKARC、PKZIP高效压缩程序。

5)对于任意宽度和像素位长度的图像,都具有稳定的压缩过程。压缩和解压缩速度较快。

6)对机器硬件条件要求不高,在 Intel 80386的计算机上即可进行压缩和解压缩

2. LZW编码是无损编码还是有损编码?

答:无损编码

文档

实验3 LZW编码

实验3LZW编码一、实验目的1了解图像压缩的意义和手段;2熟悉LZW编码的基本性质;3熟练掌握LZW编码的方法与应用;4掌握利用MATLAB编程实现数字图像的LZW编码。二、实验原理LZW算法的词典是根据输入的数据动态创建的。LZW算法先将可能的信源符号创建一个初始词典,然后在编码过程中,遇到词典中没有的短语(信源序列)就加到词典中,动态创建词典。提取原始文本文件数据中的不同字符,基于这些字符创建一个编译表,然后用编译表中的字符的索引来替代原始文本文件数据中的相应字符,减少原始数据大小。看起来
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top