二分香农(范诺编码)——MATLAB实现

本文通过MATLAB实现了二分香农(范诺编码),部分代码如下:

clear;clc;
%% 图像读取处理
pic=[100 56 56 65 128 214 2 2 200 100 100 100 65];
hdz=[100 56 65 128 214 2 135 200];
p=[0.38 0.20 0.14 0.11 0.08 0.04 0.03 0.02];
num=length(pic);
m=1;n=num;

%% 图像编码
[p,c]=sort(p,'descend');
hdz=hdz(c);   
L=length(p);
fg=[1 L+1];   
code=blanks(L)';
cs=1;  %记录处理的次数
while length(fg)~=L+1
    q=qj(fg);  
    for i=1:size(q,1)
        up=q(i,1);   %区间上端
        down=q(i,2); %区间下端
        pin=p(up:down-1);    %得到要处理的区间
        k=divid(pin);   %找到分界点
        k=k+up-1;
        code(up:k-1,cs)='0';
        code(k:down-1,cs)='1'; 
        fg=[fg k];   %更新区间范围
    end
    fg=sort(fg);   
    code=[code,blanks(L)'];   
    cs=cs+1;
end
code_out=[];
for i=1:length(pic)   %对初始图像进行编码
    wz=find(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值