corrdn.m

来自「matlab的steel金字塔小波分解源代码」· M 代码 · 共 64 行

M
64
字号
% RES = corrDn(IM, FILT, EDGES, STEP, START, STOP)%% Compute correlation of matrices IM with FILT, followed by% downsampling.  These arguments should be 1D or 2D matrices, and IM% must be larger (in both dimensions) than FILT.  The origin of filt% is assumed to be floor(size(filt)/2)+1.% % EDGES is a string determining boundary handling:%    'circular' - Circular convolution%    'reflect1' - Reflect about the edge pixels%    'reflect2' - Reflect, doubling the edge pixels%    'repeat'   - Repeat the edge pixels%    'zero'     - Assume values of zero outside image boundary%    'extend'   - Reflect and invert%    'dont-compute' - Zero output when filter overhangs input boundaries%% Downsampling factors are determined by STEP (optional, default=[1 1]), % which should be a 2-vector [y,x].% % The window over which the convolution occurs is specfied by START % (optional, default=[1,1], and STOP (optional, default=size(IM)).% % NOTE: this operation corresponds to multiplication of a signal% vector by a matrix whose rows contain copies of the FILT shifted by% multiples of STEP.  See upConv.m for the operation corresponding to% the transpose of this matrix.% Eero Simoncelli, 6/96, revised 2/97.function res = corrDn(im, filt, edges, step, start, stop)%% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD)fprintf(1,'WARNING: You should compile the MEX version of "corrDn.c",\n         found in the MEX subdirectory of matlabPyrTools, and put it in your matlab path.  It is MUCH faster, and provides more boundary-handling options.\n');%------------------------------------------------------------%% OPTIONAL ARGS:if (exist('edges') == 1)   if (strcmp(edges,'reflect1') ~= 1)    warning('Using REFLECT1 edge-handling (use MEX code for other options).');  endendif (exist('step') ~= 1)	step = [1,1];end	if (exist('start') ~= 1)	start = [1,1];end	if (exist('stop') ~= 1)	stop = size(im);end	%------------------------------------------------------------% Reverse order of taps in filt, to do correlation instead of convolutionfilt = filt(size(filt,1):-1:1,size(filt,2):-1:1);tmp = rconv2(im,filt);res = tmp(start(1):step(1):stop(1),start(2):step(2):stop(2));

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?