changeset 457:f6cebe09d9d2

Remove repeated function deriche (m file). There's already C version on the package
author carandraug
date Thu, 28 Apr 2011 14:58:09 +0000
parents 5229605d509a
children 4778ab266ab5
files inst/deriche.m inst/imopen.m
diffstat 2 files changed, 30 insertions(+), 164 deletions(-) [+]
line wrap: on
line diff
deleted file mode 100644
--- a/inst/deriche.m
+++ /dev/null
@@ -1,134 +0,0 @@
-## -*- texinfo -*-
-## @deftypefn {Function File} @var{result} = deriche(@var{img}, @var{alpha}, @var{method})
-## Deriche 2D image gradient using recursive filters. Precessing time is 
-## independent of alpha.
-## taken from:
-## Klette, Zamperoni: Handbuch der Operatoren für die Bildverarbeitung, vieweg 
-## 2.Aufl. 1995 pp 224-229
-## algorithm: Deriche R.: Fast algorithms for low-level vision: IEEE Trans. 
-## PAMI-12 (1990) pp 78-87
-##
-## @table @code
-## @item @var{img}
-## Input image (as matrix of doubles).
-## @item @var{alpha}
-## Filter paramter (scale).
-## @item method
-## If 0 (default) magnitude of gradient, and if 1
-## vector gradient (last index 1 for H, 2 for V)
-## @end table
-##
-## Due to the inherent recursive nature of the algorithms the octave 
-## implementation is rather slow compared to a C implementation although I have
-## vectorized it as far as possible at the expense of memory consuption. As a 
-## side effect the evaluation order had to be modified compared to the Klette / 
-## Zamperoni approach. (A C Implementation can easily process PAL a video stream in 
-## realtime on moderate hardware.)
-## @end deftypefn
-
-# (C)opyright Christian Kotz 2006
-# This code has no warrany whatsoever.
-# Do what you like with this code as long as you
-# leave this copyright in place.
-#
-# author:   Christian Kotz
-# date:     11/21/2006
-# version:  0.1
-#
-## $Log$
-## Revision 1.4  2007/03/23 16:14:36  adb014
-## Update the FSF address
-##
-## Revision 1.3  2007/01/02 21:58:38  hauberg
-## Documentation is now in Texinfo (looks better on the website)
-##
-## Revision 1.2  2006/12/08 06:41:30  cocus
-## interface changed to match cc implementation. (returns magnitude by default)
-##
-## Revision 1.1  2006/12/03 10:53:14  cocus
-## initial m-file implementetaion.
-##
-##
-## 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 2 of the License, or
-## (at your option) 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, see <http://www.gnu.org/licenses/>.
-function result = deriche(img, alpha, method)
-
-if nargin < 2
-  alpha = 1.0
-end
-
-if nargin < 3
-  method = 0
-end
-
-   a   =  -(1-exp(-alpha))^2;
-   b1 =  -2*exp(-alpha);
-   b2 = exp(-2*alpha);
-   a0 = -alpha / (1 - alpha * b1 - b2);
-   a1 = a0 * (alpha-1)*exp(-alpha);
-   a2 = a1 - a0 * b1;
-   a3 = -a0 * b2;
-   
-
-  [n m] = size(img);
-  
-  g_v1 = zeros(n,m);
-  g_v2 = zeros(n,m);
-  g_h1 = zeros(n,m);
-  g_h2 = zeros(n,m);
-  g_hv = zeros(n,m);
-  result = zeros(n,m,2);
-    
-  for k=3:m
-    g_v1(:,k) = img(:, k-1) - b1 * g_v1(:,k-1)- b2 * g_v1(:,k-2);
-  end;
-
-  for k=m-2:-1:1
-    g_v2(:,k) = img(:, k+1) - b1 * g_v2(:,k+1)- b2 * g_v2(:,k+2);
-  end;
-  
-  g_hv = a * (g_v1 - g_v2);
-
-   for k=3:n
-     g_h1(k,:) = a0 * g_hv(k,:) + a1 * g_hv(k-1,:) - b1 *  g_h1(k-1,:) - b2 * g_h1(k-2,:);
-  end;
-  for k=n-2:-1:1
-     g_h1(k,:) = a2 * g_hv(k+1,:) + a3 * g_hv(k+2,:) - b1 *  g_h2(k+1,:) - b2 * g_h2(k+2,:);
-  end;
-
-result(:,:,1) = g_h1 + g_h2;
-  
-  for k=3:n
-    g_v1(k,:) = img(k-1,:) - b1 * g_v1(k-1,:)- b2 * g_v1(k-2,:);
-  end;
-
-  for k=n-2:-1:1
-    g_v2(k,:) = img(k+1,:) - b1 * g_v2(k+1,:)- b2 * g_v2(k+2,:);
-  end;
-  
-  g_hv = a * (g_v1 - g_v2);
-
-   for k=3:m
-     g_h1(:,k) = a0 * g_hv(:,k) + a1 * g_hv(:,k-1) - b1 *  g_h1(:,k-1) - b2 * g_h1(:,k-2);
-  end;
-  for k=m-2:-1:1
-     g_h1(:,k) = a2 * g_hv(:,k+1) + a3 * g_hv(:,k+2) - b1 *  g_h2(:,k+1) - b2 * g_h2(:,k+2);
-  end;
-
-result(:,:,2) = g_h1 + g_h2;
-
-if (method == 0)
-  result = sqrt(result(:,:,1).*result(:,:,1)+result(:,:,2).*result(:,:,2));
-end
-
-
--- a/inst/imopen.m
+++ b/inst/imopen.m
@@ -9,33 +9,33 @@
 ## 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.
-
-## -*- texinfo -*-
-## @deftypefn {Function File} @var{B} = imopen (@var{A}, @var{se})
-## Perform morphological opening on a given image.
-## The image @var{A} must be a grayscale or binary image, and @var{se} must be a
-## structuring element.
-##
-## The opening corresponds to an erosion followed by a dilation of the image, i.e.
-## @example
-## B = imdilate(imerode(A, se), se);
-## @end example
-## @seealso{imdilate, imerode, imclose}
-## @end deftypefn
-
-function retval = imopen(im, se)
-  ## Checkinput
-  if (nargin != 2)
-    print_usage();
-  endif
-  if (!ismatrix(im) || !isreal(im))
-    error("imopen: first input argument must be a real matrix");
-  endif
-  if (!ismatrix(se) || !isreal(se))
-    error("imopen: second input argument must be a real matrix");
-  endif
-  
-  ## Perform filtering
-  retval = imdilate(imerode(im, se), se);
-
-endfunction
+
+## -*- texinfo -*-
+## @deftypefn {Function File} @var{B} = imopen (@var{A}, @var{se})
+## Perform morphological opening on a given image.
+## The image @var{A} must be a grayscale or binary image, and @var{se} must be a
+## structuring element.
+##
+## The opening corresponds to an erosion followed by a dilation of the image, i.e.
+## @example
+## B = imdilate(imerode(A, se), se);
+## @end example
+## @seealso{imdilate, imerode, imclose}
+## @end deftypefn
+
+function retval = imopen(im, se)
+  ## Checkinput
+  if (nargin != 2)
+    print_usage();
+  endif
+  if (!ismatrix(im) || !isreal(im))
+    error("imopen: first input argument must be a real matrix");
+  endif
+  if (!ismatrix(se) || !isreal(se))
+    error("imopen: second input argument must be a real matrix");
+  endif
+  
+  ## Perform filtering
+  retval = imdilate(imerode(im, se), se);
+
+endfunction