% SHOWLOGFFT - Displays log amplitude spectrum of an fft.
%
% Usage:  showlogfft(ft, figNo)
%
% Arguments:  ft    - Fourier transform to be displayed
%             figNo - Optional figure number to display image in.
%
% The fft is quadrant shifted to place zero frequency at the centre and the
% log of the amplitude displayed (to compress grey values).  An offset of 1
% is added to avoid log(0)
%
% If figNo is omitted a new figure window is created.  If figNo is supplied,
% and the figure exists, the existing window is reused to display the image,
% otherwise a new window is created.

% Copyright (c)  Peter Kovesi
% http://peterkovesi.com/matlabfns/
% 
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
% in the Software without restriction, subject to the following conditions:
% 
% The above copyright notice and this permission notice shall be included in 
% all copies or substantial portions of the Software.
%
% The Software is provided "as is", without warranty of any kind.

% October   1999
% September 2008 Octave compatible
% October   2017 Use log1p rather than log

function showlogfft(im, figNo)

    Octave = exist('OCTAVE_VERSION', 'builtin') == 5; % Are we running under Octave
    Title = inputname(1);      % Get variable name of image data    
        
    if nargin == 2
	figure(figNo);         % Reuse or create a figure window with this number
    else
	figNo = figure;        % Create new figure window
    end

    imagesc(log1p(fftshift(abs(im))+1));
    colormap(gray); title(Title), axis('image')
    if ~Octave; truesize(figNo), end
