From f618466c25d43f3bae9e40920273bf77de1e1149 Mon Sep 17 00:00:00 2001 From: leochanj105 Date: Mon, 19 Oct 2020 23:09:30 -0400 Subject: initial sd-vbs initial sd-vbs add sd-vbs sd-vbs --- SD-VBS/common/toolbox/toolbox_basic/io/read422.m | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 SD-VBS/common/toolbox/toolbox_basic/io/read422.m (limited to 'SD-VBS/common/toolbox/toolbox_basic/io/read422.m') diff --git a/SD-VBS/common/toolbox/toolbox_basic/io/read422.m b/SD-VBS/common/toolbox/toolbox_basic/io/read422.m new file mode 100755 index 0000000..31a27f9 --- /dev/null +++ b/SD-VBS/common/toolbox/toolbox_basic/io/read422.m @@ -0,0 +1,45 @@ +function I = read422(fname,nc); +% +% I = read422(fname,width); +% +% read in a .422 file, need to pass image width, default = 640 +% + +% assume image width = 640 +if nargin<2, + nc = 640; +end + +%% find the image size +fid = fopen(fname); +fseek(fid,0,1); +fsize = ftell(fid); + +nr = fsize/nc/2; +fseek(fid,0,-1); + +%% read in Ybr data +data = fread(fid,fsize,'uchar'); + +%%% extract Y, Cb, Cr +Y1 = data(1:2:end); Y1 = reshape(Y1,nc,nr)'; +Cb1 = data(2:4:end); Cb1 = reshape(Cb1,nc/2,nr)'; +Cr1 = data(4:4:end); Cr1 = reshape(Cr1,nc/2,nr)'; + +Cb = zeros(size(Y1)); +Cr = zeros(size(Y1)); + +Cb(:,1:2:end) = Cb1; Cb(:,2:2:end) = Cb1; +%Cb(:,2:2:end) = 0.5*(Cb1+[Cb1(:,2:end),Cb1(:,end)]); + +Cr(:,1:2:end) = Cr1; Cr(:,2:2:end) = Cr1; +%Cr(:,2:2:end) = 0.5*(Cr1+[Cr1(:,2:end),Cr1(:,end)]); + +%%% convert to r,g,b +r = 1.164*(Y1-16.0) + 1.596*(Cr-128.0); +g = 1.164*(Y1-16.0) - 0.813*(Cr-128.0) - 0.391*(Cb-128.0); +b = 1.164*(Y1-16.0) + 2.018*(Cb-128.0); + +I = cat(3,r,g,b); +I = max(0,min(I,255)); +I = I/255; -- cgit v1.2.2