You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
770 B
Matlab
31 lines
770 B
Matlab
function [Ihf,Idc,Ion,Ioff,range]=imnorm(I,sigma,gain,leavepadded)
|
|
if nargin<2 || isempty(sigma), sigma=2; end
|
|
if nargin<3 || isempty(gain), gain=2; end
|
|
if nargin<4 || isempty(leavepadded), leavepadded=0; end
|
|
pad=ceil(4.*sigma);
|
|
I=padarray(I,[pad,pad],'symmetric'); %'replicate');
|
|
[a,b]=size(I);
|
|
|
|
g=gauss2D(sigma);
|
|
|
|
Idc=conv2(I,g,'same');
|
|
Ihf=I-Idc; %so I can be reconstructed as I=Idc+Ihf
|
|
%gain=exp(-Idc)
|
|
Ihf=gain.*Ihf;
|
|
%Ihf=tanh(Ihf);
|
|
|
|
range{1}=pad+1:a-pad;
|
|
range{2}=pad+1:b-pad;
|
|
if ~leavepadded
|
|
Ihf=Ihf(range{1},range{2},:);
|
|
Idc=Idc(range{1},range{2},:);
|
|
[a,b]=size(Idc);
|
|
range{1}=1:a;
|
|
range{2}=1:b;
|
|
end
|
|
|
|
Ion=Ihf; Ion(Ion<0)=0;
|
|
Ioff=-Ihf; Ioff(Ioff<0)=0;
|
|
|
|
if iszero(Ihf), disp('WARNING: - imnorm gaussian too small, output entirely low frequency'); end
|