convert RGB image to a 2x2 [GR;BG] Bayer pattern

% MAKE_BAYER convert RGB image to a 2x2 [GR;BG] Bayer pattern
%
%       Ibayer = make_bayer(Irgb);
%
% Assignment 1 - sample code.

function Ibay = make_bayer(Irgb)

% NOTE: the bayer pattern here is thre 2x2 repeating
% pattern [ B G ; G R ] that is:
%
%   BGBGBGBGBGBGBGBGBGBG ...etc...
%   GRGRGRGRGRGRGRGRGRGR ...etc...
%   BGBGBGBGBGBGBGBGBGBG ...etc...
%   ........................etc...
%
% This pattern is ordered DIFFERENTLY to the one shown in the notes
% but the reconstruction scheme as per lecture 1 would be the same.

% convert if array is type uint8

clc;
clear;
close all;
I=imread('5.jpg');
if (isa(I,'uint8'))
   I=double(I)/255;
 end
 % create output array
 Ibay = zeros(size(I,1),size(I,2));
 % copy over colors according to [GR;BG] pattern
 Ibay(1:2:end,1:2:end) = I(1:2:end,1:2:end,3); % copy BLUE channel data
 Ibay(2:2:end,2:2:end) = I(2:2:end,2:2:end,1); % copy RED channel data
 Ibay(2:2:end,1:2:end) = I(2:2:end,1:2:end,2); % copy GREEN channel
 Ibay(1:2:end,2:2:end) = I(1:2:end,2:2:end,2); % copy GREEN channel
    imshow(Ibay);


原图:

 

处理后的图:

posted @ 2012-07-11 21:49  小鸡蛋的理想  阅读(684)  评论(0)    收藏  举报