Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

Correct

43Size
This is the leading solution.
This solution is locked. To view this solution, you need to provide a solution of the same size or smaller.

Test Suite

Test
Code Input and Output
1
Pass
 
%%
% High Image Signal : Vignetted Image Appears Normal
 load penny.mat;
 Timg=double(P); % P is Matlab demo file upon load
 Timg=Timg+200;
 [nr nc]=size(Timg);
%  rmin=min(Timg(:));
%  rmax=max(Timg(:));
%  figure(1);imagesc(Timg,[rmin rmax]);colormap gray;axis equal
 offset=zeros(1,nc);
 obscuration=offset;
 widthL=20;
 widthR=15;
 maxobsL=.20;
 maxobsR=.15;
 % ObscurationLinear
 obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL;
 obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR;
% Create a Low Signal NF only
 LowSig=30;
 VignetteSig=200;
 NF_V=VignetteSig*obscuration;
 LCal=NF_V+LowSig;
%  figure(2),plot(LCal)
 Cimg=Timg.*repmat((1-obscuration),nr,1)+repmat(NF_V,nr,1);
% figure(3);imagesc(Cimg,[rmin rmax]);colormap gray;axis equal
Fimg=Vignette_fix(Cimg,LCal);
%Perform Tolerance Check
tolerance=[0.01 1];
 Pass=1;
 % Hi check
 tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg;
 if min(tcheck(:))<0,Pass=0;end
 % Lo check
 tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2));
 if min(tcheck(:))<0,Pass=0;end
assert(isequal(Pass,1))
[Warning: Matrix is singular to working precision.]
[> In Vignette_fix at 4
  In verifyCode>evaluateCode at 227
  In verifyCode at 40
  In fevalJSON at 14]
2
Pass
 
%%
% Low Image Signal : Typical Vignette Positive Edges
 load penny.mat;
 Timg=double(P);
 Timg=Timg+50;
 [nr nc]=size(Timg);
%  rmin=min(Timg(:));
%  rmax=max(Timg(:));
%  figure(1);imagesc(Timg,[rmin rmax]);colormap gray;axis equal
 offset=zeros(1,nc);
 obscuration=offset;
 widthL=24;
 widthR=16;
 maxobsL=.16;
 maxobsR=.20;
 % ObscurationLinear
 obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL;
 obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR;
% Create a Low Signal NF only
 LowSig=30;
 VignetteSig=600;
 NF_V=VignetteSig*obscuration;
 LCal=NF_V+LowSig;
% figure(2),plot(LCal)
 Cimg=Timg.*repmat((1-obscuration),nr,1)+repmat(NF_V,nr,1);
% figure(3);imagesc(Cimg,[rmin rmax]);colormap gray;axis equal
% Execute
Fimg=Vignette_fix(Cimg,LCal);
%Perform Tolerance Check
tolerance=[0.01 1];
 Pass=1;
 % Hi check
 tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg;
 if min(tcheck(:))<0,Pass=0;end
 % Lo check
 tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2));
 if min(tcheck(:))<0,Pass=0;end
assert(isequal(Pass,1))
[Warning: Matrix is singular to working precision.]
[> In Vignette_fix at 4
  In verifyCode>evaluateCode at 227
  In verifyCode at 40
  In fevalJSON at 14]
3
Pass
 
%%
% Low Image Signal : Typical Vignette Positive Edges
 load penny.mat;
 Timg=double(P);
 Timg=Timg+50;
 [nr nc]=size(Timg);
%  rmin=min(Timg(:));
%  rmax=max(Timg(:));
%  figure(1);imagesc(Timg,[rmin rmax]);colormap gray;axis equal
 offset=zeros(1,nc);
 obscuration=offset;
 widthL=16;
 widthR=12;
 maxobsL=.08;
 maxobsR=.12;
 % ObscurationLinear
 obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL;
 obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR;
% Create a Low Signal NF only
 LowSig=30;
 VignetteSig=600;
 NF_V=VignetteSig*obscuration;
 LCal=NF_V+LowSig;
% figure(2),plot(LCal)
 Cimg=Timg.*repmat((1-obscuration),nr,1)+repmat(NF_V,nr,1);
% figure(3);imagesc(Cimg,[rmin rmax]);colormap gray;axis equal
% Execute
Fimg=Vignette_fix(Cimg,LCal);
%Perform Tolerance Check
tolerance=[0.01 1];
 Pass=1;
 % Hi check
 tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg;
 if min(tcheck(:))<0,Pass=0;end
 % Lo check
 tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2));
 if min(tcheck(:))<0,Pass=0;end
assert(isequal(Pass,1))
[Warning: Matrix is singular to working precision.]
[> In Vignette_fix at 4
  In verifyCode>evaluateCode at 227
  In verifyCode at 40
  In fevalJSON at 14]
4
Pass
 
%%
% High Signal : Negative Edge Appearance
 load penny.mat;
 Timg=double(P);
 Timg=Timg+800;
 [nr nc]=size(Timg);
%  rmin=min(Timg(:));
%  rmax=max(Timg(:));
%  figure(1);imagesc(Timg,[rmin rmax]);colormap gray;axis equal
 offset=zeros(1,nc);
 obscuration=offset;
 widthL=16;
 widthR=14;
 maxobsL=.08;
 maxobsR=.18;
 % ObscurationLinear
 obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL;
 obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR;
% Create a Low Signal NF only
 LowSig=30;
 VignetteSig=600;
 NF_V=VignetteSig*obscuration;
 LCal=NF_V+LowSig;
% figure(2),plot(LCal)
 Cimg=Timg.*repmat((1-obscuration),nr,1)+repmat(NF_V,nr,1);
% figure(3);imagesc(Cimg,[rmin rmax]);colormap gray;axis equal
% Execute
Fimg=Vignette_fix(Cimg,LCal);
%Perform Tolerance Check
tolerance=[0.01 1];
 Pass=1;
 % Hi check
 tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg;
 if min(tcheck(:))<0,Pass=0;end
 % Lo check
 tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2));
 if min(tcheck(:))<0,Pass=0;end
assert(isequal(Pass,1))
[Warning: Matrix is singular to working precision.]
[> In Vignette_fix at 4
  In verifyCode>evaluateCode at 227
  In verifyCode at 40
  In fevalJSON at 14]
5
Pass
 
%%
Timg = double(imread('concordorthophoto.png')); % Matlab full image
 Timg=Timg(1:512,1:512);
 Timg=Timg+400; % Nominal 20
 [nr nc]=size(Timg);
%  rmin=min(Timg(:));
%  rmax=max(Timg(:));
%  figure(1);imagesc(Timg,[rmin rmax]);colormap gray;axis equal
 offset=zeros(1,nc);
 obscuration=offset;
 widthL=48;
 widthR=40;
 maxobsL=.2; % chan 1 Vig = 0.1842
 maxobsR=.15; % Chan 512 Vig = 0.1359
 % Obscuration 4th order
 obscuration(1:1+widthL)=maxobsL*(((1:1+widthL)-(1+widthL)).^4/(widthL+1)^4);
 obscuration(end-widthR:end)=maxobsR*(((widthR+1:-1:1)-(1+widthR)).^4/(widthR+1)^4);
% Create a Low Signal NF only
 LowSig=30;
 VignetteSig=1500;
 NF_V=VignetteSig*obscuration;
 LCal=NF_V+LowSig;
% figure(2),plot(LCal)
 Cimg=Timg.*repmat((1-obscuration),nr,1)+repmat(NF_V,nr,1);
% figure(3);imagesc(Cimg,[rmin rmax]);colormap gray;axis equal
% Execute
Fimg=Vignette_fix(Cimg,LCal);
%Perform Tolerance Check
tolerance=[0.01 1];
 Pass=1;
 % Hi check
 tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg;
 if min(tcheck(:))<0,Pass=0;end
 % Lo check
 tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2));
 if min(tcheck(:))<0,Pass=0;end
assert(isequal(Pass,1))
[Warning: Matrix is singular to working precision.]
[> In Vignette_fix at 4
  In verifyCode>evaluateCode at 227
  In verifyCode at 40
  In fevalJSON at 14]
6
Pass
 
%%
 Timg = double(imread('concordorthophoto.png')); % Matlab full image
 Timg=Timg(1600:2111,900:1411);
 Timg=Timg+300;
 [nr nc]=size(Timg);
%  rmin=min(Timg(:));
%  rmax=max(Timg(:));
%  figure(1);imagesc(Timg,[rmin rmax]);colormap gray;axis equal
 offset=zeros(1,nc);
 obscuration=offset;
 widthL=42;
 widthR=36;
 maxobsL=.18; %
 maxobsR=.23; %
 % Obscuration Linear
 obscuration(1:1+widthL)=maxobsL*(widthL-(0:widthL))/widthL;
 obscuration(end:-1:end-widthR)=maxobsR*(widthR-(0:widthR))/widthR;
% Create a Low Signal NF only
 LowSig=50;
 VignetteSig=1200;
 NF_V=VignetteSig*obscuration;
 LCal=NF_V+LowSig;
 %figure(2),plot(LCal)
 Cimg=Timg.*repmat((1-obscuration),nr,1)+repmat(NF_V,nr,1);
 %figure(3);imagesc(Cimg,[rmin rmax]);colormap gray;axis equal
% Execute
Fimg=Vignette_fix(Cimg,LCal);
%Perform Tolerance Check
tolerance=[0.01 1];
 Pass=1;
 % Hi check
 tcheck=(Timg*(1+tolerance(1))+tolerance(2))-Fimg;
 if min(tcheck(:))<0,Pass=0;end
 % Lo check
 tcheck=Fimg-(Timg*(1-tolerance(1))-tolerance(2));
 if min(tcheck(:))<0,Pass=0;end
assert(isequal(Pass,1))
[Warning: Matrix is singular to working precision.]
[> In Vignette_fix at 4
  In verifyCode>evaluateCode at 227
  In verifyCode at 40
  In fevalJSON at 14]