g_res.m 2.08 KB
``````function res = g_res_field(LON, LAT, field)
% g_res_field - Function calculating the loss of resolution with de distance
% from the camera
%
% Inputs:
%
%    LON   : Longitude matrix obtained from g_rect
%    LAT   : Latitude matrix obtained from g_rect
%    field : 'true' for field case. 'false' for lab case.
%
% Outputs:
%
%    res : The field of resolution which is degrading with distance from
%    the camera
%
% Author: Daniel Bourgault
%         Institut des sciences de la mer de Rimouski
%
% email: daniel_bourgault@uqar.ca
% Website: http://demeter.uqar.ca/g_rect/
% February 2013
%
% Author: Elie Dumas-Lefebvre
%         Institut des Science de la Mer de Rimouski
%
% Note: Matricial formulation of the calculation for a faster execution
%
% email: elie.dumas-lefebvre@uqar.ca
% March 2019
%

% LAT and LON difference in the x-axis
dLATi = diff(LAT, 1, 2);
dLONi = diff(LON, 1, 2);

% LAT and LON difference in the y-axis
dLATj = diff(LAT, 1, 1);
dLONj = diff(LON, 1, 1);

% Mean LAT in both x and y axis
LAT_meani = 0.5*(LAT(:, 2:end) + LAT(:, 1:end-1));
LAT_meanj = 0.5*(LAT(2:end, :) + LAT(1:end-1, :));

% Add a point at boundaries such that the resolution matrix
% has the same size of the LAT LON matrices
dLATi(:,end+1)     = dLATi(:,end);
dLONi(:,end+1)     = dLONi(:,end);
dLATj(end+1,:)     = dLATj(end,:);
dLONj(end+1,:)     = dLONj(end,:);
LAT_meani(:,end+1) = LAT_meani(:,end);
LAT_meanj(end+1,:) = LAT_meani(end,:);

% Conversion from degree to meters
meterPerDegLat  = 1852*60.0;
meterPerDegLoni = meterPerDegLat.*cosd(LAT_meani);
meterPerDegLonj = meterPerDegLat.*cosd(LAT_meanj);

if field

% Conversion from degrees to meters
dxi = dLONi.*meterPerDegLoni;
dxj = dLONj.*meterPerDegLonj;
dyi = dLATi.*meterPerDegLat;
dyj = dLATj.*meterPerDegLat;

else

% Lab case. Data are already in meters. No conversion required.
dxi = dLONi;
dxj = dLONj;
dyi = dLATi;
dyj = dLATj;

end

% Distances in x and y axis
deltai = sqrt(dxi.^2 + dyi.^2);
deltaj = sqrt(dxj.^2 + dyj.^2);

% field of resolution
res = sqrt(deltai.^2 + deltaj.^2);

end``````