public static Filter1D[] Add1DConvolutionalLayer(this Layer1D[] inputs, int filterCount, int filterSize, ActivationFunctionType activationFunction, InitialisationFunctionType initialisationFunction) { var filters = new Filter1D[filterCount]; for (var i = 0; i < filterCount; i++) { filters[i] = new Filter1D(inputs, filterSize, activationFunction, initialisationFunction); } return(filters); }
public static void AddPooling(this Filter1D filter, int poolingDimension) { var nodes = new List <Node>(); var dimensions = (filter.PreviousLayers[0] as Layer1D).Size; for (var i = 0; i < dimensions - poolingDimension; i += poolingDimension) { var nodesInPool = new List <Node>(); for (var j = i; j < i + poolingDimension; j++) { nodesInPool.Add(filter.Nodes[j]); } nodes.Add(new PooledNode(nodesInPool)); } filter.Nodes = nodes.ToArray(); }
public void CorrectlyPoolToSingle() { // Input: // 0 1 2 // // Filter: // 0,1 1,2 // // Pooling: // max(0,1; 1,2) var input = new Layer1D(3, Array.Empty <Layer>(), ActivationFunctionType.RELU, InitialisationFunctionType.GlorotUniform); var filter = new Filter1D(new[] { input }, 2, ActivationFunctionType.RELU, InitialisationFunctionType.GlorotUniform); filter.AddPooling(2); var node = Assert.Single(filter.Nodes); var pooledNode = Assert.IsType <PooledNode>(node); Assert.Equal(2, pooledNode.UnderlyingNodes.Count); }
public MainWindow() { InitializeComponent(); this.Width = 800; saveInputBtn.Visibility = Visibility.Hidden; projectionAlgorithm.Items.Add(new ProjectionHandlerRaycast()); projectionAlgorithm.Items.Add(new ProjectionHandlerBresenham()); projectionAlgorithm.SelectedIndex = 0; reconstructionAlgorithm.Items.Add("Back projection"); reconstructionAlgorithm.Items.Add("Iterative"); reconstructionAlgorithm.SelectedIndex = 0; projectionFilter.Items.Add(Filter1D.GetGaussianFilter()); projectionFilter.Items.Add(Filter1D.GetHammingFilter1()); projectionFilter.Items.Add(Filter1D.GetHammingFilter2()); projectionFilter.Items.Add(Filter1D.GetHammingFilter3()); projectionFilter.Items.Add(Filter1D.GetLaplaceFilter()); projectionFilter.Items.Add(Filter1D.GetLaplaceSharpeningFilter()); projectionFilter.Items.Add(Filter1D.GetUnsharpMaskingGaussianFilter()); projectionFilter.Items.Add(Filter1D.GetUnsharpMaskingHammingFilter1()); projectionFilter.Items.Add(Filter1D.GetUnsharpMaskingHammingFilter2()); projectionFilter.Items.Add(Filter1D.GetUnsharpMaskingHammingFilter3()); projectionFilter.Items.Add(Filter1D.GetMultiplicativeNoiseFilter()); projectionFilter.Items.Add(Filter1D.GetAdditiveNoiseFilter()); projectionFilter.SelectedIndex = 0; sinogramFilter.Items.Add(ConvolutionFilter2D.GetGauss55()); sinogramFilter.Items.Add(ConvolutionFilter2D.GetLaplace()); sinogramFilter.Items.Add(ConvolutionFilter2D.GetSharpen()); sinogramFilter.Items.Add(ConvolutionFilter2D.GetLaplacianOfGaussian55()); sinogramFilter.Items.Add(ConvolutionFilter2D.GetLaplacianOfGaussian77()); sinogramFilter.Items.Add(CompositeConvolutionFilter2D.getRoberts()); sinogramFilter.Items.Add(CompositeConvolutionFilter2D.getKirsch()); sinogramFilter.Items.Add(new RemoveNegativeValuesFilter()); sinogramFilter.Items.Add(new AbsoluteValueFilter()); sinogramFilter.SelectedIndex = 0; }
private void addProjecitonFilterBtn_Click(object sender, RoutedEventArgs e) { Filter1D selectedFilter = (Filter1D)projectionFilter.SelectedItem; projectionFilterList.Items.Add(selectedFilter); }