Appendix MATLAB Codes

10 downloads 7102 Views 31KB Size Report
GenSyn; % generate synthetic data. FrameIndex=1:SequenceLength;. InSequence=NoisySequence;. OutSequence=InSequence(3:end-2);.
Appendix MATLAB Codes % % ---- EE392J Final Project ---% % All.m: MC Noise Reduction for B&W Films, major file % % % ZHU Xiaoqing % March, 2002 % % -----------------------------------------% % --- Choose from different video %start=378; %finish=415; %start=7810; %index of frame to start %finish=7840; %number of frames to be processed start=18; %index of frame to start finish=75; %number of frames to be processed %InFileName='america frontier.avi'; InFileName='ggb.avi'; %OutFileName='am_out.avi'; %OutFileName='ggb_out.avi'; % -------- initialize variables -------FrameIndex=start:finish; InSequence=aviread(InFileName,FrameIndex); %read in FileInfo=aviinfo(InFileName); FrameWidth=FileInfo.Width; FrameHeight=FileInfo.Height; BetterSequence=MedianSequence(InSequence,5); OutSequence=BetterSequence; MeCounter=0; BlockSize=8; Threshold=5; SectionNumber=8; SectionHeight=FrameHeight/SectionNumber; SectionWidth=FrameWidth/SectionNumber; %-------- process frame by frame ------CurrentFrameA=ReadSequence(InSequence,1); CurrentFrameB=ReadSequence(BetterSequence,1); ErrAvg(1)=mean(mean(abs(CurrentFrameA-CurrentFrameB)))+eps; NextFrameA=ReadSequence(InSequence,2); NextFrameB=ReadSequence(BetterSequence,2); ErrAvg(2)=mean(mean(abs(NextFrameA-NextFrameB)))+eps; ForwardMVF=zeros(FrameHeight,FrameWidth,2);

%LastFrame => CurrentFrame

BackwardMVF=zeros(FrameHeight,FrameWidth,2); %NextFrame => CurrentFrame for i=2:length(FrameIndex)-1 FrameIndex(i) % indicate frame index in processing LastFrameA=CurrentFrameA; CurrentFrameA=NextFrameA; NextFrameA=ReadSequence(InSequence,i+1); LastFrameB=CurrentFrameB; CurrentFrameB=NextFrameB; NextFrameB=ReadSequence(BetterSequence,i+1); ErrAvg(i+1)=mean(mean(abs(NextFrameA-NextFrameB)))+eps; BetterFrame=CurrentFrameB; ErrFrame=CurrentFrameA-CurrentFrameB; MskFrame=abs(ErrFrame)>15; EdgFrame=edge(ErrFrame,'sobel'); MCMarker=0; LastFrameMC=CurrentFrameB; NextFrameMC=CurrentFrameB;

% -- Sectionwise processing ---for indexI=1:SectionHeight:FrameHeight for indexJ=1:SectionWidth:FrameWidth RangeI=indexI:indexI+SectionHeight-1; RangeJ=indexJ:indexJ+SectionWidth-1; LastSectionA=LastFrameA(RangeI,RangeJ); CurrentSectionA=CurrentFrameA(RangeI,RangeJ); NextSectionA=NextFrameA(RangeI,RangeJ); LastSectionB=LastFrameB(RangeI,RangeJ); CurrentSectionB=CurrentFrameB(RangeI,RangeJ); NextSectionB=NextFrameB(RangeI,RangeJ); % -- Motion/Noise Detection -MotionMarker=0; BlotchMarker=0; ErrSection=ErrFrame(RangeI,RangeJ); EdgSection=EdgFrame(RangeI,RangeJ); MskSection=abs(ErrSection)>15; Err=mean(mean(abs(ErrSection)))+eps; % MAE Msk=mean(mean(MskSection)); %percentage of real' ' change, excluding small noise Edg=mean(mean(EdgSection)); if Err/ErrAvg(i)>1.1 & Msk>.02 % detect change ErrLA=mean(mean(abs(LastSectionA-CurrentSectionA)))+eps; ErrNA=mean(mean(abs(NextSectionA-CurrentSectionA)))+eps; ErrLNA=mean(mean(abs(LastSectionA-NextSectionA)))+eps; ErrLB=mean(mean(abs(LastSectionB-CurrentSectionB)))+eps; ErrNB=mean(mean(abs(NextSectionB-CurrentSectionB)))+eps; ErrLNB=mean(mean(abs(LastSectionB-NextSectionB)))+eps; if abs(ErrLA*ErrLNB/ErrLNA/ErrLB-1)