IDL script
Erosion is demonstrated in demoErosion.cs
# Demo: shows how to do erosions on Horus images # Definition of my own erosion function # # im is an ImageRep # size is an int # proc myErosion(im, size) { # Use the same signature as the input image sig = im.signature(); # Define the sizes of the structuring element sizes = HxCorba.Sizes(size, size, 1); # The pixel value of the structuring element val = HxCorba.PixValue(HxCorba.PixValueTag.SI, 0); # Now construct the structuring element kernel = OPS.HxMakeFromValue(sig, sizes, val); # And apply the operation, using minimum empty = CTOR.emptyTagList(); prec = HxCorba.ResultPrecision.ARITH_PREC; return im.generalizedConvolution(kernel, "add", "minAssign", prec, empty); # Could also use infimum, produces slightly different results. #return im.generalizedConvolution(kernel, "add", "infAssign", prec, empty); } println("Enter name of image, e.g. c:/images/flamingo.tif"); name = getline(); # Read image from disk a = OPS.HxMakeFromFile(name); # Apply my own erosion b = myErosion(a, 5);
and executed with exec("x:/HxSamples/Scripts/demoErosion.cs");
.
Matlab
Erosion is demonstrated in demoErosion.m
%demoErosion Demo: shows how to do erosions on Horus images echo on clc name = input('Enter name of image, e.g. c:/images/flamingo.tif\n', 's'); % Read image from disk a = OPS.HxMakeFromFile(name); % Display the image hxShow(a); pause % Press any key to continue % Apply my own erosion b = myErosion(a, 5); % And display it hxShow(b);
and executed with demoErosion
.
The function myErosion is defined in myErosion.m
function r = myErosion(im, size) %myErosion Definition of my own erosion function % im is a Horus image (Java stub). % size is an int. global CTOR global OPS % Use the same signature as the input image sig = im.signature; % Define the sizes of the structuring element sizes = HxCorba.Sizes(size, size, 1); % The pixel value of the structuring element val = HxCorba.PixValue; val.scalarInt(0); % Now construct the structuring element kernel = OPS.HxMakeFromValue(sig, sizes, val); % And apply the operation, using minimum empty = CTOR.emptyTagList; % Due to a bug in Matlab, the following statement crashes in a script. %prec = HxCorba.ResultPrecision.ARITH_PREC; prec = HxCorba.ResultPrecision.from_int(1); r = im.generalizedConvolution(kernel, 'add', 'minAssign', prec, empty); % Could also use infimum, produces slightly different results. %r = im.generalizedConvolution(kernel, 'add', 'infAssign', prec, empty);