📄 psf.m
字号:
% PSF - Generates point spread functions for use with deconvolution fns.%% This function can generate a variety function shapes based around the% Butterworth filter. In plan view the filter can be elliptical and at% any orientation. The `squareness/roundness' of the shape can also be% manipulated.%% Usage: h = psf(sze, order, ang, eccen, rc, sqrness)%% sze - two element array specifying size of filter [rows cols]% order - an even integer specifying the order of the Butterworth filter.% This controls the sharpness of the cutoff.% ang - angle of rotation of the filter in radians% eccen - ratio of eccentricity of the filter shape (major/minor axis ratio)% rc - mean radius of the filter in pixels% sqrness - even integer specifying `squareness' of the filter shape% a value of 2 gives a circular filter (if eccen = 1), higher% values make the shape squarer. % Copyright (c) 1999 Peter Kovesi% School of Computer Science & Software Engineering% The University of Western Australia% http://www.csse.uwa.edu.au/% % 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.% June 1999function h = psf(sze, order, ang, eccen, rc, sqrness) if mod(sqrness,2) ~=0 error('squareness parameter must be an even integer'); end rows = sze(1); cols = sze(2); x = ones(rows,1) * [1:cols] - (fix(cols/2)+1); y = [1:rows]' * ones(1,cols) - (fix(rows/2)+1); xp = x*cos(ang) - y*sin(ang); % Rotate axes by specified angle. yp = x*sin(ang) + y*cos(ang); x = sqrt(eccen)*xp; % Distort x and y according to eccentricity. y = yp/sqrt(eccen); radius = (x.^sqrness + y.^sqrness).^(1/sqrness); % Distort distance metric % by squareness measure. h = 1./(1+(radius./rc).^order); % Butterworth filter h = h./(sum(sum(h))); % and normalise.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -