Creating a custom convolution filter
To create a custom convolution filter by specifying a kernel, see the following code example:
[C#]
public static void CustomConvolutionFilter(IRaster raster)
{
//The following code sample sets up a horizontal line detection filter and applies it to a raster
//to create a convolution filter using a custom kernel.
IRasterConvolutionFilter newFilter = new RasterConvolutionFilterClass();
newFilter.SetSize(3, 3);
double[] kernel = new double[9]
{
- 1, - 1, - 1, 2, 2, 2, - 1, - 1, - 1
};
newFilter.PutCoefficients(ref kernel);
//Apply the filter to the raster.
IPixelOperation pixelOperation = (IPixelOperation)raster;
pixelOperation.PixelFilter = (IPixelFilter)newFilter;
//Save the result.
ISaveAs saveas = (ISaveAs)raster;
saveas.SaveAs(@"c:\temp\convolution_output.img", null, "IMAGINE Image");
}
[VB.NET]
Public Shared Sub CustomConvolutionFilter(ByVal raster As IRaster)
'The following code sample sets up a horizontal line detection filter and applies it to a raster
'to create a convolution filter using a custom kernel.
'Define the kernal
Dim NewFilter As IRasterConvolutionFilter = New RasterConvolutionFilterClass()
NewFilter.SetSize(3, 3);
Dim kernel() As Double = New Double(9) {-1, -1, -1, 2, 2, 2, -1, -1, -1}
NewFilter.PutCoefficients( kernel)
'Apply the filter to the raster.
Dim pixelOperation As IPixelOperation = CType(raster, IPixelOperation)
pixelOperation.PixelFilter = CType(NewFilter, IPixelFilter)
'Save the result.
Dim saveas As ISaveAs = CType(raster, ISaveAs)
saveas.SaveAs("c:\temp\convolution_output.img", Nothing, "IMAGINE Image")
End Sub
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)ESRI.ArcGIS.Display ESRI.ArcGIS.Geometry ESRI.ArcGIS.Geodatabase ESRI.ArcGIS.DataSourcesRaster
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |
Engine Developer Kit | Engine |