Beispiel #1
0
    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);
    }
Beispiel #2
0
    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();
    }
Beispiel #3
0
    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);
    }
Beispiel #4
0
        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;
        }
Beispiel #5
0
        private void addProjecitonFilterBtn_Click(object sender, RoutedEventArgs e)
        {
            Filter1D selectedFilter = (Filter1D)projectionFilter.SelectedItem;

            projectionFilterList.Items.Add(selectedFilter);
        }