function varargout = FiltreOrdre1D(varargin) % Filtrage spatial non linéaire par statistique d'ordre 1D % Traitement marginal des images à P plans % % INPUT: % - image PxQ % - cell array des paramètres : % + opération : 'min' | 'max' | 'median' % + dimension N pour un masque de taille (2N+1,2N+1) % % OUTPUT: % - image PxQ % % INFOS: % - gestion des bords par méthode du zéro % % Plugin for OpenIsaac % version 1 % © 2011-2018 Clément - Université d'Angers %--------------------------------------------------------------------------------------------------- % Copyright 2007 - 2018 Université d'Angers - Author: Alain Clément % % This program is free software; you can redistribute it and/or modify it under the terms of the GNU % General Public License as published by the Free Software Foundation; either version 3 of the % License, or any later version. This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A % PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received % a copy of the GNU General Public License along with this program; if not, write to the Free % Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. %--------------------------------------------------------------------------------------------------- % PLUGIN PARAMETERS if (nargin == 1) && strcmp(varargin{1},'-f') % input varargout{1} = {'IMG','image source', ... 'DATA','cell array des paramètres'}; % output varargout{2} = {'IMG','image résultat'}; return end % INPUT ObjIMG = varargin{1}; DataVal = IsaacDATA_get(varargin{2},'Val'); oper = DataVal{1}; dimN = DataVal{2}; %--------------------------------------------------------------------------------------------------- switch oper case 'min' statordre = 1; case 'max' statordre = (2*dimN+1)^2; case 'median' statordre = ceil(((2*dimN+1)^2)/2); otherwise error('opération invalide') end img = IsaacIMG_img2mat(ObjIMG); nbp = IsaacIMG_get(ObjIMG,'DimZ'); for k = 1:nbp img(:,:,k) = ordfilt2(img(:,:,k),statordre,ones(2*dimN+1,2*dimN+1),'zeros'); end ObjIMG = IsaacIMG_mat2img(ObjIMG,img); %--------------------------------------------------------------------------------------------------- % OUTPUT varargout{1} = ObjIMG;