图像通信第三章课后知识题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.设有离散无记忆信源{a0,a1,a2,a3,a4,a5,a6},包含每个字符ai的概率P(ai)如下表所示:
(1)计算该信源的熵;
(2)用霍夫曼编码方法对此信源进行编码;
(3)计算平均码长,并讨论霍夫曼编码性能。
2.有4个符号a1,a2,a3,a4,概率分别为P1=0.4,P2=0.25,P3=0.25,P4=0.1,试对由以上四个符号组成的符号序列“a2a1a3a4”进行算术编码及解码。
3.设有4个一位的符号序列在LPS和MPS中交替变化且Qe=0.1,如下表:
对上表中的符号序列进行QM编码和解码。
4.DCT变换本身能不能压缩数据,为什么?请说明DCT变换编码的原理。
5.请说明预测编码的原理,并画出DPCM编、解码的原理框图。
6.设有如下图所示的8x8图像块f(m,n)
(1)计算该图像的熵;
>>f=[4,4,4,4,4,4,4,4;4,5,5,5,5,5,4,3;4,5,6,6,6,5,4,3;4,5,6,7,6,5,4,3;4,5,6,6,6,5, 4,3;4,5,5,5,5,5,4,3;4,4,4,4,4,4,4,3;4,4,4,4,4,4,4,3]
f =
4 4 4 4 4 4 4 4
4 5 5 5 5 5 4 3
4 5 6 6 6 5 4 3
4 5 6 7 6 5 4 3
4 5 6 6 6 5 4 3
4 5 5 5 5 5 4 3
4 4 4 4 4 4 4 3
4 4 4 4 4 4 4 3
>> temp=zeros(1,256);
>> for m=1:8;
for n=1:8;
if f(m,n)==0;
i=1;
else
i=f(m,n);
end
temp(i)=temp(i)+1;
end
end
temp=temp./(8*8);
>> H=0;
for i=1:length(temp)
if temp(i)==0;
H=H;
else
H=H-temp(i)*log2(temp(i)); end
end
>> H
H =
1.8179
Matlab实现截图:
(2)对该图像作前值预测(即列差值,区域外像素值取零):,试给出误差图像及其熵值;
>>f=[4,4,4,4,4,4,4,4;4,5,5,5,5,5,4,3;4,5,6,6,6,5,4,3;4,5,6,7,6,5,4,3;4,5,6,6,6,5, 4,3;4,5,5,5,5,5,4,3;4,4,4,4,4,4,4,3;4,4,4,4,4,4,4,3]
f =
4 4 4 4 4 4 4 4
4 5 5 5 5 5 4 3
4 5 6 6 6 5 4 3
4 5 6 7 6 5 4 3
4 5 6 6 6 5 4 3
4 5 5 5 5 5 4 3
4 4 4 4 4 4 4 3
4 4 4 4 4 4 4 3
>> m=1:8;
. >> n=2:8;
>> f1(m,1)=0;
>> f1(m,n)=f(m,n-1)
f1 =
0 4 4 4 4 4 4 4
0 4 5 5 5 5 5 4
0 4 5 6 6 6 5 4
0 4 5 6 7 6 5 4
0 4 5 6 6 6 5 4
0 4 5 5 5 5 5 4
0 4 4 4 4 4 4 4
0 4 4 4 4 4 4 4
>> temp1=zeros(1,256);
>> for m=1:8;
for n=1:8;
if f1(m,n)==0;
i=1;
else
i=f1(m,n);
end
.
temp1(i)=temp1(i)+1;
end
end
temp1=temp1./(8*8);
>> H1=0;
for i=1:length(temp1)
if temp1(i)==0;
H1=H1;
else
H1=H1-temp1(i)*log2(temp1(i));
end
end
>> H1
H1 =
1.8503
Matlab截图:
(3)对该图像块再作行差值;,再给出误差图像及其熵值;>> m=2:8;
>> n=1:8;
>> e(1,n)=0;
>> e(m,n)=f1(m-1,n)
e =
0 0 0 0 0 0 0 0
0 4 4 4 4 4 4 4
0 4 5 5 5 5 5 4
0 4 5 6 6 6 5 4
0 4 5 6 7 6 5 4
0 4 5 6 6 6 5 4
0 4 5 5 5 5 5 4
0 4 4 4 4 4 4 4 >> temp2=zeros(1,256);
>> for m=1:8;
for n=1:8;
if e(m,n)==0;
i=1;
else
i=e(m,n);
end
temp2(i)=temp2(i)+1;
end
end
temp2=temp2./(8*8);
>> H2=0;
for i=1:length(temp2)
if temp2(i)==0;
H2=H2;