clc;clear;close all
height = 1024;
width = 1280;
width1 = width;
fid=fopen('bayer_grbg.raw','r');
X1=fread(fid,[width1 height],'uint16');
fclose(fid);
X1 = X1';
X3 = X1;
X1 = bitshift(X1,-4);
% X1 = bitand(X1,255);
% for i=1:1024
% for j=1:1280
% X1(i,j) = 2 ^ (log(X1(i,j)) * 8 / 12 );
% end
% end
X3 = round(X1);
R = zeros(height,width);
G = zeros(height,width);
B = zeros(height,width);
for i = 2 : 2 : height-1
for j = 2 : 2 : width1-1
G(i,j) = X3(i,j);
R(i,j) = round((X3(i-1,j)+X3(i+1,j))/2);
B(i,j) = round((X3(i,j-1)+X3(i,j+1))/2);
end
for j = 3 : 2 : width1-1
B(i,j) = X3(i,j);
G(i,j) = round((X3(i,j+1)+X3(i+1,j)+X3(i-1,j)+X3(i,j-1))/4);
R(i,j) = round((X3(i-1,j-1)+X3(i-1,j+1)+X3(i+1,j-1)+X3(i+1,j+1))/4);
end
end
for i = 1 : 2 : height-1
for j = 2 : 2 : width1-1
R(i,j) = X3(i,j);
if(i-1>=1)
G(i,j) = round((X3(i,j+1)+X3(i+1,j)+X3(i-1,j)+X3(i,j-1))/4);
B(i,j) = round((X3(i-1,j-1)+X3(i-1,j+1)+X3(i+1,j-1)+X3(i+1,j+1))/4);
else
G(i,j) = round((X3(i,j+1)+X3(i,j-1))/2);
B(i,j) = round((X3(i+1,j+1)+X3(i+1,j-1))/2);
end
end
for j = 1 : 2 : width1
G(i,j) = X3(i,j);
if(i-1>=1 && j-1>=1)
R(i,j) = round((X3(i,j-1)+X3(i,j+1))/2);
B(i,j) = round((X3(i-1,j)+X3(i+1,j))/2);
else
R(i,j) = round(X3(i,j+1));
B(i,j) = round(X3(i+1,j));
end
end
end
j = 1;
for i = 2 : 2 : height-1
B(i,j) = X3(i,j);
G(i,j) = round((X3(i-1,j)+X3(i+1,j))/2);
R(i,j) = round((X3(i-1,j+1)+X3(i+1,j+1))/2);
end
j = 1280;
for i = 1 : 2 : height-1
R(i,j) = X3(i,j);
if(i>1)
G(i,j) = round((X3(i-1,j)+X3(i+1,j))/2);
B(i,j) = round((X3(i-1,j-1)+X3(i+1,j-1))/2);
else
G(i,j) = round((X3(i,j-1)+X3(i+1,j))/2);
B(i,j) = round(X3(i+1,j-1));
end
end
j = 1280;
for i = 2 : 2 : height-1
G(i,j) = X3(i,j);
R(i,j) = round((X3(i-1,j)+X3(i+1,j))/2);
B(i,j) = round(X3(i-1,j));
end
i = 1024;
for j = 1 : 2 : width1
B(i,j) = X3(i,j);
if(j>1)
R(i,j) = round((X3(i-1,j-1)+X3(i-1,j+1))/2);
G(i,j) = round((X3(i,j-1)+X3(i,j-1))/2);
else
R(i,j) = round(X3(i-1,j+1));
G(i,j) = round((X3(i-1,j)+X3(i,j+1))/2);
end
end
i = 1024;
for j = 2 : 2 : width1
G(i,j) = X3(i,j);
if(j<width1)
B(i,j) = round((X3(i,j-1)+X3(i,j+1))/2);
R(i,j) = round(X3(i-1,j));
else
B(i,j) = round(X3(i,j-1));
R(i,j) = round(X3(i-1,j));
end
end
R = uint8(R);
G = uint8(G);
B = uint8(B);
RGB = cat(3,R,G,B);
figure;imshow(RGB)
imwrite(RGB,'rgb.bmp','bmp');
- 1
- 2
- 3
- 4
前往页