错误使用重塑的元素数量不能改变。使用[]的输入自动计算合适的大小尺寸。
37视图(30天)
显示旧的评论
我想视频编码比特然后添加错误的概率解码一遍但是当我解码时出现这个错误扭转数据包的一步
这是完整的代码
clc
关闭所有
清晰的所有
obj = VideoReader (“Stephan.avi”);
=阅读(obj);
帧=得到(obj,“NumberOfFrames”);
为我= 1:框架
我(我).cdata =(::,:,我);
结束
s =大小(I (1) .cdata);
mov(1:帧)=结构(cdata的,0 (1),(2),3,“uint8”),“colormap”[]);
为帧= 1:296
%红色框架的组件
R =我(帧).cdata (:,: 1);
%绿色框架的组件
G =我(帧).cdata (:,:, 2);
%蓝色框架的组件
B =我(帧).cdata (:,:, 3);
结束
Rdouble =双(R);
Gdouble =双(G);
Bdouble =双(B);
Rbin = de2bi (Rdouble);
Gbin = de2bi (Gdouble);
Bbin = de2bi (Bdouble);
Rr =重塑(Rbin 1刺激(大小(Rbin)));%我们重塑把红色作为流1行
Gr =重塑(Gbin 1刺激(大小(Gbin)));%我们重塑把绿色作为流1行
Br =重塑(Bbin 1刺激(大小(Bbin)));%我们重塑把蓝色的流1行
pcksize = 1024;
noofpckts = 101376 * 8 / pcksize;
Rpck =重塑(Rbin [noofpckts pcksize]);
Gpck =重塑(Gbin [noofpckts pcksize]);
Bpck =重塑(Bbin [noofpckts pcksize]);
%格子= poly2trellis (ConstraintLength CodeGenerator)
格子= poly2trellis (7, (135 135 147 163));
为我= 1:noofpckts
Rcoded = convenc (Rpck(我:),格子);
Gcoded = convenc (Gpck(我:),格子);
Bcoded = convenc (Bpck(我:),格子);
一个= 0.0001;
b = 0.2;
p =兰特(1,1)* (b) +;
Rerror =二元同步通信(Rcoded p);
Gerror =二元同步通信(Gcoded p);
Berror =二元同步通信(Bcoded p);
tbdepth = 34;
tbdepth Rdecoded = vitdec (Rerror,格子,“trunc”,“硬”);
tbdepth Gdecoded = vitdec (Gerror,格子,“trunc”,“硬”);
tbdepth Bdecoded = vitdec (Berror,格子,“trunc”,“硬”);
Rnpck =重塑(Rdecoded [pcksize noofpckts]);
Gnpck =重塑(Gdecoded [pcksize noofpckts]);
Bnpck =重塑(Bdecoded [pcksize noofpckts]);
Rr =重塑(Rnpck 8 prod(大小(Rnpck)));
Gr =重塑(Gnpck 8 prod(大小(Gnpck)));
Br =重塑(Bnpck 8 prod(大小(Bnpck)))
Rn = bin2dec (Rr);
Gn = bin2dec (Gr);
Bn = bin2dec (Br);
Rd.ToDouble ();
Gd.ToDouble ();
Bd.ToDouble ();
结束
为i = 1:296
mov (i) .cdata (:,: 1) = Rd;
mov (i) .cdata (:,: 2) = Gd;
mov (i) .cdata(:,:, 3) =双相障碍;
结束
%写作的视频
视频= VideoWriter (“channnelzft.avi”,未压缩的AVI的);
开放(视频);
writeVideo(视频、mov);
关闭(视频);
0评论
答案(2)
沃尔特·罗伯森
2023年5月23日20:11
Rbin = de2bi (Rdouble);
相当于
Rbin = de2bi (Rdouble (:));
输出的大小将元素个数(Rdouble) max(装天花板(log2 (Rdouble + 1),[], '所有'),右边的表达式是最低所需的比特数来表示二进制最大的价值。这将不
一定
是8位/条目,根据价值——例如如果红色组件的形象都是0,那么只有1列Rbin所需的比特会
Rr =重塑(Rbin 1刺激(大小(Rbin)))
你可以更容易的代码
Rr =重塑(Rbin 1 []);
pcksize = 1024;
noofpckts = 101376 * 8 / pcksize;
Rpck =重塑(Rbin [noofpckts pcksize]);
假设一个固定的数组大小的视频,并假设R, G, B都充分利用8位/组件。