clc; clear; close all; [filename,pathname]=uigetfile({'*.*','All Files (*.*)'},'Pick a file'); file = strcat(pathname,filename); % raw圖的尺寸 row = 30; col = 72; % 讀圖 所讀raw圖為8位 fid=fopen(file, 'r'); Bayer=fread(fid,[row,col],'uint8'); fclose(fid); % 轉換到RGB空間 RGB_Pro=raw2rgb(Bayer,row,col); % 轉換為RGB圖像 % 顯示 figure;imshow(RGB_Pro); YUVimg = rgb2ycbcr(RGB_Pro); %%% rgb -> yuv figure;imshow((YUVimg));
=================================================================================
function RGB_Pro=raw2rgb(Bayer,row,col) % 從bayer圖像,用shift方法恢復RGB圖像 RGB_Pro=zeros(col,row,'uint8'); for m=1 : 2 :row for n=1:2:col RGB_Pro(n,m,3)=Bayer(m+1,n); RGB_Pro(n,m,2)=Bayer(m,n)/2+Bayer(m+1,n+1)/2; RGB_Pro(n,m,1)=Bayer(m,n+1); end end for m=1 : 2 :row for n=2:2:col-1 RGB_Pro(n,m,3)=Bayer(m+1,n+1); RGB_Pro(n,m,2)=Bayer(m+1,n)/2+Bayer(m,n+1)/2; RGB_Pro(n,m,1)=Bayer(m,n); end end for m=2 : 2 :row-1 for n=1:2:col RGB_Pro(n,m,3)=Bayer(m,n); RGB_Pro(n,m,2)=Bayer(m+1,n)/2+Bayer(m,n+1)/2; RGB_Pro(n,m,1)=Bayer(m+1,n+1); end end for m=2 : 2 :row-1 for n=2:2:col-1 RGB_Pro(n,m,3)=Bayer(m,n+1); RGB_Pro(n,m,2)=Bayer(m,n)/2+Bayer(m+1,n+1)/2; RGB_Pro(n,m,1)=Bayer(m+1,n); end end