www.gusucode.com > visionhdl 源码程序 matlab案例代码 > visionhdl/DemosaicSysObjExample.m
%% Demosaic a Bayer Pattern Image % This example constructs full RGB pixel data from a Bayer pattern thumbnail % image. %% % Set the dimensions of the test image. Load the source image file. This % image is in Bayer pattern: each pixel is represented by one value, % alternating green values with red and blue values. Then select a portion % of the image matching the desired test size. These offsets select the face % of the woman in the image. frmActivePixels = 256; frmActiveLines = 192; frmOrig = imread('mandi.tif'); frmInput = frmOrig(900:899+frmActiveLines, 2350:2349+frmActivePixels); figure imshow(frmInput) title 'Input Image' %% % Create a serializer object and specify size of the inactive pixel % regions. frm2pix = visionhdl.FrameToPixels(... 'NumComponents',1,... 'VideoFormat','custom',... 'ActivePixelsPerLine',frmActivePixels,... 'ActiveVideoLines',frmActiveLines,... 'TotalPixelsPerLine',frmActivePixels+10,... 'TotalVideoLines',frmActiveLines+10,... 'StartingActiveLine',6,... 'FrontPorch',5); %% % Create an interpolator object. Specify the sequence of color values % matching the 2-by-2 pixels in the top-left corner of the image. BayerInterpolator = visionhdl.DemosaicInterpolator(... 'SensorAlignment', 'RGGB'); %% % Serialize the test image. |pixIn| is a vector of pixel values. |ctrlIn| is % a vector of control signal structures. [pixIn,ctrlIn] = step(frm2pix,frmInput); %% % Set up variables, and generate the {R,G,B} triplet for each pixel in the % stream. This example prints a progress message every 32 lines. [pixels,lines,numPixelsPerFrame] = getparamfromfrm2pix(frm2pix); ctrlOut = repmat(pixelcontrolstruct,numPixelsPerFrame,1); pixOut = zeros(numPixelsPerFrame,3,'uint8'); lineCount = 1; for p = 1:numPixelsPerFrame if ctrlIn(p).hEnd lineCount = lineCount+1; if mod(lineCount,32)==0 fprintf('Processing... line %d\n',lineCount); end end [pixOut(p,:),ctrlOut(p)] = step(BayerInterpolator,pixIn(p),ctrlIn(p)); end %% % Create a deserializer object with a format matching that of the % serializer. Convert the pixel stream to an image frame, and display the % result. pix2frm = visionhdl.PixelsToFrame(... 'NumComponents',3,... 'VideoFormat','custom',... 'ActivePixelsPerLine',frmActivePixels,... 'ActiveVideoLines',frmActiveLines); [frmOutput,frmValid] = step(pix2frm,pixOut,ctrlOut); if frmValid figure imshow(frmOutput) title 'Output Image' end